guide

How to Set Up an AI Booking System for Your Small Business

Every appointment your staff takes by phone or email is time they are not spending on the work your business was built to do. The same is true of the reschedules, the no-show follow-ups, and the messages that arrive after closing. The AI booking system small business owners need for that traffic is an agent on a server they control, and it only works if the rules it follows are written down and the actions it is allowed to take are bounded. This guide gives you the setup path in order, the hardware it actually needs, and the points where a person still confirms before a message reaches a customer.

Short answer: An AI booking system for a small business is an agent that receives appointment requests over chat, email, or a messaging app, matches them against your availability rules, and sends confirmations without manual intervention. Cancellations and changes that require sending a message to a customer are held for a human to approve before anything goes out. You run the agent on a private Linux server you own or rent, so customer booking history stays in your own database and no per-seat fee applies to your team. For a broader look at how agents support small business operations, see the overview at /ai-for-small-business.

What you need before you start

Three things have to exist before a booking agent can do anything: a server, a route to a model, and your booking rules written down. Assemble these before you open a configuration file.

  • A Linux server running Ubuntu or Debian with at least 2 vCPUs, 4 GB RAM, and 20 GB SSD storage. At this tier the node sends its reasoning requests to an external model gateway, so no GPU is required.
  • An API key for a frontier model provider such as Anthropic, Google Gemini, or OpenAI. You pay per token sent and received, not per seat and not per booking.
  • Your booking rules in writing: every service you offer, your available hours, minimum lead time, cancellation window, and one clear instruction for what happens when a request falls outside those rules.
  • A decision on the channel customers will use to reach you: the built-in web chat panel, a Telegram bot, or an SMTP/IMAP mailbox. All three are supported inbound channels.
  • Access to someone who can administer a Linux server. Deploying and running the node takes server administration proficiency; it is not a hosted product you sign into and forget.
Tip: Write the out-of-scope rule first. Most first-week problems come from requests your rules never mention, a service you do not offer, a time outside your hours, a customer asking for a slot today, and the agent has nothing to fall back on if the document is silent.

Steps

Six steps take an empty server to a booking agent that receives requests, confirms them, and holds cancellations for review. Work through them in order, because each one depends on the one before it.

  1. Write your booking rules as a Document. List every service, every available time block, your lead time, your cancellation window, and the instruction for requests outside those rules. This Document becomes the agent's operating brief and the only source of truth it works from. You finish with a file you can edit later without touching any configuration.
  2. Provision the server and install the platform. Create a server that meets the minimum specification, then follow the installation runbook at /docs/install. The platform installs on Ubuntu or Debian. You finish with a running node.
  3. Create the booking agent's Role and capability scope. A Role defines what an agent is permitted to do and which Tools it can call. For a booking agent the scope covers reading your availability Document and replying on the configured Channel. Nothing else is granted by default. Narrow scope is not a workaround, it is how the platform enforces bounded autonomy: an agent that was never granted the mailbox Tool cannot read mail, and one agent cannot reach another agent's data.
  4. Connect the inbound Channel. Configure web chat, a Telegram bot, or an SMTP/IMAP mailbox as the inbound Channel. The adapter sanitizes what arrives and maps each incoming message to a persistent conversation thread, so a multi-message exchange keeps its context instead of starting over on every reply. Outbound replies leave on the Channel you have configured for sending.
  5. Put a human-in-the-loop gate on cancellation and reschedule replies. A reply that confirms a cancellation or a new time is externally visible and cannot be taken back. Configure the gate on that step of the Workflow so the agent writes the draft, the Workflow stops, and the draft waits for your confirmation. Nothing reaches the customer until a person approves it.
  6. Run an end-to-end test. Send a booking request on each Channel you configured and confirm the agent replies with the service, time block, and fallback instruction your Document specifies. Then send a cancellation and confirm the gate fires: the draft is held, the Workflow stops, and no message goes out.

How to check it worked

Four observable results tell you the Workflow behaves before a real customer touches it.

  • A test request on each configured Channel produces a confirmation that matches your booking Document: correct service, correct time block, correct fallback instruction.
  • A test cancellation produces no automatic reply. The draft is held and the gate fires.
  • The Event log shows the full record of each test: the request arriving, the Workflow steps in order, the gate triggering or clearing.
  • A second request for a time block you have already confirmed is handled by your written rule, whether that means declining, offering an alternative, or queuing it, and not accepted silently.

The Event log is your diagnostic surface. When something looks wrong, read it before you change any configuration.

What goes wrong and how to tell

Four failure modes show up in the first week, and each one has a visible signal.

  • No inbound events appear. The Channel adapter is not connected. Check that the Telegram bot token, mailbox password, or chat endpoint credentials are stored in the Secret store and that the adapter is active.
  • The agent replies outside your availability rules. The booking Document was not loaded into the agent's context, or the Role scope was not restricted to it. Review the Role and Document configuration.
  • The gate does not fire on cancellations. The Workflow step for outbound customer messages was not marked as a gate. Verify the Workflow definition for that step.
  • The agent returns errors instead of replies. The model gateway key is invalid, or the server cannot reach the gateway. Check the key in the Secret store and verify the server's outbound network access.
Warning: When the booking agent routes a request to an external model gateway, the text of that request travels to the provider over the network. For most bookings the payload is a service name, a date, and a customer name. Before going live, review what your booking messages contain and confirm it falls inside your provider's commercial API data policies. The notes at /security describe where the egress boundary sits.

Frequently asked questions

Does my customer booking data stay on my server?

Yes, with one boundary you should understand. The orchestration runtime, the task queue, the Documents, the conversation history, and the configuration database run on infrastructure you own or rent, and nothing stored there is used to train third-party public models. What leaves the server is the context payload of each request to an external model gateway, which for a booking is usually a service name, a date, and a customer name. Running local model weights removes that transit for reasoning, but messages sent over email, Telegram, or cloud voice still cross those networks.

What does it actually cost to run this?

There is no per-seat license. One node serves your whole team, so adding a second location or three more staff does not add a subscription line. The costs that remain are the server you rent or own, the time you or an integrator spends administering it, and per-token fees for any request routed to an external model gateway. A node running against a remote gateway fits on 2 vCPUs, 4 GB RAM, and 20 GB SSD; fully local inference needs a machine sized to the model weights, which usually means a dedicated GPU. Private AI is not free, it moves the spend from per-seat fees to infrastructure you control.

Can the agent handle booking requests from more than one channel at the same time?

Yes. Web chat, Telegram, and SMTP/IMAP email can run as inbound Channels on the same node, and each adapter maps a conversation to its own persistent thread, so a customer writing by email and a customer messaging on Telegram are never mixed together. One node serves the whole team no matter how many Channels are connected, which is why headcount does not change the license cost.

What happens when a customer sends something the agent does not understand?

The agent falls back to the instruction you wrote for out-of-scope requests, which is why that line in your booking Document matters more than the rest of it. Depending on your rule, the agent asks a clarifying question, declines politely, or leaves the thread open for a person to take over. Your Document is the only source of truth the agent works from, so an unclear request is not the place to let it improvise.

Do I need a technical person on my team to set this up?

Yes, or an integrator you can call. The platform runs on a Linux server you administer, and it does not remove that work: host security, operating system updates, monitoring, backups, and recovery are yours or your managed service provider's. If nobody on staff does that today, budget for an integrator before you budget for hardware.

Deploy a private node

When you are ready to deploy, the installation runbook and node architecture overview at Set up your node walk you from server provisioning to a booking agent that answers your customers.