LinkedIn system design interviews often feature "Design Notification System" as a key question, focusing on scalable, multi-channel delivery (email, SMS, push) with real-time guarantees. No single official "full problem statement" exists publicly from LinkedIn, but it's consistently framed around handling massive scale for a professional network, incorporating backend services, web APIs, messaging queues, ML-driven prioritization, and rate limiting.[1][2]
Design a highly available notification system for LinkedIn-scale (1B+ users) that reliably delivers personalized notifications across channels like push, email, SMS, and in-app. Key goals include low-latency delivery (<5s for critical types like OTPs), fault tolerance (guaranteed delivery despite outages), user preferences (opt-in/out by type/channel), and scalability to millions of notifications per minute during peaks.[2][6][1]
No standardized I/O formats from LinkedIn, but common API specs from interview discussions:
Send Notification (POST /v1/notifications)
Input:
{ "idempotency_key": "uuid-123", "user_id": "user123", "type": "JOB_RECOMMENDATION", // e.g., PROMO, OTP, TRANSACTIONAL "priority": "HIGH", "channels": ["PUSH", "EMAIL"], "template_id": 456, "params": {"job_title": "Engineer", "company": "LinkedIn"} }
Output: {"notification_id": "notif-uuid", "status": "ACCEPTED"}.[5]
Status Check (GET /v1/notifications/{id})
Output:
{ "id": "notif-uuid", "status": "DELIVERED", "channel_status": {"PUSH": "DELIVERED", "EMAIL": "SENT"}, "timestamp": "2026-02-02T04:23:00Z" } .
Typical architecture: API Gateway → Rate Limiter → Queue (Kafka/SQS partitioned by user_id) → Workers (prioritize via ML) → Channel Services (with retries) → Analytics.[6][3][2]