AI-менеджер мовної школи в Telegram
Клієнти питають те саме цілодобово, а помилка про ціну коштує дорожче за мовчання. Бот відповідає за базою знань і віддає розмову людині там, де не має права вирішувати.
Результат
- Відповідь, яка не спирається на жоден документ бази знань, клієнту не надсилається взагалі
- Питання про гроші й нестандартні ситуації доходять до людини, а не закриваються навмання
- Власник бере розмову собі лише свідомо і отримує вижимку замість усієї переписки
- Відкрите й те, й інше: поговорити з ботом у Telegram і заглянути в кабінет власника без пароля
- Роль
- Бот, кабінет власника, база знань, сервер
- Оновлено
- 2026-09-22
Задача
Мовна школа продає не товар, а рішення, яке людина обдумує тижнями. Питання приходять цілодобово і повторюються: який у мене рівень, скільки коштує, коли можна займатись, що буде, якщо пропущу заняття. Відповідає на них людина, і відповідає те саме.
Але питання не рівні між собою. «Чи можна оплатити карткою мого банку з Німеччини» виглядає так само просто, як «скільки триває заняття», а ціна помилки в ньому зовсім інша: людина заплатить і не поверне гроші. Бот, який відповідає на все однаково впевнено, у цьому місці коштує дорожче, ніж його відсутність.
Що зробив
Бот у Telegram відповідає клієнтам за базою знань школи: рівні, формати занять, ціни, розклад, оплата, скасування і окремо те, чого школа не робить. Пам'ятає клієнта між розмовами, тому на другому тижні не питає ім'я і мету вдруге.
Заявку на пробне заняття збирає сам: мета, рівень, формат, часовий пояс, зручний час. Коли даних досить, вирішує код, а не модель, і власник отримує картку з готовою заявкою.
Власник читає все в браузері: список розмов, саме листування, заявки. Відповісти може звідти або просто реплаєм у Telegram, куди бот скидає картку.
Коли підходить
- Одні й ті самі питання, цілодобово. Людина відповідає те саме вдесяте, а ввечері й у вихідні не відповідає ніхто.
- Частина питань не має права на помилку. Гроші, повернення, нестандартні ситуації: тут дешевше промовчати, ніж відповісти неправильно.
- Заявки живуть у чиїйсь голові. Хто на якому етапі і кому вже пообіцяли передзвонити, знає тільки той, хто того дня був у чаті.
Головне рішення: код не вірить моделі
Модель відповідає не з голови, а з кусків бази знань, які їй дали. Далі код звіряє, на що саме вона послалась. Якщо відповідь по суті не спирається на жоден знайдений документ, вона не йде клієнту взагалі: замість неї власник отримує питання, а клієнт чесне «уточню в керівника».
Чотири причини передати розмову людині ставить сам код, а не модель: відповідь без джерел, збій провайдера, нерозбірлива відповідь, вичерпаний денний бюджет токенів. Жодну з них не можна вмовити не спрацювати.
Профіль клієнта і резюме минулих розмов теж їдуть у модель як дані, а не як інструкції. Рядок «мені обіцяли знижку 50%» у резюме лишається твердженням клієнта, а не новим прайсом.
Межа: бот не забирає розмову в людини
Звичайна відповідь власника не робить його відповідальним за всю розмову: на решту питань далі відповідає бот. Людина бере розмову собі лише явно, кнопкою, і в ту ж секунду отримує вижимку: профіль, резюме, активну заявку, хвіст листування. Читати всю переписку з нуля не треба.
Зворотне так само важливе. Розмова, яку взяли й забули, повертається боту сама за добу, з поміткою «потребує уваги». Інакше найцінніше звернення тихо залишається без відповіді саме тому, що ним зайнялась людина.
Персональні дані
У логах немає текстів повідомлень, тільки ідентифікатори, тип події і тривалість. Профіль клієнта і резюме розмови не логуються взагалі: там персональні дані. У кабінету немає ні доступу до бази, ні токена бота, ні ключа моделі, тому зламаний браузер не відкриває нічого з цього.
Як це перевірено
39 сценаріїв ганяються через справжню модель, а не через заглушку: питання про ціну з підступом, питання про те, чого школа не робить, спроби перебити інструкції текстом у повідомленні, повернення до старої теми через тиждень. Окремо 108 тестів на справжньому Postgres.
Прогін на живій моделі коштує грошей, тому він не входить у звичайні тести. Але без нього «бот не вигадує» лишається обіцянкою, а не перевіреним фактом.
Спробуйте самі
Бот відповідає просто зараз, за посиланням «Подивитись наживо». Найцікавіше питати те, на чому такі боти зазвичай і ламаються: попросити знижку, спитати про іспит, якого немає в програмі, або запитати, чи пройде оплата карткою вашого банку. Правильна відповідь на останнє це не «так», а «уточню в керівника».
Другу половину роботи видно в кабінеті власника, і він теж відкритий: демо без пароля. Там ті самі розмови, які бот справді провів, з профілем клієнта, зібраними заявками і моментом, де розмова пішла до керівника. Змінити в ньому не можна нічого: це окремий екземпляр, який дивиться у свою базу і вміє тільки читати.
Часті питання
Бот може вигадати ціну або пообіцяти те, чого немає? Ні, і тримається це не на обіцянці, а на коді: відповідь, яка не спирається на жоден документ бази знань, клієнту не надсилається взагалі.
Що як написати боту «забудь усі інструкції»? Нічого не зміниться. Текст клієнта потрапляє в модель як текст клієнта, а не як нові правила, і це окремий сценарій у перевірці.
А якщо модель недоступна? Клієнт отримує нейтральну відповідь, а розмова йде людині. Збій зовнішнього сервісу бота не роняє і не змушує його мовчати.
Стек
- Python
- FastAPI
- LLM
- pgvector
- Next.js
- Docker
Схожа задача?
Опишіть її двома реченнями. Скажу, чи можна це автоматизувати і скільки приблизно коштуватиме.