Design a Marketplace Catalog System
Design the catalog for a large marketplace: hundreds of millions of items across thousands of categories, supplied by many sellers and partners, browsed and searched by shoppers in many locales.
The catalog must model categories, per-category attributes and product variants (one shirt, many sizes and colours); ingest items through APIs and bulk feeds; keep versions; detect duplicates of the same product from different sellers; and moderate what is published. Search and browse are served from an index, not from the source of truth.
Cover: the data model; read and write APIs; ingestion, validation, versioning, deduplication and moderation; how the search and browse index is built and kept up to date, including partial updates; localization; caching; consistency between the source of truth and the index; schema evolution; multi-tenant isolation; and backfill and reprocessing.
Hints
Hint 1
Separate the canonical product (what the thing is) from the offer (who sells it, at what price, with what stock). Deduplication merges products; offers stay per seller. Variants hang off a parent product along declared axes.
Hint 2
Attributes are data, not columns: each category owns a versioned schema of typed attributes, items are validated against it on write, and facets in search come straight from it.
Hint 3
The index is a derived view. Feed it from an outbox or change stream with per-document versions so stale updates are rejected, and make a full rebuild a routine operation — new index, backfill, alias swap.
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.