Design a notification system for Airbnb that can handle both event-triggered and batch notifications across multiple channels (push, email, SMS, in-app).
Functional Requirements:
Event-Triggered Notifications:
Booking confirmations
Message from host/guest
Price drop alerts
Review requests
Batch Notifications:
Weekly deal digests
Marketing campaigns
Account updates to all users
Non-Functional Requirements:
Handle 10M+ notifications per day
Delivery within 30 seconds for event-triggered
Support user preferences (opt-out, channel preferences)
Deduplication and rate limiting
High availability (99.9% uptime)
Discussion Points:
How would you design the notification routing logic?
How do you handle notification templating for different locales?
What's your strategy for retry and dead-letter handling?
How would you implement A/B testing for notification content?