surfup

Meal-delivery service

AI Telegram bot that resolves 78% of support requests

Delivery · Chatbot · AI (RAG) · Automation
Project context

The client is a prepared-meal delivery service offering subscriptions and on-demand orders: tens of thousands of orders a month, with peak load on weekday evenings. Support relied on a call centre and chats, with waits of up to 40 minutes at peak times. Hiring operators ate into margin, and 70% of requests followed the same scenarios: “Where is my order?”, “How do I change the address?”, “What’s in the meal?” and “How do I move the delivery?” Almost all customers used Telegram, so it made sense to move support there too.

01 · Challenge

Automate common requests without losing service quality:

a bot that responds in natural language, sees the specific order’s data, can change a delivery and pay for a subscription right in chat, and smoothly hands complex cases to an operator. The quality threshold was strict: if the bot “pretends to support” instead of solving the issue, the project is a failure.

02 · Work completed

We designed the bot not as a “menu chatbot”, but as a full support employee: it can access order data and perform routine operations, with clear boundaries for escalation.

  • Analysed three months of support requests: identified 50 common scenarios, their shares, customers’ actual wording and operators’ typical mistakes.
  • Compiled the service’s knowledge base: delivery rules, meal ingredients, subscription rates and refund procedures, structured as facts for the model’s responses.
  • Developed the dialogue core: a language model with retrieval from the knowledge base (RAG), a ban on answering beyond the service’s facts, and a consistent brand voice.
  • Connected the bot to operational systems through APIs: order status and history, delivery address and time changes, and subscription pauses and payments.
  • Designed escalation: complex and emotionally charged requests go to an operator with the dialogue context, so customers do not have to repeat themselves.
  • Set up dialogue analytics: escalation reasons, unanswered scenarios and knowledge-base updates, allowing the bot to improve from real conversations.

The project’s main principle was that automation should not feel like automation. The bot responds in seconds, solves an issue in one or two messages and never gets stuck in a loop: for an unusual scenario, a person joins immediately with full context. That is why the support rating rose from 3.4 to 4.7—customers rate the speed and result, not “a robot or a person”. This discipline distinguishes a bot that works from one that irritates people.

03 · Outcome

The project’s economics: request volume tripled in a year as the service grew, but the operator team stayed the same—the bot handled all the increase. Operators’ freed-up hours shifted to complex, high-value scenarios and customer retention, work that previously would not fit into a shift. The bot also became a sales channel: subscription reminders and in-dialogue upsells bring in a noticeable share of revenue, turning support from a cost centre into a growth channel.

04 · Key results
MetricResult
Requests handled without an operator0% → 78%
First response timeUp to 40 minutes at peak → 3–5 seconds
Cost per request≈90 ₽ → ≈7 ₽
Support CSAT3.4 → 4.7

Metrics are transcribed from the original case materials. A period is stated where it is recorded in the source.

Three months after launch
of requests resolved without an operator
78%
first response (was up to 40 minutes at peak)
3–5 s
cost per request (was ≈90 ₽)
≈7 ₽
support CSAT (was 3.4)
4.7
Before and after
Requests without an operator
Before0%
After78%
First response time
Beforeup to 40 min
After3–5 s
Lower is better
Cost per request
Before≈90 ₽
After≈7 ₽
Lower is better
Support rating (CSAT)
Before3.4
After4.7

First response: 40 minutes = 2400 s against the upper bound of 5 s. CSAT is on a 5-point scale.

The bot at work (anonymised mock-up)

UserWhere is my order?

BotYour order is on its way. Would you like to change the delivery time?

UserYes, move it to the evening

BotDone, the delivery time is updated.

Request path
  1. 01Request in Telegram
  2. 02AI + knowledge baseand order data via API
  3. 03Typical — solved in chat
  4. 04Complex — operatorwith dialogue context
Next steps

Where the bot can go next:

  • Omnichannel support: the same scenarios in WhatsApp and VK on a shared knowledge base and core.
  • Proactive notifications to warn about delays before customers have to ask.
  • A voice assistant for ordering and managing subscriptions by voice in the service’s mobile app.
Quote
The bot responds faster than any operator and never takes a day off. Most importantly, it solves the issue instead of pretending to provide support: customers don’t notice and give us “five stars”.

— Head of the Food Delivery Service

Latest materials

All materials

Practical articles and guides by SurfUp.

Guide · 10 min

“What is…” pages and AI answers: lost clicks or falling demand

A bank’s reference section lost 24% of visits as demand fell 13%. How to tell clicks lost to an AI block from falling demand and how to measure it.

Read
Guide · 8 min

Traffic dropped after a Google update

How to tell whether a traffic drop comes from a Google update, seasonality or a site fault. 2026 update timeline, a six-question check and a plan for the first 14 days.

Read
Guide · 9 min

Demand fell or the site lost: reconciling traffic with Wordstat

Demand for deposits fell 75%, traffic 37%; for cards demand −35%, traffic −63%. How to reconcile traffic with demand and not blame the site for the market.

Read