AI Automation / n8n / PostgreSQL / Telegram Bot
Telegram MVP

Dragon Side
AI Front Desk
Assistant

AI-бот для первичной обработки заявок автоцентра: принимает обращения, определяет намерение клиента, собирает данные по автомобилю и услуге, хранит состояние диалога в PostgreSQL и передаёт менеджеру подготовленные заявки.

Role

AI Automation Builder / Workflow Architect

Stack

Telegram Bot API / n8n / OpenAI / PostgreSQL

Focus

lead intake / state machine / handoff

Status

Telegram MVP for automotive service

Business context

Входящие заявки
приходят
в свободной форме

Dragon Side работает с несколькими направлениями автоуслуг: детейлинг, мойка, кузовной ремонт, слесарка, чип-тюнинг, тюнинг, motorsport-проекты и реставрация. Клиенты пишут как удобно им, а не как удобно менеджеру.

Telegram message

“Делаете керамику? Сколько будет стоить на BMW X5?”

Telegram message

“Хочу записаться на химчистку, машина после детей.”

Telegram message

“Можно перенести мойку? Я сегодня не успеваю.”

Что приходится уточнять

В каждом обращении менеджеру нужно понять не только текст вопроса, но и контекст: какая услуга нужна, есть ли намерение записаться, какой автомобиль у клиента, хватает ли данных для заявки и нужно ли подключаться человеку.

01

Определить тип обращения: вопрос, заявка, консультация, отмена или перенос.

02

Собрать марку, модель, год, двигатель, VIN или госномер — если это нужно для услуги.

03

Получить имя и телефон, а не считать Telegram username полноценным контактом.

04

Не передавать менеджеру каждый вопрос как лид, если клиент ещё просто уточняет.

05

Не обещать точную цену, сроки или отмену записи без проверки менеджером.

Без workflow

Чат превращается
в ручной разбор

  • менеджер сам уточняет данные;
  • часть обращений приходит неполной;
  • вопросы и заявки смешиваются;
  • старый контекст легко теряется;
  • handoff зависит от ручного внимания.
С AI workflow

Бот готовит
структурированный лид

  • определяет intent обращения;
  • собирает нужные поля по услуге;
  • помнит состояние диалога;
  • задаёт уточняющие вопросы;
  • передаёт менеджеру готовую заявку.
Задача проекта

Сделать не “бота с GPT”, а первый слой приёмки: систему, которая принимает обращение, понимает намерение клиента, собирает данные, хранит состояние и передаёт человеку уже подготовленный контекст.

Architecture decision

Свободный AI Agent
не должен быть
главным мозгом

На раннем подходе AI Agent сам вёл диалог, решал что спросить, когда передавать менеджеру и как помнить состояние. Для реальной приёмки заявок это оказалось слишком хрупко.

Naive approach

Telegram
→ AI Agent
→ Reply

Вся логика завязана на модель: она сама интерпретирует сообщение, сама решает следующий шаг и сама пытается удерживать контекст.

Final approach

LLM
→ Scenario Engine
→ PostgreSQL

LLM работает как языковой слой. Бизнес-решения принимает сценарная логика, а состояние диалога хранится в базе данных.

01

Бот считал обычный вопрос готовой заявкой и слишком рано делал handoff.

02

Модель забывала уже собранные данные и могла задавать повторные вопросы.

03

Старые данные из прошлой заявки могли попадать в новый сценарий.

04

Бот мог отвечать менеджерам в группе так, будто это новые клиенты.

01 / LLM

Language layer

Извлекает смысл из свободного текста, классифицирует intent, достаёт данные по авто, услуге и контакту, а также формулирует человеческий ответ.

02 / Scenario Engine

Business brain

Решает, что делать дальше: уточнять услугу, просить контакт, подтверждать автомобиль, продолжать консультацию или передавать заявку менеджеру.

03 / PostgreSQL

Source of truth

Хранит профиль клиента, автомобили, активную заявку, историю сообщений, handoff-статусы и завершённые обращения.

Итоговый принцип

LLM отвечает за язык. Workflow отвечает за решения. PostgreSQL отвечает за память и состояние. Именно такое разделение делает бота управляемым, а не зависимым от одного большого промта.

Final architecture

Архитектура
разделяет язык,
логику и данные

Финальная схема устроена как управляемый workflow: Telegram принимает сообщение, n8n ведёт процесс, LLM извлекает смысл и пишет ответ, Scenario Engine принимает решения, а PostgreSQL хранит состояние диалога.

Core principle

Бот не полагается на один большой промт. Каждый слой отвечает за свою часть: входящие события, обработку, память, сценарные решения, ответ клиенту и передачу менеджеру.

