Three polite messages, an empty room
The patient read none of them. The slot sat empty, nobody was told, and the money was simply gone. The plugin’s job ended when the reminder was delivered — and that is where the whole problem starts.
Kavita’s story
Not a market study. A physiotherapy practice, a diary full of holes, and a number the owner could name to the rupee every month.
Kavita exists because the software that practice had already paid for did nothing about the one thing costing it money. Every feature here was tested on a live site taking real payments from real patients, where being wrong meant somebody’s afternoon was wasted and somebody’s money was actually missing.
The problem nobody was solving
The patient read none of them. The slot sat empty, nobody was told, and the money was simply gone. The plugin’s job ended when the reminder was delivered — and that is where the whole problem starts.
“WhatsApp messages do not support two-way communication. If a customer replies to the message, the reply will not appear in Amelia.”
That is not an oversight, it is architecture. Receiving a reply means a webhook, a conversation state per phone number, a session window that respects Meta’s rules, and an intent parser careful enough to be trusted with the word cancel. None of that is a checkbox somebody forgot.
Which is exactly why it took building a plugin rather than filing a feature request — and why it is the one thing on this site a competitor cannot answer with a point release.
The bug that shaped the product
We shipped it. We found it on a live clinic. The patient’s card showed a charge, the dashboard showed nothing, and it would have surfaced weeks later when the authorisations expired — or when somebody phoned to complain.
Capture is verified before a booking is ever marked paid. Gateway webhooks reconcile anything the browser missed, and a released slot is re-taken rather than lost. Thirteen gateways, one behaviour.
Because software that touches somebody’s livelihood earns trust by what it does when it is wrong, and hiding the worst bug we ever shipped would be the wrong lesson to have learned from it.
The payment path is the most defended code in the product. The server recomputes every amount; the client only ever names a coupon or a card, never a price.
What we refuse to build
An agent reading “sharp pain down the left leg” and flagging red flags sounds valuable, demos beautifully, and is a regulatory tar pit that ends with software practising medicine. Clinical advice is refused everywhere in this product, and it does not come back in through a side door because a customer asked nicely.
“A cheaper plan that can double-book is not a cheaper product. It is a broken one — and the patient who arrives to an occupied room did not choose your tier.” The rule that decided what would never go behind a paywall
Honesty
Everything else on this site is an argument from source code. This is the part the argument does not cover. When a line here stops being true it comes off the page, with the date it changed.
Where it is now
One practitioner, no card, no clock. Install it beside whatever you run today and import your data in a dry run that writes nothing.
Design reference. This one answers from a fixed list, with no model behind it. The real agent will call our own endpoint — never OpenAI directly, because a key in this page is a key anyone can read.