Common Problems
Notification System
Understanding the Problem
Functional Requirements
- Upstream services should be able to send a notification to a user via push, email, or SMS, either immediately or scheduled for a future time.
- Upstream services should be able to send campaigns, the same message delivered to a whole segment of users, immediately or scheduled.
- Users should be able to set notification preferences (channel opt-outs and quiet hours).
- Template management and rich content authoring.
- Delivery analytics dashboards (open rates, click-through tracking).
- In-app notification feeds and badge counts.
- Frequency capping across notification types.
Non-Functional Requirements
The Set Up
Defining the Core Entities
API or System Interface
High-Level Design
1) Upstream services should be able to send a notification to a user, immediately or scheduled
2) Upstream services should be able to send campaigns to segments of users
3) Users should be able to set notification preferences
Potential Deep Dives
1) How do we guarantee an accepted notification is never dropped?
2) How does the system absorb a surge of 5,000 notifications per second?
3) How do we deliver critical notifications within 5 seconds, even during a surge?
4) How do we prevent duplicate notifications on top of at-least-once delivery?
Final Design
Some additional deep dives you might consider
What is Expected at Each Level?
Mid-level
Senior
Staff+
Purchase Premium to Keep Reading
Unlock this article and so much more with Hello Interview Premium
Currently up to 20% off
Hello Interview Premium
On This Page
Understanding the Problem
Functional Requirements
Non-Functional Requirements
The Set Up
Defining the Core Entities
API or System Interface
High-Level Design
1) Upstream services should be able to send a notification to a user, immediately or scheduled
2) Upstream services should be able to send campaigns to segments of users
3) Users should be able to set notification preferences
Potential Deep Dives
1) How do we guarantee an accepted notification is never dropped?
2) How does the system absorb a surge of 5,000 notifications per second?
3) How do we deliver critical notifications within 5 seconds, even during a surge?
4) How do we prevent duplicate notifications on top of at-least-once delivery?
Final Design
Some additional deep dives you might consider
What is Expected at Each Level?
Mid-level
Senior
Staff+