Scheduling is mostly about free/busy: the system merges attendees' calendars (including external ones) into a cached view of busy intervals and finds common free slots. Booking claims the room with a conditional insert so two meetings can't take the same room and time, then sends invites. A scheduler fires reminders before each meeting.
Functional requirements
- Create meetings with attendees, time, duration and optional room
- Suggest times when everyone is free
- Book rooms without double-booking
- Send invites; attendees accept or decline
- Recurring meetings and reminders
- Sync with external calendars
Non-functional requirements
- No overlapping bookings for a room
- Free/busy answers in well under a second
- Time zones handled correctly everywhere
Extensions
- Booking links for external people (Calendly-style).
- Automatic video-call links.
- Smart suggestions that respect working hours and focus time.