Skip to content
Insights
6 min read

Taking appointments over WhatsApp: the hard part isn't where you think

"The customer writes, the system books the slot" takes ten seconds to say in a meeting. Once you build it, the real difficulty turns up somewhere else entirely.

In appointment-based businesses the picture is always the same: the phone rings, a WhatsApp message arrives, someone replies when they get a moment. A message that comes in during a busy hour gets seen in the evening, by which time that customer has gone elsewhere.

The fix sounds simple: the customer writes, the system understands, the slot gets booked. That isn't the hard part.

## First, the middleman problem

There are ready-made ways to connect to WhatsApp. Most of them route through a service that charges per message and uses a number belonging to the platform rather than the business. A message arriving from a number the customer doesn't recognise means the automation loses trust on day one.

We chose to write the engine ourselves. The business connects its own number by scanning a QR code, and customers keep writing to the number they've always used. There's no per-message fee either.

The cost of that choice: dropped connections, reconnection, session storage and message queueing all become your problem. You can't ask a business to re-scan a QR code every time the server restarts.

## The genuinely hard part: stopping the model inventing

Language models are very good at producing convincing sentences. That's exactly the problem. They can produce "Great, I've booked you in for Tuesday at 2pm" even when nothing exists in the calendar.

So the system has one rule: the model cannot confirm anything on its own. Before a booking is made, a function that actually queries the calendar is called. If that function says the slot is taken, no booking happens — however confidently the model phrased it.

Setting that rule at the start is far easier than adding it later. Add it later and you end up chasing everything the model has already told people.

## Customers don't pick times from a calendar

Real messages look like this: "are you free the day after tomorrow, afternoon?", "could we look at Saturday morning?", "if this week doesn't work, next week is fine".

Turning that into an exact date and time is much harder than showing a dropdown — and much more natural for the customer. It's worth the effort. Nobody wants to walk through three screens to book a haircut.

## Conversations get abandoned halfway

A customer asks "is Tuesday free?", reads the answer, then goes back to work. Three hours later they write "ok let's do that".

The system has to remember what was being discussed across those three hours: which service, which staff member, which time. Otherwise you start asking from scratch, and the whole point of the automation disappears.

## What we took away

The difficulty here isn't the AI — it's the rules around it. The model is a good translator, but the system should decide what's true, not the model.

If you're thinking about something similar, let's talk. We'll tell you honestly where it helps and where it doesn't.

Let's start

Tell us the idea you have in mind

In a short call we'll understand what you want to build and give you an honest roadmap. No charge.