Amazon Interview- Design Meeting Scheduler
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
A meeting scheduler interview question is usually testing whether you can model availability, conflicts, time zones, and scaling tradeoffs without getting lost in UI details. The strongest answer starts by narrowing the scope, then shows a clean design for calendar storage, free-slot search, invitation workflow, and conflict handling.
Clarify the Scope First
Before drawing boxes, define what the system must do:
- create meetings for one organizer and many invitees
- store calendars and attendee responses
- detect conflicts
- suggest candidate time slots
- handle time zones correctly
Then explicitly defer things like video conferencing, enterprise permissions, or room booking unless the interviewer asks for them.
Core Data Model
A simple model usually includes:
- '
User' - '
CalendarEvent' - '
Meeting' - '
Invitation'
A practical schema might look like:
Store times in UTC and convert only at presentation time. That avoids daylight-saving and cross-region comparison bugs.
High-Level Architecture
A reasonable service split is:
- user service for identity and profile
- calendar service for events and availability
- scheduler service for finding candidate slots
- notification service for invite emails or pushes
For the interview, you do not need to over-distribute the system. A modular monolith with clear boundaries is often easier to explain than five microservices with vague responsibilities.
Scheduling Flow
A common happy path is:
- organizer submits participant list, duration, and time window
- scheduler queries busy intervals for each attendee
- availability engine computes candidate slots
- organizer selects one slot
- meeting is written and invitations are sent
The main algorithmic work is the intersection of free time across attendees.
Example: Finding Shared Free Slots
This Python example shows the basic idea for interval intersection. Each participant provides busy intervals in UTC, and the function returns gaps large enough for the requested duration.
In production, you would index events by user and time range so these scans stay efficient.
Key Design Decisions
A strong interview answer usually mentions:
- use UTC for storage
- store attendee response state separately from meeting metadata
- query only within a bounded scheduling window
- precompute or cache busy blocks for hot calendars
- make invitation sending asynchronous
You should also discuss whether double-booking is allowed. Some calendars permit tentative overlaps, while others enforce strict exclusivity.
Scaling Considerations
The expensive operation is availability search across many users. The usual optimizations are:
- time-range indexes on calendar events
- caching free/busy summaries
- asynchronous notification fan-out
- partitioning data by user or organization
Most scheduler traffic is read-heavy, so caching and indexed interval queries matter more than exotic write scaling.
Common Pitfalls
- Storing local times instead of UTC.
- Ignoring daylight-saving transitions when comparing availability.
- Treating scheduling as a simple CRUD problem instead of an interval-search problem.
- Making notifications part of the synchronous write path.
- Overcomplicating the design before clarifying basic product requirements.
Summary
- Start by narrowing the feature scope and naming the key requirements.
- Model meetings, user calendars, and invitation responses separately.
- Store timestamps in UTC and convert only for display.
- The core algorithm is finding common free intervals across attendees.
- In interviews, clarity about tradeoffs usually matters more than maximal system complexity.

