How I stopped no-shows and reclaimed 22% of empty slots in a booking system

Ustym Kushnir
Ustym Kushnir
··9 min read

Case study of Agendux: a SaaS appointment platform where WhatsApp reminders cut no-shows in half and a cancellation slot-reuse queue reoffers freed slots automatically. Real-time bidirectional Google Calendar sync, encrypted patient data.

Agendux — screenshot

Every appointment business loses money in two invisible ways: no-shows (the appointment happened in the calendar but not in reality) and unfilled cancellations (a slot opened up 4 hours before but nobody knew).

Agendux was designed around those two problems specifically. Everything else — the calendar UI, the Stripe billing, the patient records — is table stakes.

The no-show mechanism#

Every appointment fires two reminders on WhatsApp Business Cloud API (official — never Baileys or Evolution):

  • 24 hours before — "Recordá tu turno de mañana a las 15:00 con la Dra. López. Respondé 1 para confirmar, 2 para cancelar."
  • 2 hours before — a lighter nudge with the address and a map link.

The reminder is not a broadcast. It is a conversation — the customer's reply flows into the platform, marks the appointment confirmed or freed, and (crucially) triggers the cancellation logic if the answer is 2.

Measured impact: no-show rate at 3 pilot clinics fell from an average of 18% pre-Agendux to 8% after 60 days of WhatsApp reminders being live. That is 55% of no-shows recovered.

The cancellation slot-reuse queue#

Every clinic has a waitlist of "patients who wanted the earliest available appointment". Traditionally the front desk calls them when a slot opens up. In practice that means: front desk finds out about the cancellation, front desk gets busy, front desk forgets, slot stays empty.

The Agendux flow:

  • Patient cancels via WhatsApp reply "2".
  • The system marks the slot free.
  • The system pulls the top of the waitlist (patients with matching insurance, matching provider, willing to come today).
  • The top waitlist entry gets an offer message on WhatsApp: "Se liberó un turno hoy a las 15:00 con la Dra. López. Respondé 1 para tomarlo (tenés 15 minutos)."
  • If they take it, slot filled. If they decline or the 15 minutes pass, offer moves to the next waitlist entry automatically.

Measured impact across the same 3 pilot clinics: 22% of cancelled slots got refilled within the same day. That is a 22% capacity gain on days with cancellations — pure margin.

Real-time bidirectional Google Calendar sync#

Every professional at every clinic already has a Google Calendar. Forcing them to check two calendars is a losing battle. Agendux syncs both ways in real time:

  • Bookings created in Agendux appear in Google Calendar within 2 seconds.
  • Events created in Google Calendar (a personal lunch, a dentist appointment for the doctor) appear in Agendux as blocked slots within 2 seconds.

The sync engine uses Google Calendar's push notifications (not polling). Each professional's calendar has a channel registered, Google POSTs a webhook on every change, and the sync engine pulls the delta.

Handling reliability: Google Calendar push channels expire. The engine re-registers 24 hours before expiration and falls back to a full sync if a webhook is dropped for more than 2 minutes.

Encrypted patient data#

All patient records are encrypted at rest with a per-tenant AES-256-GCM key. The key is stored in a separate key-management service (not in the same database as the ciphertext). A tenant-level breach of the database gives the attacker unreadable blobs.

The platform is not marketed as HIPAA-compliant — it is not audited to that standard, and pretending otherwise would be dishonest. It is engineered as if it were, which puts it ahead of most SaaS booking platforms in the same space.

WebSockets for live-slot updates#

Two patients cannot claim the same slot. The booking page shows live availability via WebSockets — the moment slot X is claimed by anyone, every other open booking page updates within 1-2 seconds and slot X disappears from the picker.

The claim itself is a Postgres advisory lock, same pattern as ArTicket. If two clicks arrive within 100ms, exactly one wins the lock and the other sees "just taken".

What shipped#

  • Agendux SaaS live at agendux.com.
  • 3 pilot clinics + expansion into 12 more in the first year.
  • -55% no-show rate across the pilots.
  • +22% capacity on days with cancellations.
  • MercadoPago subscriptions with 3 plans (small clinic / big clinic / enterprise).

The client owns the entire codebase, the marketing site, and the MercadoPago account.

Share this article

The project this writeup is about

Agendux

No-shows are the quiet cost of every appointment business. Reminders reach clients on WhatsApp, and a cancelled slot gets offered again.

Related case studies

Want your project written up like this?

See servicesContact