Snapchat System Design Interview: Price Tracking & Alerts
Question Description
Design a price-tracking and alerting system that monitors product prices across multiple online retailers and notifies users when prices drop below a user-set threshold.
You will be asked to cover end-to-end architecture: how you ingest and normalize product data (URLs or retailer IDs), how you schedule and execute periodic price checks at scale, how you store and cache price history, and how you reliably generate and deliver notifications (email, SMS, in-app). Expect to discuss trade-offs between real-time polling, batch scraping, and using third-party APIs, plus techniques for rate limiting, retry/backoff, and handling CAPTCHAs or changing HTML structures.
A typical interview flow: clarify functional and non-functional requirements, propose a high-level design (components and data flow), dive into one or two subsystems (scheduler/fetcher or notification delivery), and discuss scaling, fault tolerance, and cost-optimization.
Skills you should demonstrate: distributed systems thinking (scalability & reliability), task scheduling and queueing (cron vs work queues), caching strategies and cache invalidation, web scraping and data normalization, message-driven alert pipelines, and operational concerns (monitoring, SLAs, and cost controls). Be ready to sketch data models for tracked_items, user_preferences, price_history, and alert_logs, and to explain how you ensure timely, deduplicated, and correctly ordered alerts.
Common Follow-up Questions
- •How would you design the price-fetching pipeline to handle CAPTCHAs, JavaScript-rendered pages, and retailer rate limits while minimizing cost?
- •If you need sub-minute detection for a subset of hot items, how do you modify your scheduler and caching strategy to support near-real-time checks?
- •How do you ensure exactly-once (or at-least-once) delivery semantics for alerts across email, SMS, and in-app channels and handle retry/backoff logic?
- •What metrics and monitoring would you build (SLOs/SLIs) to detect missed alerts, stale price data, or failing scrapers, and how would you automate remediation?
Related Questions
Explore More Questions
Practice This Question with AI
Get real-time hints, detailed requirements, and insightful analysis of the question.