Restaurant reservation apps (OpenTable, Resy, Tock) are surprisingly rich system design topics. Inventory management at sub-hour granularity, time-zone awareness, no-show economics, dynamic availability — the interview tests whether you understand these tradeoffs.
Functional requirements
- Search restaurants by name, cuisine, location
- See availability for date and party size
- Book a reservation
- Modify or cancel
- Notifications (confirmation, reminder)
- Loyalty points / dining rewards
Architecture
Three modules: search, availability, booking.
Restaurant inventory
Each restaurant has:
- Tables of various sizes
- Service hours by day of week
- Time slots (typically 15–30 min granularity)
- Holds for VIPs / walk-ins / wait list
Availability calculation: for date + party size, find tables that fit + are unbooked for the requested time + buffer for turnover.
Search
Geographic + filter:
- By cuisine, neighborhood, price tier
- Sort by rating, distance, availability
- Hidden ranking by partnership status, booking conversion
Search backend: ElasticSearch or equivalent.
Booking flow
- User selects restaurant, date, time, party size
- Client requests availability
- Server holds the slot for ~10 minutes while user confirms
- User confirms; server commits booking
- Confirmation email + push notification sent
Holds and concurrency
Two users want the same table at the same time. Solutions:
- Optimistic: first to commit wins; second sees “no longer available”
- Pessimistic: temporary hold while user is in checkout flow
Most apps use optimistic with short cache TTL on availability.
Cancellation policies
Different restaurants have different rules:
- Free cancellation up to N hours
- Cancellation fee within window
- Credit card hold for high-demand bookings
- No-show fee charged automatically
Surface clearly at booking time.
Time zones
The reservation is in the restaurant’s time zone. User booking from another time zone (travel) sees:
- Local time of the restaurant primarily
- Optional “your time” reference
Don’t book “8pm” without time zone — the restaurant team will be confused.
Notifications
- Confirmation immediately on booking
- Reminder 24h before
- Reminder 2h before
- Day-of update if anything changes (closure, time shift)
Loyalty programs
Dining points awarded per booking. Surface in the app:
- Points balance
- Rewards redemption
- Status tier (Gold, Platinum)
Walking-in support
Some apps support walk-in queues (Yelp, Resy). User adds to a queue; gets notified when their turn approaches.
Frequently Asked Questions
How does OpenTable handle restaurants without internet at the host stand?
Each restaurant has a host station with local software. Sync to cloud asynchronously. Reservations can be created at either side; merge on sync.
What about same-day bookings?
Some restaurants accept; some only same-week. Configurable per restaurant.
How is no-show fee enforced?
Card-on-file with a hold; charged on no-show. Disputes handled by the booking platform.