Design Product Catalog

Medium40 min
1 / 20
understanding5 min read

Problem Statement & Context

Why a product catalog is the source of truth

Problem Statement & Context

A product catalog is the authoritative system of record for everything customers see about items: titles, descriptions, variants, attributes, pricing metadata, media, and availability flags. It is the data backbone that powers search, recommendations, merchandising, and checkout.

At scale the catalog is not a single table — it is a distributed system that ingests data from sellers, suppliers, and internal teams, validates it, normalizes attributes, and serves read-optimized views to millions of shoppers at low latency.

The journeys

  • Shopper: browse a category → filter by attributes (brand, size, color) → open PDP with variants → consistent pricing + availability.
  • Seller: create a listing with attributes → upload media → publish/bulk-edit → track validation errors + approvals.
  • Merchandiser: organize taxonomy → define attribute dictionaries + rules → curate collections → monitor catalog quality.

The load-bearing idea: normalize-on-write, denormalize-for-read, normalize attributes as the quality gate

The catalog's central tension is write flexibility versus read performance: sellers submit messy, free-form data (one types "navy", another "Navy Blue", a third "#000080"), but shoppers need fast, consistent faceted browsing. The resolution is two models bridged by an event stream — a normalized relational write model (products, variants, attributes; integrity constraints; strongly-consistent publish) projected into a denormalized read/search model (eventually consistent, flat documents, fast facets). And the gate between them is attribute normalization: free-form values are mapped to canonical ones at ingest, because if "navy" and "Navy Blue" reach the facet index as distinct values, the color filter fragments and search breaks. Normalize-on-write, denormalize-for-read, with attribute normalization as the data-quality gate — that is the whole design.

Scale anchors

50M monthly shoppers; 20M SKUs × ~5 variants; 200M daily reads; 2M seller updates/day. Read-heavy (~10,000:1 read/write), so the design optimizes the read path hard while keeping writes correct.

Key Highlights

  • A product catalog is the AUTHORITATIVE system of record for everything customers see about items (titles, descriptions, variants, attributes, media, availability) — the data backbone powering search, recommendations, merchandising, checkout; not a single table but a distributed system ingesting from sellers/suppliers/internal teams
  • Journeys: shopper (browse category -> filter by attributes -> PDP with variants -> consistent pricing/availability), seller (create listing -> upload media -> publish/bulk-edit -> track validation errors), merchandiser (organize taxonomy -> define attribute dictionaries + rules -> curate collections -> monitor quality)
  • The central tension is WRITE FLEXIBILITY vs READ PERFORMANCE: sellers submit messy free-form data ('navy' / 'Navy Blue' / '#000080') but shoppers need fast CONSISTENT faceted browsing — resolved by two models bridged by an event stream (a normalized relational write model + a denormalized read/search model)
  • The gate between them is ATTRIBUTE NORMALIZATION: free-form values mapped to canonical ones at ingest, because if 'navy' + 'Navy Blue' reach the facet index as distinct values the color filter fragments + search breaks — normalize-on-write, denormalize-for-read, normalization-as-the-quality-gate is the whole design; anchors 50M shoppers, 20M SKUs × 5 variants, 200M reads/day, 2M writes/day (read-heavy ~100:1)
Highlight Source of Truth
Emphasize that the catalog is the source of truth for downstream systems.
Variants Drive Complexity
Variant explosion is the core modeling challenge in catalog design.
Avoid Flat Tables
A single flat table cannot represent variants and attributes correctly.

Section Rescue Kit

Buzzwords to use:

Variant MatrixAttribute Normalization

Safe statements:

  • "The catalog is the authoritative source for product data."
  • "We separate product and variant entities to manage complexity."
Design Product Catalog - System Design | WinJob | WinJob