If you build bots for clients, sooner or later a barbershop, a nail studio or a tutor asks for "a bot so people can book themselves". This is a short checklist of what that bot needs to do, what it can skip, and what it costs the owner each month. It is the list I worked from when building one.

What the client's customers need

  • Pick a service first. A haircut and a haircut with a beard trim take different amounts of time, so the free slots depend on the service.
  • Pick a person. In a shop with two specialists, customers usually want a specific one.
  • See only free times. Never show a slot and then refuse it. Compute free slots from working hours minus existing bookings.
  • Cancel without calling. If cancelling is hard, people simply do not show up.
  • Get reminded. One reminder a day before and one two hours before. This is the feature owners care about most, because no-shows cost them money.

What the owner needs

  • A message for every new booking and every cancellation, in the same Telegram they already use.
  • Today's and this week's schedule on one command.
  • A way to cancel a booking themselves, with the customer notified automatically.
  • One file to edit when prices, staff or opening hours change. Owners will not open a database.

What you can leave out of version one

  • Online payment. It adds a payment provider, refunds and support questions. Most small shops are happy to take payment on site.
  • A web admin panel. Three bot commands cover the daily routine.
  • Calendar sync. Useful later, but it doubles the number of things that can break.
  • Multiple branches. Run one bot per location until someone really needs more.

Cutting these keeps the first version small enough to deliver in a couple of days and to explain to the owner in ten minutes.

Two things that are easy to get wrong

Time zones. The server is rarely in the same time zone as the shop. Store the shop's time zone in the config and convert once, at the edge, or customers will be offered 3 a.m. haircuts.

Minimum notice. Without it, someone books a slot that starts in five minutes. A configurable "book at least an hour ahead" rule solves it.

I wrote separately about the two harder parts: avoiding double bookings and reminders without a scheduler.

What it costs to run

For one shop the load is tiny: a few dozen messages a day.

  • Hosting: the smallest VPS from almost any provider is enough. Expect a few dollars a month.
  • Database: SQLite in a single file. No separate database server to pay for or maintain.
  • Telegram: the Bot API is free.

The real running cost is not money but attention: someone has to restart the bot if the server reboots. A systemd unit or a Docker restart policy takes care of that.

A starting point

I packaged my version of this as a template: Python, aiogram 3, SQLite, one config file, and tests for the slot logic. It covers everything in the first two lists and none of the "leave out" list. It costs $19: https://payhip.com/b/VH20Y

If you have built one of these for a client, I would like to hear what they asked for that is not on this list.