Design a News Aggregation Service
Company: Rippling
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
# Design a News Aggregation Service
Design a service that collects articles from many publishers, groups reports about the same story, and serves users a fresh ranked feed. Users can open an article, filter by topic, and avoid seeing obvious duplicates.
State reasonable assumptions for traffic, source count, freshness, personalization, and content retention. Treat publisher content as externally owned data that may arrive late, change, or disappear.
### Clarifying Questions to Ask
- Are sources pulled, pushed, or both, and what end-to-end freshness target is required?
- Is the feed global, topic-based, personalized, or a blend?
- Does “duplicate” mean the same URL, syndicated copies, or different articles about one event?
- Must edits and deletions from a publisher propagate, and how quickly?
### What a Strong Answer Covers
- Source onboarding, crawling or feed polling, quotas, parsing, canonicalization, and durable ingestion.
- Exact duplicate removal, story clustering, enrichment, ranking, feed generation, and pagination.
- Storage choices, indexes, cache keys, event-driven propagation, and freshness semantics.
- Abuse controls, publisher attribution, deletion handling, backpressure, replay, observability, and regional scaling.
### Follow-up Questions
1. How would you prevent one breaking story with thousands of near-identical articles from dominating the feed?
2. How would you update a personalized feed within seconds when an important new article arrives?
3. What should happen if a publisher asks to remove an article that is already cached and indexed?
Quick Answer: Design a news aggregation service that ingests publisher feeds, versions articles, removes duplicates, clusters related coverage, and serves fresh ranked results. The solution addresses crawling limits, story diversity, personalization, cache consistency, deletion propagation, replay, observability, and regional scale.