Loading system design...
Design a vacation rental marketplace like Airbnb where hosts list properties and guests search, book, and review stays. The system combines geospatial search with date-range availability, interactive map-based discovery, a booking engine that prevents double-booking, escrow-based payments, dynamic pricing, and trust/safety mechanisms for a two-sided marketplace.
| Metric | Value |
|---|---|
| Registered users | 150 million (guests + hosts) |
| Daily active users (DAU) | 10 million |
| Active listings | 7 million |
| Bookings per day | 1.5 million |
| Searches per day | 500 million |
| Calendar rows (365 days × 7M listings) | 2.5 billion |
| Photos stored | 1 billion+ |
| Countries | 220+ |
| Average booking value | $200/night |
| Messages per day | 50 million |
| Reviews | 500 million+ |
Listing search: guests search for accommodations by location (city, neighbourhood, map area), check-in/check-out dates, number of guests; filter by price range, property type, amenities, rating, instant book, and superhost status
Listing detail page: display property info — photos, description, amenities, house rules, host profile, calendar availability, pricing (nightly rate + cleaning fee + service fee), reviews/ratings, and location on map
Booking: guests select dates → system checks real-time availability → guest submits booking request (instant book or host-approval); on confirmation, dates are blocked on calendar and payment is charged
Availability calendar: hosts manage a per-listing calendar; mark dates as available/blocked; set nightly prices per date (dynamic pricing); minimum/maximum stay constraints; advance booking window
No double-booking: guarantee that the same listing for the same dates is never booked by two guests simultaneously — even under concurrent requests
Host listing management: hosts create/edit listings with title, description, photos, amenities checklist, house rules, cancellation policy, pricing, and location; publish/unpublish listings
Reviews and ratings: after stay, guests review the listing (1–5 stars on cleanliness, accuracy, communication, etc.) and hosts review guests; both reviews revealed simultaneously to prevent retaliation bias
Messaging: real-time messaging between guest and host for pre-booking questions, booking coordination, and post-stay communication
Payments: collect payment from guest at booking time; hold in escrow; release to host 24 hours after check-in; support multiple currencies, split payouts, and host-configurable cancellation/refund policies
Map-based search: interactive map where guests pan/zoom and see listing pins with prices; map search updates results as the viewport changes; cluster pins when zoomed out
Non-functional requirements define the system qualities critical to your users. Frame them as 'The system should be able to...' statements. These will guide your deep dives later.
Think about CAP theorem trade-offs, scalability limits, latency targets, durability guarantees, security requirements, fault tolerance, and compliance needs.
Frame NFRs for this specific system. 'Low latency search under 100ms' is far more valuable than just 'low latency'.
Add concrete numbers: 'P99 response time < 500ms', '99.9% availability', '10M DAU'. This drives architectural decisions.
Choose the 3-5 most critical NFRs. Every system should be 'scalable', but what makes THIS system's scaling uniquely challenging?