A clinic receptionist that never sleeps
Patients book appointments through a WhatsApp conversation in Jordanian Arabic. The clinic gets a private dashboard where every booking, conversation and patient file lives in one place.
- Sector
- Dental & medical clinics
- Market
- Jordan
- Status
- Deployed
- Interface
- Arabic, right-to-left
The problem
Bookings live in three places at once
Phone calls, WhatsApp messages on a receptionist’s personal handset, and a paper diary. Nothing reconciles, and nobody can see the day at a glance.
The same five questions, all day
Opening hours, location, prices, which doctor, is there a slot on Tuesday. A receptionist answers them dozens of times a day instead of handling the people in front of her.
Two patients, one slot
The failure that costs a clinic its reputation. It happens whenever two people are booked from two different places at the same time.
How a patient books
Eight steps, almost all of them a single tap. The order is deliberate: consent comes before any personal detail, and confirmation comes last.
- 01Consent
What will be stored, who can see it, and the right to refuse. Declining stops everything and saves nothing. Asked once per patient.
- 02Service
From the clinic’s real service list, with duration and price.
- 03Doctor
Only the doctors who actually provide that service appear.
- 04Day
Working days only.
- 05Time
Slots computed live from the service duration and the doctor’s existing appointments — never a fixed list.
- 06Name
With a guard that rejects text mangled by a broken encoding.
- 07Contact number
The number the patient types is the one stored — not the WhatsApp account they message from. Arabic or Latin digits, local or international format.
- 08Review & confirm
A full summary. No appointment exists until they confirm, and availability is checked one last time immediately before saving.
The staff side



What the system refuses to do
These are enforced in the database, not in the interface — so they hold whoever is asking: the bot, the dashboard, or the API directly.
- Two appointments cannot overlap for the same doctor.
- No appointment is created before the patient explicitly confirms.
- Availability is re-checked immediately before saving, so a slot taken while the patient was typing sends them back to choose again instead of failing.
- A doctor cannot be booked for a service they do not provide.
- A duplicate WhatsApp delivery cannot create the same appointment twice.
- When a staff member takes over a conversation, the bot goes silent until a person hands it back.
- The assistant answers questions but never writes to the database, never diagnoses, and never invents a price or a free slot.
Under the hood
- Backend
- Python · FastAPI · SQLModel
- Database
- PostgreSQL · 18 tables
- Dashboard
- React · Vite · Tailwind
- Messaging
- WhatsApp Cloud API
- API surface
- 47 documented endpoints
- Automated tests
- 255, all passing
Deliberately out of scope
- No payments, no electronic medical records, no insurance processing.
- Built for one clinic per deployment — data is isolated by having its own database, not by a filter in a query.
- The consent notice follows data-protection principles but has not been reviewed by a lawyer.
Want this for your clinic?
We set it up with your number, your doctors, your services and your working hours. You get a private dashboard and a WhatsApp line that answers at 2am.
Book a free consultation