LLM

понимает текст и формулирует ответы

Workflow

управляет переходами и бизнес-правилами

PostgreSQL

хранит состояние, историю и заявки

01

Telegram Trigger

Получает входящее сообщение клиента из Telegram.

02

Normalize Message

Приводит Telegram payload к удобной структуре для workflow.

03

Manager Group Guard

Отсекает сообщения из группы менеджеров, ботов и собственные ответы.

04

Load / Create State

Загружает или создаёт состояние клиента и активной заявки в PostgreSQL.

05

Save Incoming Message

Сохраняет сообщение в историю, чтобы диалог можно было отследить.

06

LLM Extractor

Извлекает intent, услугу, данные авто, контакт, отмену или перенос.

07

Scenario Engine / FSM

Решает следующий шаг: уточнить данные, продолжить консультацию или готовить handoff.

08

Update PostgreSQL State

Обновляет profile, active_request, completed_requests и handoff flags.

09

LLM Reply Writer

Получает готовое решение от workflow и пишет короткий человеческий ответ.

10

Telegram Reply

Отправляет клиенту ответ: уточнение, консультацию или подтверждение передачи.

11

Handoff Check

Проверяет, готова ли заявка к передаче менеджеру.

12

Manager Summary

Формирует чистую заявку: услуга, клиент, телефон, авто, VIN и что сделать.

13

Manager Handoff

Отправляет подготовленный лид в Telegram-группу менеджеров.

14

Save Handoff

Фиксирует факт передачи, чтобы не отправлять одну заявку повторно.

Что это даёт

Каждый шаг можно отладить отдельно: payload Telegram, состояние в базе, результат extraction, решение сценария, текст ответа и факт handoff. Это сильно упрощает debugging и снижает зависимость от поведения LLM.

n8n workflow architecture

n8n управляет
всем процессом
обработки заявки

n8n используется как orchestration layer: принимает Telegram-событие, нормализует payload, загружает состояние из PostgreSQL, вызывает LLM, пропускает результат через сценарную логику и отправляет ответ клиенту или заявку менеджеру.

Workflow screenshot

Telegram Trigger → PostgreSQL → LLM Extractor → Scenario Engine → Reply / Handoff

n8n workflow
01 / Input

Telegram Trigger

Workflow стартует с входящего сообщения клиента. Telegram payload приводится к единому формату, чтобы дальше не тянуть хаос по всей цепочке.

02 / Memory

PostgreSQL state

Перед обработкой загружается профиль, активная заявка, известные автомобили, история и текущий статус диалога.

03 / AI layer

LLM Extractor

Модель извлекает intent, услугу, данные авто, имя, телефон, VIN, отмену, перенос и комментарий клиента.

04 / Logic

Scenario Engine

Workflow решает следующий шаг: уточнить данные, продолжить консультацию, подтвердить авто, запросить контакт или подготовить handoff.

05 / Output

Reply Writer

Отдельный LLM-слой формулирует ответ клиенту на основе решения workflow, а не принимает бизнес-решение самостоятельно.

06 / Handoff

Manager summary

Если заявка готова, n8n формирует понятное summary и отправляет его в группу менеджеров без повторных handoff.

Зачем так

Такая сборка позволяет отлаживать каждый слой отдельно: входящий payload, состояние в базе, extraction result, сценарное решение, ответ клиенту и факт передачи заявки менеджеру.

PostgreSQL data layer

Postgres хранит
память, состояние
и историю заявок

Бот не полагается на память LLM. Профиль клиента, известные автомобили, активная заявка, история сообщений и handoff-статусы хранятся в PostgreSQL и используются workflow как source of truth.

Source of truth

PostgreSQL нужен не “для галочки”, а чтобы бот мог продолжать сценарий, не смешивать старые заявки с новыми и не отдавать модели контроль над состоянием.

Memory

клиент, авто, история сообщений

State

текущий шаг, услуга, handoff flags

Lifecycle

active request → completed request

table

client_profile

client_name

имя клиента

phone

контакт для заявки

cars[]

известные автомобили клиента

last_seen_at

последняя активность

json state

active_request

service_type

мойка, детейлинг, чип, ремонт

current_state

текущий шаг сценария

selected_car_id

авто внутри заявки

handoff_ready

готовность к передаче

history

messages

chat_id

Telegram chat identifier

direction

client / bot / manager

text

текст сообщения

created_at

время события

lifecycle

completed_requests

request_id

идентификатор заявки

status

handoff / completed / cancelled

summary

контекст для менеджера

handoff_sent_at

защита от дублей

01

Клиент пишет в Telegram

02

n8n загружает профиль и активную заявку

03

Scenario Engine обновляет состояние

