Design a video recommendation system
Company: Reddit
Role: Machine Learning Engineer
Category: ML System Design
Difficulty: medium
Interview Round: Onsite
## Scenario
You are designing an ML-driven **video recommendation** product (home feed + “up next”) for a consumer app.
The interviewer focuses heavily on **infrastructure** and **logging/observability**.
## Requirements
- Serve personalized recommendations with low latency.
- Handle both:
- **Home feed** (rank a set of candidates)
- **Next video** (contextual/session-based)
- Support rapid iteration (new models/features) and safe experimentation.
## What to cover
1. **High-level architecture**: offline training pipeline, online serving, candidate generation + ranking.
2. **Data & logging design**:
- What events to log (impressions, clicks, watch time, skips, likes, shares, follows, dwell, scroll depth, etc.)
- How to uniquely identify an “impression” and join it to outcomes
- How to avoid common logging pitfalls (position bias, missing-not-at-random, duplicate events)
3. **Feature pipelines**:
- Batch vs streaming features
- Feature store (online/offline consistency)
4. **Model training & evaluation**:
- Labels and objectives (CTR, watch time, completion, satisfaction)
- Offline metrics and online A/B testing
5. **Serving infra & reliability**:
- Latency budget, caching, fallback behavior, graceful degradation
- Monitoring, alerting, model/data drift detection
6. **Privacy & compliance** considerations in logging and retention.
Quick Answer: This question evaluates ML system design competencies for a Machine Learning Engineer, covering infrastructure architecture, logging and observability, feature pipelines, model training/evaluation, serving reliability, and privacy-aware data practices within the ML System Design domain.