← Airbnb Interview Insights

Airbnb·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

System design round at Airbnb for a software engineer role. The question was a full-blown notification system design covering pretty much every dimension you can think of, so it felt less like one question and more like a gauntlet.

Questions Asked (1)

Q1

Design a scalable notification system that supports email, SMS, and push channels for millions of users with low latency. Walk through requirements, architecture, data model, API design, message prioritization, deduplication, retry logic, failure handling, scaling, monitoring, and cost.

System DesignTechnical Trade-offsData Modeling
Author's notes

This was a lot.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale (e.g., millions of users, low latency, multi-channel). Then propose a high-level architecture with decoupled components (API, queues, workers, channel providers) and dive into data model, prioritization, deduplication, retries, failure handling, scaling, monitoring, and cost. Emphasize trade-offs and justify design choices.

Pro tip: Demonstrate awareness of real-world constraints: e.g., rate limits from providers, user preferences, and compliance (GDPR, CAN-SPAM). Also, mention idempotency and exactly-once semantics to avoid duplicate notifications.

1. Clarify Requirements and Scale

Ask questions to understand functional and non-functional requirements: channels, volume, latency, delivery guarantees, user preferences, and compliance. Estimate scale (e.g., millions of users, billions of notifications/day).

2. High-Level Architecture

Propose a decoupled, event-driven architecture: API gateway for ingestion, message queues for buffering, workers for processing, and channel-specific adapters for sending. Include a database for user preferences and notification logs.

3. Data Model and API Design

Design schemas for user preferences, notification templates, and delivery logs. Define RESTful APIs for sending notifications and managing preferences, with idempotency keys for deduplication.

4. Message Processing: Prioritization, Deduplication, Retries

Implement priority queues (e.g., high, medium, low) for timely delivery. Use idempotency keys and a deduplication store (e.g., Redis) to prevent duplicates. Design retry logic with exponential backoff and dead-letter queues for failures.

5. Scaling, Monitoring, and Cost

Scale horizontally by adding workers and partitioning queues. Monitor with metrics (latency, throughput, error rates) and alerts. Optimize cost by batching, using spot instances, and choosing cost-effective providers.

Key Points to Mention

  • Decoupled architecture with message queues (e.g., Kafka, SQS) for scalability and fault tolerance.
  • Idempotency and deduplication using unique keys and a fast store like Redis.
  • Priority queues to handle urgent notifications (e.g., OTPs) with low latency.
  • Retry mechanisms with exponential backoff and dead-letter queues for poison messages.
  • Monitoring and alerting on key metrics (delivery rate, latency, queue depth).
  • Cost optimization via batching, provider selection, and auto-scaling.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.