04

Postgres сохраняет историю, поля и handoff

Ключевая логика

После передачи заявки active_request не должен бесконечно висеть в памяти и попадать в новые обращения. Поэтому состояние разделяется на профиль клиента, активную заявку и завершённые запросы.

Conversation state model

Диалог работает
как state machine

Каждый ответ клиента меняет состояние сценария. Workflow понимает, что уже собрано, что ещё нужно уточнить, когда продолжить консультацию и когда можно передавать заявку менеджеру.

Почему это важно

Без state machine бот начинает повторять вопросы, смешивать старые заявки с новыми и делать handoff слишком рано. Состояния помогают держать сценарий под контролем.

State

где сейчас находится диалог

Condition

каких данных не хватает

Action

что должен сделать workflow

State Meaning Next action
awaiting_service

Бот ещё не понял, какая услуга нужна клиенту.

Уточнить направление или определить intent.
service_question

Клиент задаёт вопрос про услугу, но ещё не оставляет заявку.

Ответить, не делать handoff.
consultation

Клиент просит совет или сравнивает варианты.

Проконсультировать и дождаться намерения продолжить.
collecting_car

Для услуги нужен автомобиль, но данных пока не хватает.

Запросить марку, модель, год или уточнение.
confirming_known_car

В памяти есть автомобиль, но нужно подтвердить, что речь про него.

Спросить: “Речь про ваш BMW X5 или другой автомобиль?”
collecting_contact

Заявка почти готова, но нет имени или телефона.

Запросить контакт для связи.
handoff_ready

Собраны нужные данные и есть явное намерение клиента.

Подготовить summary для менеджера.
handoff_sent

Заявка уже передана менеджеру.

Не отправлять повторный handoff.
cancel_or_reschedule

Клиент хочет отменить или перенести запись.

Передать запрос менеджеру без ложного подтверждения.
completed

Заявка завершена или перенесена в историю.

Очистить active_request и не тянуть старые данные дальше.
Transition example

Как одно сообщение клиента двигает сценарий

Client

“Хочу химчистку”

State

awaiting_service → confirming_known_car

Bot

“Речь про ваш BMW X5 или другой автомобиль?”

Next

collecting_contact / handoff_ready

Ключевой вывод

State machine делает поведение бота предсказуемым: LLM помогает понять текст, но переходы, готовность заявки и передача менеджеру зависят от состояния, условий и правил workflow.

Technical implementation

Техническая
сборка MVP

Проект собран как Telegram MVP с n8n-оркестрацией, PostgreSQL-памятью, LLM-слоем для извлечения данных и сценарной логикой, которая управляет состояниями, handoff и ответами клиенту.

Orchestration

n8n workflow

Telegram trigger, IF / Switch logic, Code nodes, branching, manager notifications.

Messaging

Telegram Bot API

Приём сообщений клиента, ответы бота, handoff summary в группу менеджеров.

AI layer

LLM extraction

Intent, услуга, авто, контакт, отмена, перенос, комментарий клиента.

Database

PostgreSQL

Профиль клиента, автомобили, active request, messages, completed requests.

Logic

Scenario Engine

FSM, обязательные поля, handoff rules, защита от дублей и старого контекста.

Debugging

Execution logs

Проверка payload, состояния, extraction result, SQL-записей и Telegram-ответов.

01

Спроектировал сценарий первичной обработки заявок для автоцентра.

02

Собрал n8n workflow: Telegram input, state loading, LLM extraction, scenario logic, reply, handoff.

03

Подключил PostgreSQL как source of truth для памяти, active_request, истории сообщений и статусов.

04

Разделил LLM Extractor и Reply Writer, чтобы модель не управляла бизнес-логикой напрямую.

05

Добавил handoff менеджеру, guard для группы менеджеров, cancel/reschedule flow и защиту от повторной передачи.

Итог

Получился не “чат с GPT”, а управляемая workflow-система: Telegram отвечает за канал, n8n — за процесс, LLM — за язык, PostgreSQL — за память, а сценарная логика — за решения.

Next step

AI-бот должен быть
не чатом с GPT,
а управляемым
workflow

Проектирую AI-автоматизации, где LLM отвечает за язык, n8n управляет процессом, PostgreSQL хранит состояние, а бизнес-логика остаётся проверяемой и предсказуемой.

Focus

AI automation / n8n workflows / Telegram bots / PostgreSQL state

Principle

LLM для языка, workflow для решений, база данных для памяти и статусов

Format

MVP, internal tools, lead intake bots, CRM scenarios, QA dashboards

Vladislav Katkov Dragon Side AI Front Desk Assistant / Portfolio Case
Made on
Tilda