Model ads demand data for reporting
Company: Netflix
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
You are asked to design the **data model** (and supporting pipelines at a high level) to represent **ads demand** for an ads platform.
“Demand” here refers to what advertisers want to buy/spend, and what inventory they are eligible to serve on.
### Requirements
1. Support reporting for:
- Booked budget, remaining budget, and spend to date
- Delivery (impressions, clicks, conversions)
- Pacing vs time (e.g., under/over-delivering)
- Breakdown by advertiser, campaign, ad group/line item, creative, targeting, geo, device, day
2. Handle campaign lifecycle changes:
- Budget edits, start/end date edits, pause/resume
- Creative swaps and targeting updates
3. Data sources (assume): impression/click logs (high volume), conversion events, campaign configuration service (slow-changing)
4. Output: propose a warehouse schema (tables + keys), and outline ETL/ELT steps and key validations.
### Deliverables
- Core entities and relationships
- Fact and dimension tables (grain matters)
- How you track slowly changing campaign configuration
- Example queries/KPIs the model supports
Quick Answer: This question evaluates competencies in data modeling, ETL/ELT pipeline design, analytics warehousing, handling slowly changing dimensions, and high-volume event processing in the System Design domain.