Кейс · клієнтський проєкт

Бот, який веде клієнта аудіокнигою і сам веде його картку в CRM

клієнтський проєкт · Node.js + OpenAI + гугл таблиця + RO App · 2026 · у проді

Компанії, що встановлює системи очищення води, був потрібен помічник замість менеджера: розповісти людям про зворотний осмос, відповісти на типові питання і вчасно передати людині тих, хто готовий купити. Я зробила Telegram-бота, який веде нового клієнта аудіокнигою з 10 частин, відповідає з бази знань і сам ставить статуси в CRM. Усі тексти команда править у гугл таблиці. Обидва етапи прийнято, бот працює цілодобово.

10
частин аудіокниги, кожну відкриває кнопка «Слухати далі»
9
статусів клієнта, які бот синхронізує з CRM в обидва боки
655
автотестів на логіку воронки і статусів
2 з 2
етапи прийнято замовником
01

Задача

Компанія встановлює системи зворотного осмосу. Людині, яка вперше думає про фільтр, треба пояснити, навіщо він, чим відрізняються системи і чому обслуговування – окрема історія. Менеджер розповідав це щоразу заново, а гарячі клієнти губилися серед тих, хто просто цікавиться.

У компанії була записана аудіокнига про воду. Задача – зробити з неї воронку: бот веде людину частинами, помічає, коли вона готова купити, і передає менеджеру разом із контекстом. Усе, що відбувається з клієнтом, має бути видно в CRM.

  • Клієнт: компанія, що встановлює системи очищення води. Назву не розкриваю, на картинках – макети із заглушками
  • Обсяг: два етапи – спершу автоворонка, потім консультант, статуси і CRM
  • Канал: Telegram, вхід за посиланням або з форми на сайті
  • Роль: усе сама – план етапів із замовником, архітектура, код, таблиця, інтеграції, інструкція для команди
02

Як бот веде клієнта

Книгу рухає одна кнопка. Людина сама вирішує, коли слухати далі, а бот стежить, щоб вона не загубилася.

Шлях клієнта в боті: старт, частина аудіокниги, кнопка «Слухати далі», нагадування, подарунок, передача менеджеру
Шлях клієнта. Ілюстративний макет: старт, частина, «Слухати далі», нагадування, подарунок і передача менеджеру.
Старт
Людина приходить за посиланням чи з форми на сайті й натискає «Старт». Бот запам'ятовує її і відкриває першу частину.
Частини
Аудіокнига з 10 частин. Наступна приходить після кнопки «Слухати далі». Натиснув зарано – бот сам дошле частину після паузи, тиснути вдруге не треба. Переслати чи зберегти аудіо в Telegram не можна.
Нагадування
Людина замовкла – бот м'яко нагадує тією ж кнопкою. Якщо тиша триває далі, ставить статус «Пасивний» і пише менеджеру.
Подарунок
Після 10-ї частини – кнопка «Отримати подарунок» і статус «Фіналіст».
Передача менеджеру
Голосове чи відео від клієнта, «беру, куди платити?», складне питання – менеджер отримує сповіщення з посиланням на чат і коротким підсумком від ШІ. Адмін-командами прямо в чаті бота він відмічає оплату, сервіс чи відмову або продовжує воронку.
03

Уся адмінка – гугл таблиця

Окрему адмінку для бота я не робила. Тексти, ціни, база знань, анкети, паузи й менеджери живуть у гугл таблиці, яку команда і так уміє відкривати. Бот сам перечитує її за кілька хвилин, а історія версій таблиці працює як відкат.

Жирний, курсив і посилання з клітинки доїжджають у Telegram як є. Порожня клітинка вимикає повідомлення. Анкети – питання клієнту по черзі з кнопками й фото – команда складає сама в окремій вкладці.

Макет гугл таблиці бота: вкладки Шаблони, Анкети, Ціни, База знань, Налаштування
Гугл таблиця як адмінка. Ілюстративний макет вкладки «Шаблони»: ключ, текст, примітка.
04

Консультант, статуси і CRM

ШІ-консультант відповідає своїми словами, але тільки з вкладок «База знань» і «Ціни». Кожне число й обіцянку з відповіді сервер звіряє з рядками таблиці, а менеджер бачить копію з номерами рядків. Чого в базі нема – бот передає менеджеру. Консультант вмикається одним рядком у таблиці, тож команда сама вирішує, коли пускати його до клієнтів.

Намір клієнта читає ШІ, словник ключових слів лишився запасним варіантом. З цього складаються дев'ять статусів: Слухач, Пасивний, Зацікавлений, Гарячий, Фіналіст, Клієнт: Оплачено, Клієнт: На сервісі, Відмова, Нецільовий.

Статуси синхронізуються з RO App в обидва боки. Лід із чату чи форми сайту одразу потрапляє в CRM, а якщо менеджер змінив статус у CRM, бот це бачить. Оплата створює наряд, а через 170 днів після монтажу бот нагадує клієнту про сервіс. На відмову бот питає причину, і вона теж іде в CRM. Раз на тиждень ШІ-суддя перечитує діалоги тижня й надсилає керівнику проблемні з цитатою.

Макет чату з ботом: відповідь з бази знань, дев'ять статусів клієнта, синхронізація з CRM
Консультант і статуси. Ілюстративний макет: відповідь з бази знань з номерами рядків для менеджера і дев'ять статусів клієнта.
05

Цифри

