Design and Scale a Yelp-like Reviews Platform
Design a local-business reviews platform in the shape of Yelp: people search for businesses near a location, open a business page, read and write reviews, rate, upload photos and check in.
Define the core data model — users, businesses with coordinates and categories, reviews, ratings, photos, check-ins, and the indexes. Then explain how you scale reads (replication, caches, CDN, search indexes) and writes (sharding, queues, consistency, backfills), how search and geospatial queries work, how caches are invalidated, and what you do for performance.
Hints
Hint 1
The defining query is 'category or keyword near a point'. Pick a spatial index you can explain — geohash prefixes, S2 cells or a quadtree — and describe covering the search radius with cells, fetching candidates, then filtering by true distance and ranking.
Hint 2
Reads outnumber writes by orders of magnitude, so precompute: rating aggregates per business, denormalised search documents, cached business pages, photos on a CDN.
Hint 3
Shard reviews by business so a business page is one shard, and push everything else a review triggers — aggregate update, search reindex, spam scoring, the author's profile — through a queue with idempotent consumers.
Asked at
Sign in to talk to the interviewer — ask what's in scope, what scale to design for, or for a nudge when you're stuck. Conversations save to your account.