За первый месяц работы сайт chatterboxschool.ru принёс 11 заявок через форму записи, и по каждой видно, откуда человек пришёл. Внутри той же системы живут 675 учеников, 102 группы, 910 занятий в расписании и вся история оплат, перенесённая из таблиц.
Chatterbox School — языковая школа в Улан-Удэ: английский для детей и взрослых, китайский, корейский, онлайн-обучение и подготовка к экзаменам. До проекта у школы было то, что есть у большинства небольших образовательных бизнесов: страница в соцсетях, звонки, мессенджеры и несколько таблиц, в которых администраторы вели учеников и оплаты.
Задача звучала просто: нужен сайт, который приводит заявки. Но довольно быстро стало понятно, что сайт без системы, в которую эти заявки попадают, проблему не решает. Поэтому в итоге получилось два продукта, которые работают как один.
// Почему не готовая CRM
Первый вопрос, который мне задают про такие проекты: зачем писать своё, если есть amoCRM, Bitrix и специализированные системы для школ. Короткий ответ: школе нужна была не «CRM вообще», а её конкретные процессы.
- Ученик может ходить в несколько групп, платить помесячно или за пакет занятий, иметь скидку или бартер.
- Администратору нужно видеть, кто в этом месяце уже оплатил, а кто нет, без ручной сверки таблиц.
- Заявка с сайта должна прийти вместе с согласием на обработку данных и с информацией об источнике, а не просто именем и телефоном.
Готовые системы закрывают это частично, а остальное приходится подгонять процессами вокруг программы. Своя система с AI-разработкой позволила сделать наоборот: программу под процессы школы.
// Сайт: одна задача — запись на консультацию
На сайте собраны все программы: английский, китайский, корейский, онлайн-формат, подготовка к экзаменам, преподаватели, отзывы и контакты. Но каждая страница ведёт к одному действию: записаться на бесплатную консультацию.
Форма короткая. Человек выбирает направление (дети, взрослые, корпоративное обучение, онлайн, экзамены, китайский, корейский), оставляет имя и телефон и даёт согласие на обработку данных. Версия согласия и время фиксируются в заявке, это важно для закона о персональных данных.
Технически это React с серверным рендерингом на Vite: страницы отдаются поисковикам уже готовыми, а не пустым каркасом, который нужно дорисовывать скриптом. Для регионального бизнеса, где значительная часть людей ищет школу через Яндекс и 2ГИС, это не мелочь.
// CRM: от заявки до ученика
Заявка с сайта сразу попадает в CRM. Дальше у неё понятный путь:
или → потерян (нет связи · цена · расписание · конкурент · отложил · не интересно)
Причина потери выбирается из списка, а не пишется свободным текстом. Через пару месяцев это даёт ответ на главный вопрос: почему люди, которые оставили заявку, не дошли до обучения. Если чаще всего это «расписание», нужна новая группа в удобное время, а не скидка.
У каждой заявки есть ответственный, дата следующего касания и история смены этапов. Для учеников отдельно ведутся группы, расписание по шаблонам, тарифы, скидки, ежемесячные начисления и платежи. Основа построена на tRPC, Drizzle ORM и MariaDB, с ежедневными резервными копиями и автоматической проверкой доступности.
// Откуда приходят заявки
Самая полезная часть CRM для собственника — атрибуция. По каждой заявке система сохраняет UTM-метки, страницу входа, источник перехода и идентификатор клика из рекламы, а затем определяет канал. Отдельно администратор отмечает, что ответил сам человек на вопрос «как вы нас нашли».
Это два разных взгляда, и они не всегда совпадают. В сентябре картина была такой:
Instagram — 3 · 2ГИС — 3 · прямые заходы — 3 · Яндекс — 1
Рекомендация — 4 · 2ГИС — 3 · другое — 2
Обратите внимание: «прямые заходы» по данным переходов и «рекомендация» по словам людей — во многом одни и те же клиенты. Им посоветовали школу, и они просто набрали адрес. Без вопроса про источник это выглядело бы как непонятный прямой трафик, и сарафанное радио, главный канал школы, осталось бы невидимым.
// Цифры первого месяца
Заявки распределились так: детские программы — 4, корейский — 2, китайский — 2, взрослые — 2, подготовка к экзаменам — 1. Для школы это сигнал: азиатские языки дают почти столько же интереса, сколько английский для взрослых, хотя на сайте они занимают меньше места.
Одиннадцать заявок — немного в абсолютных цифрах. Но это первый месяц работы сайта, и каждая из них теперь не теряется в мессенджере администратора, а лежит в системе с источником, направлением и следующим шагом.
// Самая трудная часть — не код, а данные
Больше всего времени ушло не на интерфейс, а на перенос истории. В таблицах школы были тысячи строк оплат за несколько лет: разные написания имён, сокращения, оплаты за двоих детей одним платежом. В CRM перенесено 2 748 платежей и обновлено 285 карточек учеников.
Здесь пригодилось правило, которое я теперь применяю во всех проектах: не связывать людей по похожести имени. Ученика и платёж объединяли только при совпадении телефона. Одиннадцать имён, которые не удалось подтвердить, остались на ручную проверку школе. Лучше одиннадцать вопросов администратору, чем один чужой платёж в карточке ученика.
// Где здесь AI
Весь проект — сайт, CRM, миграции данных, импорт оплат, тесты — сделан в связке с AI-агентами для разработки. Это позволило одному человеку закрыть объём, на который обычно собирают команду. В проекте 435 автоматических тестов, и каждое изменение перед выкладкой проходит их целиком.
При этом в самой CRM действует жёсткое правило: AI не отправляет сообщения клиентам и не меняет статусы сам. Он может подсказать, но решение и действие остаются за человеком. Для бизнеса, который работает с детьми и родителями, это принципиально.
// Что забрать себе
- Сайт без системы приёма заявок — половина работы. Считайте не визиты, а заявки с этапом и следующим шагом.
- Спрашивайте источник у человека. Аналитика переходов не видит рекомендации, а для локального бизнеса это часто главный канал.
- Фиксируйте причину потери списком. Через два-три месяца это лучший источник решений о продукте и расписании.
- При переносе данных сверяйте по телефону, а не по имени. Ошибка в чужом платеже стоит доверия клиента.
Нужен сайт с CRM под процессы вашей школы или сервиса? Расскажите, как сейчас устроены заявки, и я предложу, с чего начать.