Appointment arithmetic
Check availability, conflicts, and reminder timing from supplied booking records.
Provide service, requested time, available slots, busy intervals, and appointment identifiers. SlotMorrow returns a slot offer or handoff, conflict IDs, and a normalized record.
Sign in and you go straight back to the SlotMorrow conversation. Work happens in chat. This page never asks for your card details or email address.
FIRST REAL RESULT
A tested booking, reminder, and cancellation loop
- BOOKSlot offer or handoff
- 24hReminder timestamp
- CXLCancellation draft
CONTROLLED NON-REAL REQUEST
10:00 is busy. The next 45-minute opening is 11:00, still unconfirmed.
Haircut for 2026-08-31 at 10:00, duration 45 minutes, price USD 20. slot-10-busy overlapped the request; slot-11 is the next available opening at 11:00. conflict=true with conflicting_booking_ids=[slot-10-busy], action=offer_slot.
HOW A SLOT IS PICKED
Slot selection requires matching service, availability, and start time. Conflict checks compare half-open UTC intervals.
Inputs cover service, requested time, slot availability, busy intervals, appointment IDs, timezone, and source.
- 01Earliest qualifying slot
SlotMorrow filters supplied slots by availability, service, and start at or after the requested time, then selects the earliest.
- 02Half-open UTC overlap
It checks half-open UTC interval overlap and retains conflicting booking IDs in input order.
- 0324-hour reminder time
It normalizes the supplied appointment fields and calculates the reminder timestamp 24 hours before the UTC start.
WHAT THE DESK TAKES
Supplied records in. Slot ID or handoff out.
- Service name, requested-after time, and slots with ID, service, availability, and start
- Requested start and end plus busy booking IDs and intervals
- Appointment ID, lead ID, service, UTC start and end, timezone, and source
WHAT STAYS ON THE BOARD
- The earliest matching available slot ID or a handoff when none qualifies
- A conflict flag and the overlapping booking IDs in supplied order
- A normalized confirmed appointment record with reminder time exactly 24 hours before start
VERIFIED DESK OUTPUT
The conflict was detected. The reply stayed a draft.
A SlotMorrow booking review that caught a busy 10:00 request and proposed the next open slot at 11:00. You get conflicts detected before replies go out, a valid alternative drafted, and nothing booked until the client agrees.

THE DESK DOES NOT SEND
SlotMorrow fills the cubby. A person still holds the keys.
SlotMorrow is an appointment desk for service teams. Collect the visit needed, compare proposed times, send reminders, fill no-show slots, and ask people back — without locking the channel.
- pick_next_slot returns only offer_slot or handoff and never invents a slot.
- Illegal instants raise ValueError. Busy intervals are half-open UTC.
- No WhatsApp send, calendar write, or CRM write without a person.
It does not
- Sending a WhatsApp message or writing to a calendar
- Offering a slot for another service, before the requested time, or marked unavailable
- Hiding a booking interval that overlaps the requested interval
Before acting
- Confirm availability in the source calendar before offering a time.
- A person reviews every customer-facing message and booking change.
STARTER / MONTHLY
Keep the day board on one desk.
Bring a booking request, review the offered cubby, and decide whether any customer-facing message should be sent.
BEFORE YOU BRING A REQUEST
Questions
Which slot is offered?
The earliest supplied slot that is available, matches the requested service, and starts at or after the requested-after time is returned.
What happens when no slot qualifies?
The engine returns a handoff action with no slot ID instead of inventing availability.
How are conflicts detected?
Requested and busy times are compared as half-open UTC intervals, and every overlapping booking ID is returned in the supplied order.
What is included in the appointment record?
It includes appointment and lead IDs, service, normalized UTC start and end, timezone, source, confirmed status, and a reminder timestamp exactly 24 hours before start.