The reply says "yes" — Confirm actually books it.
When Recall parses a customer text and detects book-intent, Confirm picks up: reads the calendar, finds the slot, writes the booking, fires the confirmation SMS, and queues reminders. The customer never sees a back-and-forth — just a "done, you're booked" text within 30 seconds of their reply.
The 6 things Confirm handles, end-to-end.
Confirm isn't a calendar wrapper. It's the integration layer between the brain's intent detection and the actual scheduling system — so it has to handle every messy real-world case the customer's text might create.
1. Slot resolution
- Reads owner calendar (Google Calendar, Outlook, or in-product schedule), respects existing bookings, owner-blocked time, and vertical-specific buffers (e.g. travel time between SiteLine job sites).
- Resolves vague language — "Friday morning" → first open slot 8–11am Fri; "next week" → Monday 9am default; "ASAP" → soonest open.
- Conflict detection — if no slot fits the customer's window, replies with the 3 nearest alternatives.
2. Booking write
- Writes the appointment to the source-of-truth calendar with customer details, service type, address (if applicable), and the original SMS thread linked.
- Updates shared memory —
customer_profiles.last_appointment_atset, tags appended (booked_via_recall, vertical-specific service tag). - Emits
Confirm.AppointmentCreatedso downstream modules (Stars at T+5d, Invoicing on completion) can chain.
3. Confirmation SMS
- Personalized to vertical: roofer gets address + crew name, dental gets time + provider, real estate gets property + listing link.
- One-tap actions: reply CANCEL, RESCHEDULE, or QUESTIONS. Each maps to an orchestrator action.
- Calendar invite (.ics) attached when the customer's email is on file.
4. Reminder cadence
- T-24h: SMS reminder with reply options.
- T-2h: SMS "we're confirmed for today at {time}" — replies prompt human escalation.
- T+0 (vertical-dependent): en-route SMS for trades, "your provider is ready" for medical, "agent will arrive in 10min" for showings.
5. Reschedule + cancel
- Customer texts RESCHEDULE → orchestrator emits
Confirm.ReschedulRequested→ owner gets a Slack/email ping with proposed alternatives. - Customer texts CANCEL → calendar slot freed, customer profile flagged, owner notified. No automatic rebook (that requires owner judgment).
- Owner reschedules from dashboard → automatic SMS to customer with new time + 1-tap confirm.
6. Post-job chain
- Owner marks job done in dashboard → orchestrator chains
Stars.SendReviewRequest+Invoicing.SendPaymentLinkin one volley. - Same conversation thread — review request lands in the same SMS thread the booking confirmation came through, so the customer recognizes the number.
- Memory updated —
customer_profiles.last_job_at, service tags, and any owner notes captured during the job.
Reads + writes to where you already keep your schedule.
Most service businesses have ONE source of truth for their calendar. Confirm reads + writes to that source — it doesn't try to become a new one.
Confirm is what makes the rest of the brain worth running.
Without Confirm, Voice and Recall capture intent but nothing closes. With Confirm, the brain runs front-of-house end-to-end — and every appointment automatically chains to Stars + Invoicing post-job.