Назву компанії й зміст аудіокниги не розкриваю. Усі цифри нижче – про бота, а не про бізнес клієнта.
МетрикаЗначенняЩо це означає
Частин аудіокниги10Кожну відкриває кнопка, а якщо натиснути зарано, бот дошле частину сам
Статусів клієнта9Від «Слухача» до «Клієнт: На сервісі», синхронізація з CRM в обидва боки
Нагадування про сервіс170 днівПісля монтажу бот сам повертає клієнта на обслуговування
Звіт якостіщотижняШІ-суддя перечитує діалоги й надсилає керівнику проблемні з цитатою
Автотестів655Логіка воронки, статусів і словників покрита тестами
Фраз у корпусі перевірки~120Справжні фрази клієнтів, на яких перевірялися словники наміру
Раундів зовнішнього ревю2Другий прохід знайшов шість регресій, внесених першим
Етапів2 з 2Обидва прийнято замовником

Джерела: код бота, автотести, історія розробки

Стек бота: Telegram Bot API, grammY, Node.js, TypeScript, OpenAI API, Supabase, гугл таблиця, RO App API, Vercel
Стек. Telegram Bot API і grammY, OpenAI API, Supabase з pg_cron для таймерів, гугл таблиця, RO App API з вебхуками, Vercel.
06

Що було складно

Найважче виявилось там, де здавалося, що це «просто список слів». Двічі поспіль ламалися словники, які визначають намір клієнта, хоча складнішими здавалися таймери й паралельні запуски. Саме там автоматика щось вирішує про людину, і саме там помилку найважче помітити.

Гео-фільтр бачив міста там, де їх нема

Фільтр «чуже місто» мав відсіювати клієнтів, до яких компанія не доїде. А ловив «сніжинки на склянці» (всередині сидить «Ніжин»), «номер київстар» і «на рівне місце під мийкою».

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

Відмова, яку не можна скасувати

Автовідмова реагувала на «не хочу поки, послухаю далі», «не треба мені дзвонити, пишіть тут», «не потрібен монтаж, сам поставлю» і ставила «Відмову» назавжди. Окремої кнопки, щоб менеджер це виправив, не було: єдина команда заразом надсилала клієнтові наступну частину книги повз його клік.

Висновок: рішення автоматики про людину мають бути зворотними. Менеджеру потрібна окрема дія «зняти статус» без побічних ефектів.

Правки, які зламали протилежне

Після першого раунду виправлень з'явилися дзеркальні помилки: «хочу купити фільтр для води» і «беру на дачу» перестали бути гарячими, бо «вода» й «дача» стали блокаторами. А «не пишіть мені більше» і «не потрібно, у нас вже встановлено» перестали бути відмовою.

Висновок: ревю свіжими очима треба робити двічі – на код і на правки після першого ревю. Другий прохід знайшов шість регресій, внесених першим. Усе це спіймали до того, як помилку побачив бодай один клієнт.

07

Що отримав клієнт

  • Менеджер підключається, коли клієнт уже готовий. Про воду розповідає і веде людину книгою бот, а менеджер отримує сповіщення з підсумком від ШІ і посиланням на чат
  • Команда сама править бота. Тексти, ціни, базу знань, анкети й паузи – у гугл таблиці, без програміста
  • Усе видно в CRM. Лід із чату чи форми сайту, статус, наряд при оплаті, нагадування про сервіс через 170 днів
  • Консультант відповідає тільки з бази. Кожне число звіряється з рядком таблиці, решта йде менеджеру
  • Раз на тиждень – звіт якості. Керівник бачить проблемні діалоги з цитатою і не перечитує все підряд
  • Інструкція для команди – як надсилати клієнту посилання, міняти частини аудіо й додавати менеджерів
08

Що з цього взяти собі

  • Рішення автоматики про людину мають бути зворотними. Якщо бот поставив статус, менеджер має зняти його одним рухом, без побічних ефектів
  • У відмові й географії хибне спрацювання дорожче за пропуск. Краще пропустити, ніж відштовхнути живого клієнта
  • Словник – тимчасова заглушка. Він доживає до ШІ-шару, тому писати його варто так, щоб ШІ став поруч і словник лишився запасним варіантом
  • Ревю – двічі. Перший раз на код, другий – на правки після першого ревю
  • Адмінкою може бути таблиця. Якщо команда вже живе в гугл таблицях, окрема панель лише додасть навчання

Схожого бота під ваш продукт оцінюю після брифа: строк і ціну називаю в той самий день.

Часті питання

Чи можна взяти свій контент замість аудіокниги?

Так. Частини менеджер завантажує прямо в чат бота, підписи й тексти до них лежать у таблиці. Логіка кнопок, нагадувань і статусів лишається та сама.

Що буде, якщо клієнт питає те, чого нема в базі?

Бот не вигадує відповідь. Він передає питання менеджеру з посиланням на чат, і менеджер відповідає сам. Якщо таке питання повторюється, команда дописує рядок у «Базу знань», і далі бот відповідає сам.

Чи підійде інша CRM?

Тут це RO App, з якою бот синхронізується в обидва боки. Якщо у вашої CRM є API, підключення будується за тим самим принципом: ліди, статуси й наряди лягають у її поля.

Хто править тексти після запуску?

Команда замовника, у гугл таблиці. Бот перечитує її сам за кілька хвилин, програміст для цього не потрібен.

Потрібен бот для продажів – напишіть три речення

Що продаєте, звідки приходять клієнти і в який момент їх має підхопити менеджер. Цього досить, щоб я сказала, як розкласти це на бота і скільки він коштуватиме. Відповідаю в той самий день.

Наступний кейс Дашборд витрат — собівартість кожної книжки