Design a system that continuously scrapes price and availability data for millions of products from e-commerce sites (e.g., Amazon) and notifies users in real time when a product meets their custom alert criteria (price drop, back-in-stock, etc.). The service must let users create/edit alerts, choose notification channels (email, SMS, push, webhook), and set frequency caps. You should decouple scraping, processing, and alerting so each can scale independently, respect site rate limits, and stay resilient to partial failures. Sketch the high-level architecture, core APIs, data models, and the flow from scrape to notification; justify your technology choices and explain how you would handle duplicate events, duplicate notifications, and massive flash-sale traffic spikes.