agent · 02appointment booking

AI booking agent

The best first agent for most service businesses: clinics, salons, workshops, tutors, driving schools, test centres. The job is bounded, every action is reversible, the value is obvious (a slot filled, a no-show avoided), and the whole conversation fits inside WhatsApp's free service window. The demo on this site is this agent.

The pattern in six steps

  1. Identify the customer from the channel (phone number) and look up history — returning patient, outstanding balance, preferred practitioner.
  2. Constrain the search from the request: service, date range, time window, practitioner. Ask one question if something essential is missing; never three.
  3. Offer at most three slots, as a WhatsApp list message so the reply is a tap.
  4. Confirm — the guardrail. Map the reply to a slot ID unambiguously, re-check the slot is still free, then write with an idempotency key.
  5. Remind — schedule a utility template for the day before (US$0.004 to +263), with a one-tap "reschedule" button that reopens the loop.
  6. Close — state reference, time, place, cancellation window; log a trace; go idle.

Why the confirmation gate is non-negotiable

Availability is stale the moment it is fetched. Two customers can be offered the same 14:30. The agent therefore treats get_availability as advisory and create_booking as the only truth: the write either succeeds or returns "slot taken", and the agent gracefully offers the next option. The idempotency key (channel + conversation + slot) means a retried webhook cannot create a duplicate.

Tools

ToolReturnsNotes
lookup_customer(phone)record, history, balanceread; drives personalisation and policy (e.g. deposit required)
get_availability(service, from, to, window, limit)slots with practitionerread; advisory
create_booking(customer, slot, service, key)booking ref or conflictwrite; only after explicit choice
cancel_booking / move_bookingnew statewrite; policy-checked (cut-off, fee)
schedule_template(template, params, at)job id, costwrite; utility category
create_handoff(reason, summary)ticketalways available

Edge cases the golden set must contain

  • "Tomorrow" sent at 23:50; public holidays; the clinic's half-day Saturday.
  • A customer who chooses "2" after the list was re-sent with different options.
  • A returning customer with an unpaid balance where policy says "deposit first" — the agent explains, sends a Paynow link, and books only after the payment result arrives.
  • Requests that look like bookings but are clinical or contractual ("can I get antibiotics", "I want to cancel my membership") — scope guardrail, handoff.
  • Mixed-language messages ("Ndoda appointment yeThursday afternoon").

What it costs

Per booked appointment: about US$0.025 of model tokens on a mid-tier model with caching, US$0.004 for the reminder template, and nothing for the replies themselves. A thousand bookings a month is on the order of US$30 in variable cost before hosting and any BSP platform fee — the arithmetic is on the costs page; the anatomy is in this article.

Calendar and practice systems

Google Calendar and Microsoft 365 have documented APIs and are the easiest back-ends. Practice-management or salon software varies: some expose an API, some only a web interface (in which case the tool is a thin wrapper that a person can also use). See integrations.