Pinterest — Notes
Functional
- Save (pin) images, organize into boards.
- Discover via home feed, search, related pins, Lens (visual search).
- Follow users / boards / topics.
- Shopping (buyable pins).
Non-functional
- 500M+ MAU.
- p99 feed open < 300 ms.
- Search & related must be visually relevant.
Capacity
- 200B+ pins total.
- 5M+ pins/day saved.
- Image storage many PB; thumbnails generated × 6 sizes.
Schema
pins(id, owner_id, image_url, title, desc, board_id, source_url)
boards(id, owner, name, secret)
saves(user_id, pin_id, board_id, ts)
embeddings(pin_id, vec, model_version)
Trade-offs
- Image-centric drives recommendation away from text and toward visual + behavior signals.
- PinSage trains slowly but unlocks distinctive UX.
- Lens UX requires very low ANN latency; pre-compute everything, use HNSW with PQ compression.
Refs
- Pinterest engineering blog (PinSage paper, "Visual Discovery"),
"Personalized Visual Recommendation" (KDD '18),
ByteByteGo "Design Pinterest", Alex Xu Vol 2.