Автофолоу-апы, которые не чувствуются автоматическими

WhatsApp-бот квалифицировал лидов, а CRM их организовывала, но в данных постоянно проявлялся один паттерн: значительная часть диалогов начиналась бодро и потом затихала. Кто-то спрашивал про расписание курсов, получал развёрнутый ответ, может быть, уточнял цены — и исчезал. Отдел продаж замечал эти мёртвые разговоры через день-два, отправлял ручной фоллоу-ап и иногда возвращал лида. Но «иногда» и «через день-два» — это не стратегия. Школе нужна была система, которая ловит молчание рано и реагирует до того, как клиент уйдёт.

Стек

  • FastAPI
  • Claude
  • OpenAI
  • Telegram

движок фоллоу-апов

Мы построили трёхступенчатый движок фоллоу-апов, который автоматически запускается, когда лид перестаёт отвечать в середине разговора. Первый толчок срабатывает через 7 минут — мягкое, контекстно-зависимое сообщение, отсылающее к тому, что человек только что обсуждал. Что-то вроде: «Кстати, хотел упомянуть, что в вечерней группе, про которую вы спрашивали, ещё есть места — подойдёт по графику?» Второй фоллоу-ап приходит через 24 часа с напоминанием ценности: релевантная деталь о программе, упоминание ближайшего дедлайна записи или ответ на вопрос, который обычно возникает на этом этапе. Третье и последнее сообщение уходит через 72 часа — дружелюбная нота «последнего шанса», которая не давит, а просто оставляет дверь открытой. Каждое сообщение генерируется Claude с использованием полного контекста диалога, чтобы фоллоу-апы ощущались как продолжение разговора, а не как заготовленный шаблон.

тайминг и задержка голосовых

Подобрать тайминг — самая чувствительная часть этой системы. Первая итерация использовала первый толчок через 3 минуты, и это ощущалось навязчиво — то самое сообщение, после которого хочется замьютить чат. Мы пробовали 15 минут — слишком пассивно для канала, где люди ждут почти мгновенных ответов. Отметка в 7 минут была настроена эмпирически по реальным паттернам диалогов: большинство вовлечённых клиентов отвечают в течение 5 минут, поэтому 7 минут — это уже за гранью, когда молчание скорее означает отвлечение, а не набор текста. Интервалы в 24 и 72 часа следуют той же логике — достаточно часто, чтобы оставаться на виду, достаточно редко, чтобы не казаться спамом. Каденс настраивается под каждую школу, но дефолты пришли из реальных данных, а не из догадок. Планирование работает на APScheduler внутри FastAPI-бэкенда, задачи фоллоу-апов хранятся в PostgreSQL, чтобы пережить перезапуски сервера.

Конвейер голосовых сообщений тоже встроен в эту систему. Когда клиент присылает голосовое вместо текста, мост на Baileys сохраняет аудиофайл на сервер, Whisper его расшифровывает, и расшифровка уходит в Claude для генерации ответа. Полный цикл — от получения голосового в WhatsApp до отправки ответа — занимает 3–5 секунд. В обычном мессенджере это нормально, но когда человек отправляет быстрое голосовое и пять секунд смотрит на крутящийся индикатор набора, это ощущается медленно. Мы пробовали отправлять короткое подтверждение («Получил ваше голосовое, секунду…») во время обработки, но это создавало свою неловкость — мета-сообщение о сообщении. В итоге оставили как есть, с активным индикатором набора во время обработки, что большинство пользователей воспринимают естественно. Не идеально, но альтернатива была хуже.

алерты по горячим лидам

Когда бот классифицирует лида как горячего — готового купить — система мгновенно отправляет уведомление в Telegram-группу отдела продаж через aiogram. Здесь важна была дедупликация. Сначала один и тот же лид триггерил несколько алертов: один раз при первичной классификации, ещё раз когда фоллоу-ап обновлял его статус, и иногда третий раз, если человек присылал ещё одно сообщение, подтверждающее намерение. Три пинга по одному и тому же человеку за час приучают команду игнорировать алерты — а это убивает смысл системы. Мы добавили cooldown уведомлений на лида: как только горячий алерт сработал, тот же лид не вызовет следующий в течение 4 часов, если только его статус действительно не изменится. Простое решение со значимым эффектом на то, насколько команда доверяет системе.

результаты

Результат измерим: лиды, которые раньше остывали, теперь возвращаются с заметно более высокой частотой, а отдел продаж тратит меньше времени на ручное пролистывание мёртвых диалогов в поисках людей, которым нужно написать. Систему этот рабочий процесс ведёт автономно. Честный вывод из этого проекта — про сдержанность. Автоматизация делает тривиально лёгкой отправку большего числа сообщений, быстрее, большему числу людей. Сложное — знать, когда не отправлять. Агрессивный каденс фоллоу-апов конвертирует пару дополнительных лидов в краткосроке, но сжигает репутацию номера телефона в долгосроке — а когда номер WhatsApp помечают как спам, восстановить его — кошмар. Каденс 7/24/72 консервативен по дизайну, и эта консервативность — фича, а не ограничение.