Design a Product or Video Recommendation System
Company: Google
Role: Machine Learning Engineer
Category: ML System Design
Difficulty: medium
Interview Round: Technical Screen
Design a recommendation system for a large consumer platform. The platform may recommend either products in an e-commerce feed or videos in a media feed.
Your design should cover:
1. The main user-facing recommendation surfaces.
2. Online and offline data sources.
3. Candidate generation.
4. Ranking and re-ranking.
5. Feedback signals such as clicks, views, purchases, watch time, likes, skips, hides, and negative feedback.
6. Model training and evaluation.
7. Cold-start handling for new users and new items.
8. Online serving architecture and latency constraints.
9. Experimentation, monitoring, and guardrails.
Overview: This question evaluates competency in designing large-scale recommendation systems, encompassing machine learning modeling, candidate generation and ranking, data engineering, online serving, feedback-driven learning, evaluation, and experimentation.
Community answers
Answer by selenewang941015
Below is an interview-ready system design answer.
Scope and product surfaces
I would first clarify the primary business objective, because it differs by platform:
E-commerce: long-term customer value, purchases, GMV or margin, repeat purchase, seller health, and user satisfaction.
Media/video: satisfied watch time, completion, session depth, retention, and negative-feedback avoidance.
The system can serve several recommendation surfaces:
Home feed / personalized feed
“Recommended for you”
Similar items or “Because you watched/bought…”
Up Next / autoplay
Product detail page cross-sell and substitute recommendations
Cart and checkout recommendations
Search-result re-ranking
Push/email recommendations
Creator, merchant, category, or collection recommendations
Each surface has a different user intent and latency budget. For example, an “Up Next” recommendation can lean heavily on the current video, while a Home feed needs broader personalization and diversity.
High-level architecture
I would use a multi-stage funnel:
[
\text{candidate generation}
\rightarrow
\text{filtering}
\rightarrow
\text{pre-ranking}
\rightarrow
\text{final ranking}
\rightarrow
\text{re-ranking / policy constraints}
]
The reason for multiple stages is scale. The platform may have billions of products or videos, but the final ranker can only score hundreds or thousands of candidates within a tight latency budget.
A typical request path is:
[
\text{Request}
\rightarrow
\text{online feature service}
\rightarrow