Agent

AI manager for a games venue

Runs conversations in two channels, books seats and follows up with the people who never got there: reminders, a nudge after a cancelled booking and filling half empty tables.

Follow-up, not a blastThe agent comes back to the people who asked and went quiet: it reminds them of its own promise, invites them to the nearest games, fills half empty tables and writes once to anyone whose booking fell through. In both channels, on a schedule and with daily caps.

10,000 bookingsA year of history, a thousand games. The selection rule for the mailouts is built on it and checked against the past before it ships.

16 to 18 secondsFrom the customer's message to the reply in Instagram, measured on a live run. That includes a window of 8 to 15 seconds: the agent deliberately waits to see whether a second and third message are coming, so it can answer all of them at once.

Their own CRMThe agent does not work with an off the shelf system but with one the venue wrote itself: it reads the schedule and how full each game is, and creates bookings and invoices in the same place the managers do. This was the hardest part of the job and also the most valuable: anyone can connect to a ready made service, almost nobody connects to somebody else's custom build.

What they came with

There are a lot of games, each one fills up with its own group, and managers ran every conversation by hand across two channels at once: Instagram and Telegram. Questions about the schedule, formats and prices, bookings in the CRM, invoices, checking payments. Filling half empty games was a separate job: the outreach messages were written and sent manually. At that volume questions hung unanswered, and it was the customer who noticed, not the manager.

What was built

The agent runs both channels in one loop: it answers questions about the schedule, formats and prices, collects contacts, creates the booking in their own CRM and sends a payment link through Monobank, then checks and confirms the payment itself. Filling half empty games happens through scheduled outreach, with no manager involved. When it hits the edge of what it is allowed to do, it hands the conversation over and goes quiet. The manager works from Telegram: status, pauses by username, switching channels off, a daily summary. What lands on their desk is a finished booking with a paid invoice and a conversation they never had to have.

Follow-upWinning back the people who never got there: reminders on promises, invitations to the nearest games, filling half empty tables and one touch after a cancelled booking. In Instagram and Telegram, through a queue and with a daily cap.
Summaries and measurementAn evening follow-up summary in the work chat and separate summaries per channel: how many enquiries came in, how many the managers handled, how many the agent closed, why bookings were cancelled. The club's year and the agent's work are measured by the same ruler.
Manager consoleEight Telegram commands with hints in the menu. The menu is only visible in the staff chat: the same bot serves managers and customers.
DatabasePostgres across forty two tables: conversations, messages, turn state, contacts, channels, invoices, price and schedule references.
Integration with a custom CRMInstagram Direct through ManyChat and the Telegram Bot API, while bookings, cards, invoices and payments go into the venue's own system, not a boxed one.
Identity and memoryA person is recognised by username and their CRM card is pulled in. A note about the deal lives for three days and then expires, so the agent does not carry on a month old conversation.
OperationsFive processes, a kill switch per channel, failure messages to the owner in plain language, and seventy one test scenarios before every release.

Stack

n8nDockerPostgreSQLNode.jsPythonManyChatTelethonMonobank

What turned out to be hard

Follow-up turns into spam with one wrong stepSo it carries a list of cases where it stays silent: the person asked not to be written to, a manager took the conversation over, the table is already closed, a question is hanging in the middle of a chat, the player is a regular anyway. Plus daily caps per message type and one touch instead of a series. These rules took more time than the agent's own memory, and they decide whether the club keeps a living audience or a pile of opt-outs.
Integrating with a system still being writtenThe club's CRM was being written by its own developer while the agent was being built. We agreed directly on what to pass and in what shape: there was no documentation, because there was no exchange yet either.
The customer writes in three messagesThe agent does not answer each one separately: turns go into a queue, and before replying it waits between eight and fifteen seconds. The person finishes their thought, and one answer covers all of it.
A manager took over the chatThe agent goes quiet and stays quiet until the chat is handed back, even if the customer keeps writing. The list of paused chats in the console reads the same state the agent itself decides by, so the two never disagree.

See for yourself

@ya.ne.mafiaThe largest mafia community in Ukraine16k followersSend a DM

The agent answers, not a person. It runs this account every day. Ask about the nearest Saturday.

Cases

Let's talk

Come with the task in your own words: we get on a call, talk it through and work out the answer together.