AI Appointment Scheduler
Lets people book by just saying what they need, and keeps the calendar honest.

Overview
A booking assistant that lets a client book by describing what they want in normal language. It checks what's actually free, offers times, handles the reschedules and cancellations, and writes the event to the calendar. So the endless email tag disappears.
The problem
Booking is a coordination tax. Matching availability, time zones, and buffers over a handful of messages. Rigid form-based tools just push that friction onto the client instead of solving it.
What I wanted was a front door that feels like talking to a person while staying perfectly in step with a real calendar.
The solution
The assistant reads the intent out of plain text, lines it up against what's genuinely free (with the right buffers), and confirms a slot in one exchange. Reschedules and cancellations go through the same conversation.
Writing to the calendar is done carefully, so a retry never creates a duplicate event, and the confirmation goes out on its own.
Architecture
Reading the intent feeds an availability check that reads and writes the calendar safely, and confirmations go out once the booking is committed.
- Reads a plain-language request, then confirms
- Checks real availability with the buffers you set
- Writes to the calendar so a retry can't double-book
- Confirmations, reschedules, and cancellations handled for you
Screens & diagrams
Key features
Book by describing it
The client says what they want, and the assistant offers and confirms a real slot.
Knows the time zones
Handles zones and buffers on its own, so the slot it offers is always a valid one.
Reschedule and cancel
The same conversation handles changes, without the friction.
No double bookings
Careful writes keep the calendar honest even under retries.
Implementation highlights
- Made the calendar writes safe to repeat, so a retry never books the same slot twice.
- Put explicit timeouts and backoff on the calendar calls so it stays reliable.
- Made the buffers and business hours configuration rather than something hard-coded.
Challenges solved
Staying consistent under retries
An idempotency key meant the same booking request, sent twice, still only books once.
Vague requests
A quick confirmation step sorts out a fuzzy time without forcing the client through a rigid form.
Technologies
Future improvements
- Take a deposit at the time of booking
- Route to different staff, round-robin
- Automatic reminders and no-show follow-ups