Case studies·Tools

Levels.fyi

Millions of users, Google Sheets as the database

Levels.fyi ran salary data for millions of monthly visitors with Google Forms, Google Sheets, AWS Lambda, and JSON files in S3 — no Postgres on day one. They moved to a real database only after product-market fit, not before.

2017–2019

No backend server, just Forms and Sheets

Early launch · salary submissions via Google Forms

The founders launched Levels.fyi without a traditional database or API server. Submissions came through Google Forms; data lived in Google Sheets; Lambda plus API Gateway handled writes; reads were baked into JSON on S3 and served through a CDN.

Their engineering blog is explicit: this let them focus on product-market fit instead of provisioning RDS instances they did not yet need.

Lesson

Premature optimization is still the root of all evil — even when your site is about six-figure compensation packages.

2019–2021

Millions of users on spreadsheet glue

~1–2M unique visitors/month (2023 blog) · 100k+ salaries in one JSON at peak

The architecture scaled to millions of users and worked for roughly 24 months, according to their post. Every salary record could ship to the browser in a single JSON file; charts and stats ran client-side.

Pain arrived as files grew to multiple megabytes, Lambda timed out on big transforms, and they hit Google Sheets API rate limits — plus the 10-million-cell cap, which they temporarily worked around by sharding into multiple sheets.

Lesson

Spreadsheet backends buy time, not immortality. Know what breaks first (file size, API limits, scrapeability) and plan the exit before users feel it.

2022–today

Postgres arrives; Sheets stays in the loop

Single Node instance · ~60K requests/hour on a hot path (2023 blog)

They migrated reads and writes to Postgres and real APIs while duplicating writes to Sheets during transition — no big-bang rewrite. A January 2024 update notes Sheets still used throughout operations alongside Postgres.

Their philosophy did not flip to "scale everything." One of their most trafficked services still ran on a single Node.js instance serving tens of thousands of requests per hour when they published the story.

Lesson

Graduate to Postgres when spreadsheets hurt, not when Hacker News says you should. Keep the simple tools for ops if they still earn their keep.

Sources

Facts drawn from public engineering posts and interviews. Numbers are approximate where sources disagree — we're stack advisors, not historians.

Get the right stack for YOUR scale — not theirs

Levels.fyi's stack made sense for Levels.fyi. Yours won't — and copying theirs is how you end up with a $4k/month bill and three unused Kubernetes clusters.

Plan my stack — free