Problem
Design a notification system for a company at Airbnb-like scale that can send notifications to different user types (e.g., customers/guests, hosts, employees) through multiple delivery channels:
-
Email
-
SMS
-
Push notifications
-
Social/Tweet-like channel
(optional integration)
The system must support two delivery modes:
-
Single / Event-triggered notifications
: triggered by a real-time event (e.g., booking confirmed → email to guest; check-in day → SMS with lock code).
-
Bulk / Batch notifications
: triggered by a scheduled or ad-hoc campaign to a target group (e.g., promotional content to potential hosts).
Expectations
Describe an end-to-end design that covers:
-
Core components and data flow for both event-triggered and batch sends
-
How messages are authored (templates), personalized, and routed to channels
-
User preferences (opt-in/out), frequency limits, and compliance (unsubscribe)
-
Reliability: retries, deduplication, ordering (if needed), idempotency
-
Scalability: high throughput, fan-out, backpressure, and rate limiting
-
Observability: logging, metrics, tracing, and auditing
You may assume existing product services emit events (booking, check-in, campaign creation, etc.) and your system consumes them to deliver notifications.