An appointment reminder flow is the single highest-leverage automation a service business can build, because a missed appointment is revenue you have already lost the chance to earn. A booked but empty chair costs you twice: the time you held for that customer, and the customer you turned away to hold it. The good news is that most no-shows are not people who changed their mind — they are people who forgot, lost track of the date, or meant to reschedule and never got around to it. A well-built reminder and confirmation flow catches all three of those before they cost you a slot.
This guide is a build tutorial. We will walk through the entire flow end to end: the trigger that fires when a booking is made, the timed reminders that go out at the right moments, the confirm, reschedule, and cancel buttons that let people respond in one tap, the nudge for people who go quiet, and the follow-up that turns a completed visit into a review or a rebook. You will get sample messages you can adapt, tables that map out timing and channels, and honest notes about where the rules of messaging — especially WhatsApp's 24-hour window — change what you are allowed to send.
Full disclosure before we start: we build KlyoChat, a chat automation platform with no-code flows, timed sequences, and AI agents. We will show how it fits near the end. Everything before that is platform-agnostic — the structure of a good reminder flow is the same whether you build it in KlyoChat, a competitor, or even partly by hand. We have flagged the messaging-policy constraints honestly because getting them wrong is the most common reason a reminder flow quietly stops working.
Why do appointments get missed in the first place?
Before you build the flow, it helps to be clear about what you are actually solving. No-shows feel like a customer problem — flaky people who do not respect your time — but most of them are a memory and friction problem. When you design around the real causes, the flow almost builds itself.
Think about the gap between booking and appointment. Someone books a haircut, a dental cleaning, or a consultation a week or two out. In that window, life happens. The date drifts out of mind. They are not ignoring you; they simply have no live reminder that the commitment exists. The booking confirmation they got at the time has scrolled far up their inbox.
The second cause is friction around changing plans. Plenty of people would happily reschedule rather than no-show, but the only path they know is to call during business hours — which they keep forgetting to do, or cannot do from a meeting or a noisy room. So they default to the path of least resistance, which is to do nothing and not turn up. A reminder that includes a one-tap reschedule button removes that friction entirely.
- Forgetting: the appointment simply slips out of mind in the gap between booking and the day.
- Friction to change: rescheduling means calling during business hours, so people avoid it and ghost instead.
- No live confirmation: a confirmation sent at booking time is buried by the time the appointment arrives.
- Low commitment: a booking that took no effort and got no follow-up feels easy to skip.
Design for the forgetful, not the flaky
Most no-shows are well-intentioned people who lost track of the date or could not find an easy way to reschedule. Build the flow to remind them clearly and to make changing plans a single tap, and you recover the large majority of would-be no-shows without nagging anyone.
What does a complete appointment reminder flow look like?
A reminder flow is not one message. It is a short sequence of touches, each with a job, spread across the time between booking and the visit, plus one touch afterward. Seeing the whole shape first makes the build steps easier to follow, because each step maps to one row in this plan.
Here is the full structure we will build. Treat the timings as sensible defaults rather than rules — a dental practice that books months ahead might add a one-week reminder, while a same-day service might compress everything into a few hours.
- Each touch has one clear job — do not cram a reschedule prompt, a promo, and a survey into the same message.
- The 24-hour reminder is the workhorse; if you only build one touch, build that one.
- The final short-notice reminder catches same-day forgetters and is worth the small extra effort.
- The follow-up is where reminder automation pays for itself twice, by turning attendance into reviews and repeat bookings.
| Touch | When it fires | Job |
|---|---|---|
| Booking confirmation | Immediately on booking | Confirm details, set expectations, save the date |
| First reminder | 24 hours before | Remind, and offer confirm / reschedule / cancel |
| Final reminder | 1–2 hours before | Last nudge with location or join link |
| No-reply nudge | If no confirm by a set time | Gentle prompt to confirm or change |
| Post-visit follow-up | 1–24 hours after | Thank, request a review, prompt a rebook |
Start with two touches, then expand
If building all five at once feels like a lot, ship the booking confirmation and the 24-hour reminder first. That pair alone recovers most forgotten appointments. Add the final reminder, the nudge, and the follow-up once the core is running.
How does the booking trigger start the flow?
Every reminder flow needs a starting gun: the moment a booking is created. This is the trigger. The flow cannot remind anyone about an appointment it does not know exists, so getting the booking data into your automation cleanly is the foundation everything else sits on.
There are a few honest realities here. A chat automation platform is not itself a calendar or a booking engine — it sends and manages messages; it does not own your schedule. So the trigger usually comes from wherever bookings actually live: your booking software, your calendar tool, or a booking step inside the chat itself. The job of the trigger is to capture three things reliably — who the customer is, when the appointment is, and enough detail to write a useful reminder.
- Choose where bookings originateDecide the source of truth: a booking tool (like Calendly or your industry's scheduler), a calendar, or a booking conversation handled in chat. Most businesses already have one — use it rather than rebuilding it.
- Connect that source to your flowWire the booking event into your automation so a new booking starts the sequence. This is usually a webhook, a native integration, or a tag applied when a chat booking completes. The flow listens for that event and begins.
- Capture the fields the reminders needPass through the customer's name and contact, the appointment date and time, the service, and the location or join link. Store these so every later message can fill them in. Missing a field here means a vague reminder later.
A chat tool is not your booking engine
Be clear-eyed about this: KlyoChat and tools like it manage conversations and timed sequences, but they are not calendars or scheduling systems. Keep your booking source of truth in your scheduler and feed bookings into the flow. Trying to run your whole calendar inside a chat builder leads to double-bookings and grief.
Sample booking confirmation message
- Trigger
- Fires immediately when a booking is created
- Message
- Hi {first_name}, you are booked for {service} on {date} at {time}. We will send a reminder the day before. Need to change it? Just reply here.
- Why it works
- Confirms the details, sets the reminder expectation, and opens a reply channel — all in one short message
When should each reminder fire?
Timing is where a reminder flow lives or dies. Send too early and it is forgotten again by the day itself. Send only at the last minute and you give people no room to reschedule, so they no-show anyway. The reliable pattern is a layered one: a reminder far enough out that people can still change plans, and a short-notice reminder close enough that it lands on the day.
The 24-hour reminder is the anchor. It arrives while there is still time to act — to confirm, to move the appointment, or to cancel and free your slot. The second reminder, one to two hours before, is the last-mile nudge for the day-of forgetter. For longer lead times, a one-week reminder can sit on top, though for most service businesses the 24-hour and short-notice pair does the heavy lifting.
- Anchor on 24 hours before — it balances recall against time to reschedule.
- Add a 1–2 hour reminder for same-day recall and travel logistics.
- Match lead time to your business: months-ahead bookings benefit from an extra one-week touch.
- Respect quiet hours — schedule reminders for reasonable local times, not 3am.
| Reminder | Timing | Primary purpose | Include |
|---|---|---|---|
| Optional early | 1 week before | Surface the appointment again | Date, time, easy reschedule |
| First (anchor) | 24 hours before | Confirm or change with time to spare | Confirm / reschedule / cancel buttons |
| Final | 1–2 hours before | Catch the day-of forgetter | Location, parking, or join link |
The 24-hour reminder is the one that pays
If you measure one thing, measure confirmations from the 24-hour reminder. It is far enough out that customers can still act and close enough that the appointment is real to them. Most recovered no-shows come from this single touch.
In-window replies vs WhatsApp templates: what changes?
This is the part of reminder automation that trips up the most people, so we will be blunt about it. On WhatsApp specifically, you cannot send whatever you like whenever you like. WhatsApp distinguishes between messages sent inside a 24-hour customer service window and messages sent outside it, and the rules are different for each. Getting this wrong is the most common reason a WhatsApp reminder fails to send.
The 24-hour window opens when a customer messages you. While it is open, you can send free-form messages — normal back-and-forth, including reminders and confirmations, in your own words. Once 24 hours pass with no new message from the customer, the window closes. To message them again after that, you must use a pre-approved message template, and Meta charges a per-conversation fee. This matters enormously for reminders, because a 24-hour-before reminder almost always lands outside the window: the customer booked days ago and has not messaged since.
The practical upshot: most of your scheduled WhatsApp reminders will need approved templates, because by definition they fire long after the customer last messaged. Once the customer replies to your reminder, the window reopens and you can handle the confirm, reschedule, or cancel conversation in free-form messages. Channels other than WhatsApp have their own rules, but WhatsApp's window is the one to plan around.
| Situation | What you can send | Cost |
|---|---|---|
| Customer messaged within 24h (window open) | Free-form messages in your own words | No per-message fee |
| Window closed (24h+ since their last message) | Approved WhatsApp template only | Meta per-conversation fee |
| Customer replies to your template | Window reopens — free-form again | No per-message fee while open |
Out-of-window WhatsApp needs approved templates and Meta fees
A reminder sent 24 hours before an appointment is almost always outside the 24-hour window, so on WhatsApp it must use a pre-approved template and incurs Meta's per-conversation fee. Submit your reminder templates for approval before you launch, and budget for the conversation fees. There is no way around this — it is Meta's policy, not a platform limitation.
Sample approved-template reminder (out of window)
- Type
- Pre-approved WhatsApp utility template
- Message
- Hi {{1}}, this is a reminder of your {{2}} appointment on {{3}} at {{4}}. Reply CONFIRM to keep it, or RESCHEDULE to change it.
- Note
- Variables {{1}}–{{4}} are filled at send time; the template wording must be approved by Meta in advance
How do you handle confirm, reschedule, and cancel?
A reminder that only says do not forget is a wasted opportunity. The whole point is to let people act in one tap. Every anchor reminder should offer three clear paths — confirm, reschedule, cancel — and the flow should branch sensibly on each. This is where a confirm appointment bot earns its keep: it turns a passive reminder into a two-way exchange that resolves the booking one way or another.
Confirm is the easy branch: thank them, mark the appointment confirmed, and stop reminding. Reschedule needs a path back to your booking system — either a link to your scheduler or a short in-chat flow to pick a new slot, after which the reminder sequence restarts for the new date. Cancel should be frictionless on purpose: a customer who cancels in advance gives you back a slot you can fill, which is far better than a no-show. Make cancelling easy and you will get more advance cancellations and fewer empty chairs.
- Offer three buttons on the anchor reminderConfirm, Reschedule, and Cancel as tappable replies. One tap is the difference between a response and a no-show. Keep the labels plain.
- On Confirm — acknowledge and stop remindingSend a short confirmation, tag the contact as confirmed, and suppress further reminders so you do not nag someone who already said yes.
- On Reschedule — route to a new slotSend your booking link or run a short in-chat slot picker. When the new time is set, restart the reminder sequence for the new date and release the old slot.
- On Cancel — make it painless and free the slotConfirm the cancellation without guilt-tripping, free the slot in your scheduler, and optionally invite them to rebook when ready. An advance cancel beats a no-show every time.
Make cancelling as easy as confirming
It feels counterintuitive, but you want cancellations to be frictionless. A customer who taps Cancel the day before hands you a slot you can resell. A customer for whom cancelling is a hassle simply does not show up — and you find out when the chair sits empty. Easy cancellation is a no-show reduction tactic.
Sample confirm-branch reply
- Trigger
- Customer taps Confirm
- Message
- Great, you are all set for {date} at {time}. See you then. If anything changes, just reply here and we will sort it.
- Behind the scenes
- Contact tagged confirmed; remaining reminders suppressed for this appointment
What about people who do not reply at all?
Some customers will read the reminder and do nothing — no confirm, no reschedule, no cancel. Silence is risky, because an unconfirmed appointment is the one most likely to become a no-show. So the flow needs a branch for non-responders: a gentle, single nudge that gives them one more easy chance to act.
The key word is gentle, and the key number is one. A single follow-up prompt a few hours after an unanswered reminder is helpful. A barrage of escalating messages is harassment, and on WhatsApp it also burns through paid template conversations for no benefit. Send one clear nudge, and if there is still no response, let the final short-notice reminder do its job and move on.
- Trigger the nudge only when there is no confirm, reschedule, or cancel by a set cutoff.
- Send exactly one nudge — not a sequence. Respect that silence might mean they are just busy.
- Keep the same one-tap buttons so responding stays frictionless.
- On WhatsApp, remember the nudge may also be out of window and need a template, so do not over-send.
One nudge, not a campaign
A non-responder nudge works because it is a single, low-pressure prompt. Turn it into a string of increasingly urgent messages and you annoy good customers, hurt your sender reputation, and rack up template fees. One reminder to act is plenty.
Sample no-reply nudge
- Trigger
- No confirm, reschedule, or cancel by the cutoff
- Message
- Hi {first_name}, just checking — are we still good for {date} at {time}? Tap Confirm to keep it or Reschedule to move it.
- After this
- If still no reply, the final short-notice reminder runs; no further nudges
How should you write reminder messages that actually work?
The structure of the flow gets people the right message at the right time, but the wording decides whether they act. A reminder is a tiny piece of copy doing a specific job, and the difference between a vague reminder and a sharp one shows up directly in your confirm rate. The principle is simple: every message should be short, specific, and end with one clear action.
Short means a customer can read it in a glance on a phone, without scrolling. Long reminders get half-read or ignored. Specific means the appointment is named precisely — the service, the exact date, the exact time, and where to go — so there is no ambiguity about which commitment you are reminding them of. One clear action means you tell them exactly what to do next: tap Confirm, tap Reschedule, reply with a question. A reminder that ends without an obvious next step leaves the customer unsure what you want, and uncertainty produces inaction.
Tone matters too, and it should match your business. A clinic reminder reads differently from a tattoo studio reminder, and that is correct — the message should sound like the person who will greet them. But across every tone, warmth beats nagging. The customer is doing you a favor by showing up; the message should feel like a helpful heads-up, not a scolding about commitment. Lead with the useful information, make the action frictionless, and skip the guilt.
- Short: readable in one glance on a phone screen, no scrolling required.
- Specific: name the service, exact date, exact time, and location or link.
- One action: end with a single clear next step, not a menu of options.
- Warm, not naggy: a helpful heads-up beats a lecture about showing up.
Personalize the obvious fields, nothing more
Filling in the first name, service, date, and time makes a reminder feel written for that person and dramatically lifts response. You do not need clever personalization beyond that — getting the basic fields right, every time, is what builds trust in the message.
Vague reminder vs sharp reminder
- Vague
- Hi, just a reminder about your upcoming appointment with us. Let us know if you need anything.
- Sharp
- Hi Sara, reminder of your colour appointment tomorrow (Thu) at 2:00pm with Lena. Tap Confirm to keep it or Reschedule to move it.
- Difference
- The sharp version names who, what, when, and the exact action — leaving nothing to guess
How do you adapt the flow to different industries?
The five-touch structure is the same everywhere, but the details shift by industry, and matching them to your context is what makes the flow feel native rather than generic. The variables that change are lead time, what information the final reminder carries, and how sensitive the messaging needs to be.
A salon or barber books a few days to a couple of weeks out, so the 24-hour anchor plus a short-notice reminder is the natural fit, and the final reminder can carry stylist name and any prep notes. A clinic or dental practice often books much further ahead and may benefit from a one-week reminder on top, with final messages noting what to bring or any pre-appointment instructions — and with extra care around tone and privacy. A consultant or coach running calls wants the final reminder to carry the join link prominently, since the friction there is finding the link, not travelling to a location.
Whatever the industry, the question to ask for each touch is: what does this customer most need to know at this exact moment, and what is the one thing I want them to do? Answer that per touch and the generic structure becomes a tailored flow.
| Business type | Typical lead time | Final reminder should carry |
|---|---|---|
| Salon / barber | Days to two weeks | Stylist name, any prep notes |
| Clinic / dental | Weeks to months | What to bring, pre-visit instructions |
| Consultant / coach | Days to weeks | The join link, prominently |
| Home / field service | Days | Arrival window, address confirmation |
Same skeleton, different flesh
Do not reinvent the flow per industry. Keep the trigger, the timed reminders, the confirm-reschedule-cancel branches, the nudge, and the follow-up. Just change the lead times and what each reminder carries. The structure is universal; the contents are local.
How does the post-visit follow-up cut future no-shows?
The flow does not end when the customer shows up. A short follow-up after the visit is where a reminder flow quietly compounds in value. It does two things at once: it strengthens the relationship that makes the next booking more likely to stick, and it captures reviews while the experience is fresh — and reviews bring in new customers who are, in turn, easier to retain.
There is a subtler benefit too. A business that follows up feels attentive, and customers who feel looked after take their appointments with you more seriously. The follow-up is not directly a reminder, but it raises the commitment level of the whole relationship, which lowers the casual-skip rate on future bookings. Keep it short and warm: thank them, ask for a review or rating, and make rebooking a single tap.
- Send within a day, while the visit is still fresh in mind.
- Lead with a genuine thank-you, not an immediate ask.
- Include one clear action — a review link or a rebook prompt, not both competing.
- Tag customers who rebook so you can start their next reminder sequence cleanly.
Follow-up is reminder automation's second payoff
The same flow that recovers a forgotten appointment can, one message later, earn a review and a rebooking. Building the follow-up into the reminder flow means the work you did to capture the booking keeps paying off after the visit ends.
Sample post-visit follow-up
- Trigger
- 1–24 hours after the appointment time
- Message
- Thanks for coming in today, {first_name}. We hope it went well. If you have a moment, a quick review really helps us: {review_link}. Ready for your next visit? Tap Rebook.
- Why it works
- Thanks first, one clear ask, and a frictionless path back to booking
Which channel should you send reminders on?
Channel choice shapes how reliably your reminders land and what they are allowed to say. Most service businesses gravitate to WhatsApp because open rates on chat are high and the customer can reply in one tap. But each channel carries its own rules, and being honest about them up front saves you a failed launch.
WhatsApp gives you the richest two-way experience — buttons, quick replies, real conversation — but it comes with the 24-hour window and approved-template requirement we covered above, plus Meta's per-conversation fees for out-of-window sends. Other chat channels you connect have their own messaging policies and rate limits. One honest limitation worth stating plainly: a chat automation tool sends reminders over chat channels, not over SMS or email. If your audience expects an SMS or an email reminder, a chat-first flow is a complement to those, not a drop-in replacement.
- WhatsApp: best two-way experience and high engagement, but plan for the 24-hour window, approved templates, and Meta fees.
- Other chat channels: high open rates, with their own platform policies and limits to respect.
- Honest limit: chat tools deliver reminders via chat, not native SMS or email — factor that into your channel mix.
- Whatever the channel, keep the message short, specific, and actionable.
Reminders go over chat, not SMS or email
Be clear with yourself about reach. A chat-based reminder flow reaches customers on the chat channels they have connected with you. It does not send SMS or email. For audiences that live in those channels, run a chat reminder flow alongside your SMS or email reminders rather than expecting it to replace them.
How do you test the flow before going live?
A reminder flow touches real customers at real moments, so a bug is not a quiet failure — it is a confused customer or a missed appointment. Test the whole sequence before you switch it on for everyone. The goal is to walk every branch yourself and confirm the messages, timings, and data all behave.
Testing also surfaces the messaging-policy issues early. If your WhatsApp template is not approved yet, you want to discover that in a test, not when the first real reminder silently fails to send. Run a booking through as if you were a customer, fast-forward or shorten the timers, and tap each button.
- Make a test booking end to endCreate a real booking from your scheduler and confirm the flow triggers and captures name, time, service, and location correctly.
- Walk every branchTap Confirm, then run another booking and tap Reschedule, then another and tap Cancel, then one where you stay silent to trigger the nudge. Each should behave as designed.
- Verify WhatsApp templates and window behaviorConfirm your out-of-window reminder uses an approved template and that in-window replies are free-form. A reminder that fails to send usually means an unapproved template.
- Check timings against quiet hoursConfirm reminders fire at sensible local times and that the short-notice reminder lands the right number of hours before the appointment.
- Review the data fillsMake sure every variable — name, date, time, service, link — populates correctly. A reminder that says your appointment on {date} undermines trust instantly.
Shorten the timers for testing
Waiting 24 hours to test a 24-hour reminder is its own punishment. Temporarily set the delays to minutes, walk every branch, confirm the behavior, then reset the timers to their real values before launch.
What should you measure once it is running?
Once the flow is live, a handful of numbers tell you whether it is working and where to tune it. You do not need a dashboard with fifty metrics — you need to know how many reminders go out, how many people respond, and whether your no-show rate is moving in the right direction.
Watch the response split on the anchor reminder: how many confirm, reschedule, cancel, or go silent. A high cancel rate is not a failure — those are slots you recovered in advance. A high silent rate suggests the message or timing needs work. Track confirmations against attendance over time, and let the trend, not any single day, guide your adjustments.
- Reminder delivery: how many sent, and how many actually delivered (especially on WhatsApp templates).
- Response split: confirm vs reschedule vs cancel vs no reply on the anchor reminder.
- Advance cancellations: count these as wins — they free slots you can refill.
- No-show trend: the bottom-line number, watched over weeks rather than days.
Advance cancellations are a win, not a loss
When the reminder prompts someone to cancel a day early, that is the flow working exactly as intended. You got the slot back in time to fill it. Judge the flow by no-shows avoided and slots recovered, not by raw cancellation count.
How does KlyoChat build this reminder flow?
Everything above is platform-agnostic, but since we build KlyoChat, here is honestly how it fits. KlyoChat is an AI-native chat platform with a unified inbox, no-code flows, timed sequences, and AI agents — which is the exact toolset an appointment reminder flow needs. You build the sequence visually: a booking trigger starts it, timed delays handle the 24-hour and short-notice reminders, and branches handle confirm, reschedule, cancel, and the no-reply nudge.
KlyoChat understands the in-window versus template distinction, so the flow can send free-form messages while the 24-hour window is open and switch to approved WhatsApp templates when it has closed — which is exactly what a reminder firing a day ahead requires. AI agents can handle the open-ended parts of the conversation, like a customer who replies with a question instead of tapping a button, and the built-in analytics let you watch the response split and no-show trend without bolting on another tool.
- No-code flow builder with timed sequences for the 24-hour and short-notice reminders.
- Branching for confirm, reschedule, cancel, and the single no-reply nudge.
- Knows in-window vs template — free-form while the window is open, approved templates when it has closed.
- AI agents to handle replies that go off-script, plus analytics to track confirmations and no-shows.
| What the flow needs | How KlyoChat handles it |
|---|---|
| Start on a new booking | Booking trigger via integration or in-chat booking step |
| Reminders at set times | Timed sequences with per-step delays |
| Confirm / reschedule / cancel | Tappable buttons with branching logic |
| Out-of-window WhatsApp sends | Approved templates handled automatically (Meta fees apply) |
| Off-script replies | AI agent picks up the conversation |
| Measure results | Built-in analytics on responses and no-shows |
Honest limits worth stating
KlyoChat sends reminders over chat channels like WhatsApp, not native SMS or email, and it is not a calendar or booking engine — you integrate your own scheduler. Out-of-window WhatsApp reminders need approved templates and incur Meta's per-conversation fees. We are also a newer, smaller community than the longest-running tools. If those trade-offs fit, the flow above is straightforward to build.
KlyoChat plans at a glance
- Basic
- $19/mo — for a small operation getting started with reminders
- Pro
- $49/mo ($39 billed yearly) — all channels and custom AI agents
- Business
- $129/mo — for higher volume and more seats
- Trial
- 7-day free trial, no credit card required
How do you keep the flow healthy over time?
A reminder flow is not set-and-forget, even though it runs on its own day to day. Messaging policies change, your booking patterns shift, and message wording that worked at launch can stale. A light quarterly review keeps the flow earning its keep without much effort.
Re-read your reminder messages with fresh eyes a few times a year and trim anything that has grown wordy. Re-check that your WhatsApp templates are still approved and that no policy change has affected them. Glance at the response split and no-show trend to see whether the timing still fits your customers' habits. Small, regular tune-ups beat a big overhaul once the flow has quietly drifted.
- Quarterly: re-read and tighten the message copy.
- Quarterly: confirm WhatsApp templates remain approved and compliant.
- Ongoing: watch the response split and no-show trend for drift.
- As you grow: adjust timing if your booking lead times change.
A short review beats a big rebuild
Fifteen minutes a quarter spent re-reading messages, checking template status, and glancing at the numbers will keep your reminder flow effective far longer than ignoring it until no-shows creep back and you have to start over.
An appointment reminder flow works because it solves the real causes of no-shows — forgetting and friction — rather than blaming customers for them. Build the booking trigger to capture the appointment cleanly, anchor on a 24-hour reminder with confirm, reschedule, and cancel in one tap, add a short-notice reminder and a single no-reply nudge, and close with a follow-up that earns reviews and rebookings. Respect WhatsApp's 24-hour window, use approved templates when it has closed, and budget for Meta's fees.
If you want to build this without writing code, that is what KlyoChat's no-code flows, timed sequences, and AI agents are for, and the 7-day trial needs no card. To go deeper on the booking side, see our guide on using an AI agent to book appointments, and for industry-specific builds see our walkthroughs of a salon booking chatbot and a clinic chatbot.



