cd /news/ai-agents/appointment-reminders-in-a-chat-bot-… · home › topics › ai-agents › article
[ARTICLE · art-148872] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=· neutral

Appointment reminders in a chat bot: six rules we ended up with

A developer building DOS AI, a platform for small-business AI assistants on WhatsApp, Instagram and Telegram, documented six rules for booking reminders that focus on when not to send messages. The system suppresses confirmations and reminders outside 9:00–21:00 local time, only messages customers who have already written to the business's WhatsApp number, excludes Instagram entirely due to its 24-hour messaging window, and matches reschedules either by external booking id or a two-hour heuristic. Each reminder carries one of five labels — scheduled, sent, not sent with a reason, not delivered, or removed — so owners can see why a customer received nothing.

by read3 min views4 publishedOct 10, 2026

I build DOS AI (dosai.pro), a platform where a small business sets up an AI assistant for WhatsApp, Instagram and Telegram. Booking is a core feature there, and the part that sounds trivial, "send a reminder before the visit", turned out to hold most of the rules.

None of this is about the model. The reminder texts are templates, not generated, and they cost the owner nothing. The work was deciding when not to send.

Messages about a booking go out between 9:00 and 21:00 in the project's time zone. Two cases fall out of that:

A confirmation arriving twenty minutes before the visit it confirms is noise.

A confirmation is for a person who has not heard from you yet. So it is not sent when:

Reminders still go out in all three cases.

A reminder is a message the business sends first, with no fresh message from the customer. WhatsApp blocks numbers that write to people who never wrote to them. So the rule is: we only message someone who has already written to this WhatsApp number, and we check that at send time, not at booking time. If the customer writes between the booking and the reminder, the reminder goes.

For everyone else the booking shows the reason in plain words, "the customer has never written to your WhatsApp number", and a button that opens WhatsApp on the owner's phone with the text prepared. A human sends it. That is slower, and it keeps the number alive. Instagram does not take part at all. You may answer there only within 24 hours of the customer's last message, so a reminder a day ahead cannot get through. Telegram does take part: a chat with a bot exists only if the customer started it.

It is tempting to hide this behind a "send reminder" abstraction. We show it instead, because the owner needs to know why a given customer got nothing.

Moving a booking moves its reminders. Cancelling removes them. The hard part is knowing that two events are the same booking.

When a booking lives in an external system, we ask for its booking id and match on that. Without an id we fall back to a rule: a repeat booking by the same customer in the same conversation within 2 hours is a reschedule, a later one is a new booking. It is a guess, and the guide says so.

Each reminder in the list carries one of five labels: scheduled (with the time already adjusted for the night rule), sent, not sent with a reason, not delivered, removed. "Not sent" always names the cause: no WhatsApp connected, subscription ended, reminders switched off, customer never wrote.

Without such a list, "the customer says they got no reminder" has no answer. With it, the answer is one line to read.

Write the "do not send" rules before the "send" code. Sending a templated message at a given time is an afternoon. Night hours, strangers, channel windows and reschedules are where the design time goes, and each of them is a case of a real person getting a message they should not have.

The owner-facing description of all this is in our guide: confirmations and reminders.

── more in #ai-agents 4 stories · sorted by recency
── more on @dos ai 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/appointment-reminder…] indexed:0 read:3min 2026-10-10 · —