A front-desk bot for a dental clinic: prices, timing, and booking in Telegram
In dentistry the first message is almost always about price and timing: how much, will I make it before I leave, can I come today. People write in the evening, get an answer the next day, and by then they've booked with another clinic. In Vietnam there's also the language problem: patients write in Russian, English, and Vietnamese. I built a front-desk bot that answers right away in the patient's language, calculates the price from the price list, checks the timing, and leaves a request for the administrator.
The chats in the pictures are illustrations. The sums, timings, and order of replies follow the bot's logic and the clinic's price list; the exact wording in a live chat may differ.
The key decision: the model doesn't calculate anything and doesn't decide anything. Code adds up the sum from the price list. A cleaning at 1,350,000 ₫ plus a crown at 10,450,000 ₫ comes to 11,800,000 ₫, and the bot states exactly that number. Timing is code too. If someone flies out in five days, the bot checks procedure durations and tells them straight whether it fits. An implant and its crown won't fit into one trip, because the crown goes on 3–6 months later, on a separate visit. The model only puts the answer into normal language.
Pain works the same way, the bot doesn't diagnose. It asks up to six questions (where it hurts, what makes it worse, whether it bothers them at night, whether there's swelling, fever, pain when swallowing) and sorts the case: can wait, come tomorrow, or needs help now. If someone writes “my tooth hurts, I can't sleep, my cheek is swollen”, the bot doesn't offer a Wednesday slot. It says right away that this can't wait and sends them to call the clinic or an ER.
Even if the model writes something it shouldn't, it won't reach the patient. A separate check throws out any answer that contains a price not from the price list, a dollar figure, a drug name, or a named cause of pain.
Once the patient has picked a service and a time, the bot collects a name and contact and passes the administrator a request card: service, when, name, contact, language. Free slots are calculated by code from the clinic's schedule. No buttons and no menus, people just write like in a normal chat.
It's a finished product. 261 automated tests, limits on message rate and daily volume, sessions that live two hours and get wiped, no message text or contacts written to logs. It's set up for your clinic with data: price list, procedure durations, schedule, address and phone, texts in the languages you need. The logic and the safeguards stay the same.