← Airbnb Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Airbnb system design round for a software engineer role. The question was a deep dive into building a watchlist and notification system for rental listings, and it went way further than I expected in terms of breadth.

Questions Asked (1)

Q1

Design a rental listing watchlist and notification system where users can watch a listing for a specific date range, and get notified if a cancellation opens up availability matching their requested dates. Hosts should also be able to see how many users are watching their listing.

System DesignData ModelingAPI & Integrations
Author's notes

This question has so many layers it's kind of ridiculous.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then design a data model that captures watch requests with date ranges and listing availability. Propose a scalable architecture for matching cancellations to watches and delivering notifications, and discuss how hosts can query watch counts efficiently.

Pro tip: Emphasize idempotency and deduplication in notifications to avoid spamming users when multiple cancellations occur, and discuss how to handle time zones and date range overlaps correctly.

1. Clarify Requirements

Ask questions to understand scale, notification channels (email, push, SMS), latency expectations, and whether watches are per listing or per host. Clarify if users can watch multiple date ranges and if hosts need real-time counts.

2. Design Data Model

Define entities: User, Listing, Watch (user_id, listing_id, start_date, end_date, status), and Availability (listing_id, date, status). Consider using a time-series or interval-based storage for availability and watches.

3. Architecture for Matching and Notification

Design a pipeline: when a cancellation occurs, publish an event to a message queue. A matching service consumes events, queries watches that overlap the freed dates, and triggers notifications via a notification service. Ensure scalability with sharding by listing_id.

4. Host Watch Count API

Provide an API endpoint for hosts to get watch counts per listing, possibly with caching or a materialized view updated asynchronously to avoid impacting write performance.

5. Discuss Trade-offs and Optimizations

Address consistency vs. latency, storage costs for watches, and how to handle expired watches. Mention indexing strategies (e.g., composite index on listing_id and date range) and potential use of geospatial or interval trees.

Key Points to Mention

  • Date range overlap logic and efficient querying (e.g., using interval trees or database range types)
  • Event-driven architecture with message queues for decoupling cancellation events from notification processing
  • Idempotency and deduplication to prevent multiple notifications for the same watch
  • Scalability considerations: sharding by listing_id, read replicas for host queries, and caching watch counts
  • Handling time zones and date boundaries consistently across users and listings
  • Data retention and cleanup policies for expired watches and old availability data

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