Design rental watchlist and notification system
Company: Airbnb
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a rental-listing watchlist and notification system. Users can express interest on a listing for a specific date range (check-in to check-out). If a reservation cancellation makes the listing available for a watcher's requested dates (per your matching policy), notify the watcher. Hosts can view how many users are watching their listing. Specify: APIs and data model (users, listings, reservations, watchlist entries with date ranges, notification preferences); date-range representation and matching semantics (inclusive/exclusive bounds, time zones, partial vs full overlap policy); ingestion of reservation updates/cancellations and the algorithm to find affected watchers at scale (e.g., per-listing calendars, interval indexes, pub/sub); notification pipeline (deduplication, rate limiting, retries, idempotency); storage, sharding, and caching strategies; consistency model between reservation store and watchlist; race handling between new bookings and notifications; privacy/abuse controls and analytics for host watch counts.
Quick Answer: This question evaluates system architecture and scalability competencies, including data modeling for date-range watchlists, event-driven notification pipelines, time-zone and DST handling, consistency and concurrency semantics, idempotency, sharding/caching strategies, and privacy/analytics considerations.