Бот для онлайн-школы — отдельная категория, где Telegram реально становится главной платформой обучения, а не «вспомогательным каналом для уведомлений». Лидген, прогрев, продажа, обучение, домашки, проверки, сертификат, ретеншн — всё это можно собрать так, что студент не уходит в стороннюю LMS и не теряется между WhatsApp, почтой и личным кабинетом. Разберём, что входит в типовой продукт, как считать экономику и где чаще всего ломается воронка.
Какие задачи закрывает бот для онлайн-школы
В порядке роста сложности и зрелости продукта:
- Лидген — квиз «какой курс подойдёт», запись на бесплатный вебинар, выдача лид-магнита.
- Прогрев — автоворонка из 5–9 касаний с кейсами, отзывами, преподавателями.
- Продажи и оплата — оффер, тарифы, рассрочка, подарки, дедлайн спецпредложения.
- Доступ к платному контенту — каналы и чаты по тарифу, подписка через Telegram Stars или ЮKassa.
- Расписание и напоминания — про уроки, дедлайны, эфиры, утренний дайджест дня.
- Уроки и материалы — структурированная подача через бот, Mini App или гибрид.
- Домашние задания — приём, проверка (автоматическая или куратором), обратная связь.
- Сообщества — чаты потоков, кураторы, нетворкинг, расписание группы.
- Геймификация — баллы, ачивки, стрики, лидерборд группы.
- Сертификаты — автогенерация PDF и публичная страница проверки по QR.
- Аналитика прогресса — для студента (dashboards) и для школы (cohort retention).
- Ретеншн и апсейл — следующий курс, скидка лояльности, продление подписки, реферальная программа.
Не всем нужен весь стек. Обычно на старте собирают «лидген + прогрев + оплата + уроки + домашки + чаты + напоминания» как ядро, а сертификаты, геймификацию и AI-проверку накручивают на втором этапе, когда воронка уже стабильна.
Воронка лида: квиз, вебинар, бесплатный урок
Бот закрывает три классических верхних канала EdTech, и каждый из них работает заметно лучше формы на сайте.
Квиз «какой курс вам подходит» — 5–8 вопросов с инлайн-кнопками, на выходе рекомендация направления и предложение записаться на консультацию или бесплатный урок. Конверсия из показа квиза в заявку — стабильно 18–35%, выше любой формы на лендинге. Каждый вопрос — отдельное сообщение с состоянием, ответы пишем в quiz_session, чтобы при выпадении пользователь смог продолжить с того же шага. Финальный экран — карточка курса с двумя кнопками: «Записаться на демо» и «Узнать подробнее».
Бесплатный урок или демо-занятие — самый сильный конвертер для языковых школ и творческих направлений. Ученик получает реальный мини-урок (15–25 минут видео + короткое задание + автопроверка) и видит формат. Конверсия в платный после качественного бесплатного урока — 12–22%, что в 3–5 раз выше, чем после простого PDF-магнита.
Запись на бесплатный вебинар — карточка эфира с датой, программой и кнопкой «Записаться». После записи бот добавляет напоминания: за сутки, утром в день эфира, за час, за 10 минут со ссылкой на трансляцию. Для intensive-формата — пинг каждые 30 минут в день эфира с обратным отсчётом. После вебинара рассылка записи в течение часа и спецпредложение на 24–72 часа с убывающей скидкой.
| Канал лидгена | Конверсия в заявку | Стоимость лида | Прогрев нужен |
|---|---|---|---|
| Квиз в боте | 18–35% | низкая | да, 3–5 касаний |
| Бесплатный урок/демо | 30–55% забирают, 12–22% покупают | средняя | да, серия после демо |
| Запись на бесплатный вебинар | 25–40% от регистрации в просмотр | средняя | да, серия после эфира |
| PDF лид-магнит | 60–80% забирают, 5–10% покупают | низкая | да, длинная серия |
| Прямой оффер «купить курс» | 1–3% | низкая | нет, но дорого |
| Консультация с менеджером | 8–15% доходимость | высокая | короткая, 2 касания |
Прогрев: автоворонка серии писем
Прогрев — это последовательность сообщений, отправляемых по таймеру или по событию (квиз пройден, демо-урок завершён, лид-магнит скачан). Оптимальная длина для среднего чека 30–80 тысяч ₽ — 7–9 касаний за 10–14 дней. Каждый шаг описывается записью в БД:
# Псевдокод шага автоворонки
{
"funnel_id": "warmup_english_a2",
"step": 4,
"delay_after_prev": 86400, # секунды от предыдущего шага
"send_window": [9, 21], # часы по таймзоне студента
"message_template": "case_alex.md",
"media": ["video/case_alex.mp4"],
"buttons": [
{"text": "Хочу так же", "callback": "step:4:cta"},
{"text": "Подробнее о курсе", "url": "https://t.me/school_bot?start=course_a2"}
],
"skip_if_tag": ["bought", "unsubscribed"]
}
Сценарии, которые обязательно должны быть в воронке:
- кейс выпускника с цифрами «до/после» (для языковой школы — уровень CEFR + видео-интервью);
- знакомство с преподавателем (видео-визитка 60–90 секунд, желательно с акцентом на методологию);
- разбор частых возражений (FAQ-разворот: «у меня нет времени», «я уже пробовал», «дорого»);
- бесплатный мини-урок как пример качества контента;
- отзывы текущего потока с фото, должностью, городом;
- дедлайн спецпредложения за 48–24–6 часов с обратным отсчётом.
skip_if_tag критичен: после покупки человек должен мгновенно вылететь из прогрева, иначе будет получать «купите наш курс» уже будучи студентом — самый раздражающий баг EdTech и главная причина отписок.
Продажи: тарифы, оплата, подписка
Тарифная сетка в EdTech почти всегда трёхуровневая. Бот показывает её одним сообщением с тремя кнопками — длинные простыни в чате не работают.
| Параметр | Базовый | Стандарт | Премиум |
|---|---|---|---|
| Доступ к урокам | 6 месяцев | 12 месяцев | бессрочно |
| Чат потока | да | да | + закрытый чат с преподавателем |
| Проверка ДЗ | автопроверка | куратор за 48 ч | личный куратор + 1×1 созвон |
| Обратная связь | общая | в течение 48 ч | в течение 24 ч |
| Сертификат | электронный | электронный + PDF | + рекомендательное письмо |
| Гарантия результата | нет | нет | да, в договоре |
| Цена | от | х 1.7 | х 3.0 |
Тариф — атрибут заказа, не пользователя. Студент может купить «стандарт», потом доплатить до «премиума» — это два отдельных платежа на один enrollment_id, с пересчётом разницы и логированием апгрейда.
Способы оплаты и подписка
| Метод | Комиссия | Подходит для | Особенности |
|---|---|---|---|
| ЮKassa (карта + СБП) | 2.4–2.8% | основная масса оплат | стандарт, рекуррент опционально |
| СБП напрямую | 0.4–0.7% | мобильные, средний чек | требует своего шлюза |
| ЮKassa рекуррент | 2.8–3.2% | подписочные модели | автосписание раз в месяц/неделю |
| Telegram Stars | 30% Telegram | микро-курсы, доступ к контенту | без вывода в РФ напрямую |
| Долями (BNPL 4 платежа) | 4–6% | чек 5 000–60 000 ₽ | без процентов клиенту |
| Тинькофф рассрочка 3–24 мес | банк удерживает 7–18% | чек 30 000–300 000 ₽ | нужна анкета и КИ |
| Halva от Совкомбанка | 5–10% магазину | средний чек | карта Halva у клиента |
| Ручной счёт от ИП/ООО | 0% эквайринга | корпоративная оплата | долго, нужен договор |
Подписочная модель (доступ к библиотеке уроков с автопродлением) реализуется через рекуррентные списания ЮKassa: при первой оплате клиент даёт согласие на автосписание, дальше бот раз в период инициирует списание и обрабатывает результат. За 3 дня до списания — напоминание с кнопкой «отменить подписку», иначе чарджбеки и злость в отзывах.
Доступ к платному контенту
Базовый сценарий — после оплаты курса пользователь добавляется в закрытый канал/чат через одноразовую ссылку (createChatInviteLink с member_limit: 1). При окончании доступа — banChatMember плюс unbanChatMember, чтобы можно было снова вступить после оплаты.
Бот должен быть админом канала с правами «приглашать» и «банить». Обязательно регулярная сверка списков участников канала с активными подписками, чтобы не было «зайцев»: каждые 6 часов фоновая задача читает getChatMember для каждого студента и сверяет с таблицей enrollments. Расхождения логируются и обрабатываются вручную (часто это перевод на другой тариф или пропущенный возврат).
Проверка доступа к конкретному уроку — горячая операция, вызывается на каждый клик «Открыть урок» в Mini App или боте. Кэшируем агрессивно, инвалидируем по событию оплаты или окончания подписки:
async def can_access_lesson(user_id: int, lesson_id: int) -> bool:
cache_key = f"access:{user_id}:{lesson_id}"
cached = await redis.get(cache_key)
if cached is not None:
return cached == "1"
enrollment = await db.fetchrow(
"""
SELECT e.tariff, e.expires_at, l.tariff_required, l.released_at
FROM enrollments e
JOIN lessons l ON l.course_id = e.course_id
WHERE e.user_id = $1 AND l.id = $2 AND e.status = 'active'
""",
user_id, lesson_id,
)
if not enrollment:
ok = False
elif enrollment["expires_at"] and enrollment["expires_at"] < datetime.utcnow():
ok = False
elif enrollment["released_at"] > datetime.utcnow():
ok = False # урок ещё не открыт по расписанию потока
else:
ok = TARIFF_LEVEL[enrollment["tariff"]] >= TARIFF_LEVEL[enrollment["tariff_required"]]
await redis.setex(cache_key, 300, "1" if ok else "0")
return ok
Уроки, материалы и подача через бот
Тут есть выбор:
- Чисто бот — последовательность сообщений с текстом, видео и PDF. Подходит для микро-курсов и марафонов до 10–15 уроков.
- Mini App — полноценный «личный кабинет студента» с разделами, прогрессом, конспектами. Подходит для серьёзных курсов на 30+ часов.
- Гибрид — бот ведёт коммуникацию (напоминания, домашки, чат), Mini App показывает уроки и прогресс. Самый частый вариант для зрелых школ.
Видео обычно лежат не в Telegram, а на CDN (отдельный плеер в Mini App, чтобы не упереться в лимиты Telegram на размер файлов и не тормозить мобильных пользователей). Текстовые конспекты дублируют видео для тех, кто учится с телефона в шумных местах. Тесты после урока удобно делать поллами Telegram (sendPoll с is_anonymous=False, type='quiz') — у них есть встроенная проверка ответа и аналитика прохождения.
Расписание, напоминания и реактивация
Самая дешёвая вещь, которая поднимает completion rate на 15–25%, — это умные напоминания. Минимальный набор:
- Утренний дайджест — в 9:00 по таймзоне студента: «сегодня урок 7, длительность 22 минуты, дедлайн ДЗ — завтра 23:59».
- За час до занятия — для групповых живых уроков и эфиров.
- Через 10 минут после старта — если студент ещё не открыл урок.
- За 24/6/1 час до дедлайна ДЗ — с прямой кнопкой «Открыть задание».
- Reactivation спящих — если студент не заходил 5 дней, бот пишет «вы остановились на уроке X, продолжим?». Через 14 дней — оффер «заморозить курс на месяц». Через 30 дней — личный куратор с разбором причин.
Все напоминания учитывают таймзону студента (хранится в профиле, при первом контакте определяется по language_code и уточняется в боте) и тихий час 22:00–9:00 — иначе просыпаешься в 6 утра от «дедлайн через час» и отписываешься.
Домашние задания и AI-проверка
Самая ценная часть после контента. Бот умеет:
- отдавать задание и принимать ответ (текст, фото, файл, voice, ссылка);
- разбивать одно задание на несколько шагов;
- автоматически проверять простые форматы (тесты, ключи, регулярки);
- передавать сложные ответы куратору на проверку с очередью и SLA;
- собирать дедлайны и напоминать о них;
- вести историю проверок и комментариев в одном треде.
Для языковых школ отдельно работает AI-проверка voice-сообщений: транскрипция через Whisper, сравнение с эталоном, оценка произношения через специализированные API (например, Speechace или Azure Pronunciation Assessment). Студент записывает фразу — бот возвращает оценку 0–100 по словам, подсвечивает проблемные звуки и предлагает повторить. По нашим замерам, такая обратная связь поднимает completion rate в speaking-курсах на 30–40% против «куратор послушает в течение 48 часов».
Маршрутизация ответов:
@router.message(StudentStates.HOMEWORK_SUBMIT)
async def receive_homework(msg: Message, state: FSMContext):
data = await state.get_data()
lesson_id = data["lesson_id"]
enrollment = await db.get_enrollment(msg.from_user.id, lesson_id)
submission_id = await save_artifacts(msg, lesson_id)
if enrollment.tariff == "basic":
await tasks.enqueue("autocheck", submission_id)
elif msg.voice and enrollment.course_type == "language":
await tasks.enqueue("ai_pronunciation_check", submission_id)
else:
await tasks.enqueue("route_to_curator", submission_id, enrollment.curator_id)
await msg.answer("ДЗ принято. Результат пришлёт бот в течение 48 часов.")
await state.clear()
Без дедлайнов и напоминаний завершаемость курса падает в 2–3 раза — это самое дешёвое улучшение программы из возможных.
Геймификация: стрики, баллы, лидерборд
Несколько простых механик, дающих заметный прирост вовлечения:
- Баллы за выполненные задания, активность в чате, просмотренные уроки;
- Стрики — «5 дней подряд занимался» с visual-счётчиком и бонусом за 7/14/30 дней;
- Бейджи и ачивки в профиле («первая сданная домашка», «без пропусков 2 недели», «лучший по speaking»);
- Лидерборд группы или потока — обновляется раз в день, показывает топ-10 и место текущего студента;
- Мини-награды — доступ к бонусным урокам, скидка на следующий курс, мерч.
Важно не переборщить: геймификация должна усиливать обучение, а не отвлекать. Лидерборд хорошо заходит на коротких марафонах (до 4 недель) и плохо на длинных полугодовых программах, где постоянное «вы 47-й из 200» демотивирует средний сегмент. Для длинных курсов лучше работает персональный progress bar и стрики без публичного сравнения.
Чат-канал группы, куратор, расписание
Параллельно с уроками работает чат потока с куратором. Куратор в боте получает:
- ленту новых тикетов и вопросов с тегами по темам;
- кнопки «Ответить», «Передать», «Закрыть», «Эскалировать преподавателю»;
- SLA-таймер по тарифу (24 часа в стандарте, 4 часа в премиуме);
- автоматическую перекидку дежурства при разнице таймзон ±5 часов;
- дайджест на утро: «вчера: 12 ответов, среднее время 38 минут, 2 эскалации».
В чате потока бот публикует расписание недели (закреплённое сообщение, обновляется автоматически), напоминания о ДЗ, объявления преподавателя и поздравления выпускников. Без модерации (антиспам, фильтры мата, лимит сообщений в минуту) токсичные участники быстро убивают атмосферу — модерация обязательна с первого дня.
Сертификаты с QR-проверкой
Сертификат должен выдаваться автоматически при выполнении 80% программы (порог настраивается). PDF содержит имя студента, название курса, даты, подпись преподавателя, уникальный cert_id и QR-код со ссылкой на публичную страницу проверки. Публичная страница /cert/cert_id — обязательна, на ней имя выпускника, курс, даты, кнопка «скачать PDF». Без публичной проверки сертификат теряет смысл для HR.
Тонкий момент: сертификаты «государственного образца» можно выдавать только при наличии лицензии Рособрнадзора. Большинство EdTech продаёт «информационно-консультационные услуги» и выдаёт сертификат школы — это законно при правильно прописанной оферте.
Платформы и интеграции
Чаще всего онлайн-школа уже работает на готовой LMS, и бот ходит к ней через API. Карта совместимости:
| Платформа | API | Webhooks | Особенности | Зрелость интеграции |
|---|---|---|---|---|
| GetCourse | REST + экспорт CSV | ограниченные | большая аудитория, медленный API | высокая |
| Skillbox-style LMS | REST | да | для крупных школ, гибкие тарифы | высокая |
| AntiTraining | REST | базовые | сильна воронками, средний LMS | средняя |
| Tilda Education | REST через Zapier | через Zapier | простой старт, ограниченный LMS | средняя |
| Bizon365 | REST | да | силён вебинарами и автовебинарами | высокая |
| Moodle | REST + LTI | через плагин | open-source, академия | высокая |
| iSpring Learn | REST | да | корпоративное обучение | высокая |
| amoCRM | REST | да | CRM-слой поверх любой LMS | высокая |
| Битрикс24 | REST | да | CRM плюс порталы | высокая |
Универсальное правило: у школы всегда есть внутренняя БД студентов и заказов, а синхронизация с LMS/CRM идёт асинхронно (очередь плюс ретраи). Если GetCourse упал на час, бот продолжает принимать оплаты и ставит задачи в очередь, синхронизация догоняется потом. Прямой синхронный «создать заказ в GetCourse при оплате» — гарантированный downtime школы при любой проблеме у платформы.
Ретеншн и апсейл
EdTech живёт повторными покупками. Студент, прошедший один курс, в 4–7 раз дешевле в привлечении на второй, чем холодный лид.
- через 7 дней после получения сертификата — рассылка про следующий курс с предзаказной скидкой 15–25%;
- через 30 дней — приглашение в клуб выпускников (закрытый чат, ежемесячные эфиры);
- скидка лояльности — автоматически 10–20% всем выпускникам на любой курс школы;
- продление подписки на платформу или клуб — за 14 дней до окончания напоминание с кнопкой «продлить со скидкой 30%»;
- реферальная программа — выпускник приводит друга, получает 10% от его оплаты бонусами.
Сегментация обязательно по специализации: выпускник «английского A2» хорошо берёт «английский B1», но плохо — «бизнес-английский» с другим преподавателем. Без сегментации рассылки превращаются в спам и выжигают базу.
Метрики онлайн-школы
| Метрика | Формула | Норма для EdTech |
|---|---|---|
| Conversion в платный | купили / лиды | 3–8% (холодный трафик), 12–22% (после демо) |
| Course completion rate | прошли 80% / купили | 25–45% (без бота), 40–65% (с ботом) |
| Lesson drop-off | ушли после урока N / дошли | плавная кривая без обрывов |
| Homework submission rate | сданные ДЗ / общее число | 50–80% |
| Retention по неделям курса | активны на неделе N / стартовали | 75% на неделе 2, 50% на неделе 6 |
| NPS курса | (промоутеры − критики) / всего × 100 | 40 и выше |
| Retention на следующий курс | купили второй / получили сертификат | 15–30% за 90 дней |
| LTV студента | сумма всех покупок | средний чек × 1.4–2.2 за 12 мес |
| ROI на лида | (выручка − затраты) / затраты × 100 | 150% и выше |
| Cost per Lead | бюджет / лиды | от 50 до 800 ₽ по каналу |
Когортный анализ retention по урокам — самая полезная картинка. Если на уроке 4 «обрыв» 30% — там либо плохой контент, либо слишком сложная домашка, либо технический баг с воспроизведением видео. Без когорт это не увидеть.
Чек-лист готовности школы к запуску
- Согласие на ПДн собирается до первой реальной обработки, версия и
consent_atв БД. - Уведомление оператора ПДн подано в РКН.
- Уведомление о трансграничной передаче (Telegram) подано в РКН.
- Оферта на оказание услуг опубликована и принимается до оплаты.
- Все три тарифа имеют разные
entitlementsв БД, не «один прайс с примечанием». - Оплата через ЮKassa плюс СБП плюс Долями плюс Тинькофф рассрочка.
- Webhook оплаты идемпотентный (уникальный индекс по
payment_id). - После оплаты студент в течение минуты получает доступ к каналу и первому уроку.
- Автоворонка прогрева имеет
skip_if_tag = ['bought']. - ДЗ принимается во всех форматах (текст/фото/файл/voice) и сохраняется в S3.
- Дедлайны ДЗ имеют напоминания за 24/6/1 час с учётом таймзоны.
- Очередь куратора с SLA-таймером и эскалацией на дежурного.
- Сертификат генерируется автоматически при 80%+ выполнения.
- Публичная страница проверки сертификата по QR работает.
- Reactivation спящих студентов через 5/14/30 дней.
- Сегментированные рассылки выпускникам с отпиской.
- Аналитика по когортам, completion, NPS, ROI канала.
Итого
Бот для онлайн-школы — это сквозная воронка от лид-магнита до сертификата и апсейла, а не просто канал уведомлений. Ядро — лидген (квиз, бесплатный урок, вебинар), прогрев, оплата с тремя тарифами и рассрочкой, доступ к закрытому контенту, домашние задания с автопроверкой и AI-проверкой voice, чаты потоков, сертификаты с QR-проверкой и сегментированный ретеншн. На зрелом продукте бот становится главной платформой студента, а LMS остаётся бэкендом для админов и методологов. Сроки разработки — 4–8 недель для типового набора, бюджет обычно 250 000–800 000 ₽ в зависимости от глубины Mini App, количества интеграций и сложности геймификации.
Частые вопросы
Какие задачи закрывает Telegram-бот для онлайн-школы?
Сквозная воронка от лид-магнита до апсейла: лидген (квиз «какой курс подойдёт», бесплатный урок/демо, запись на бесплатный вебинар, выдача PDF), прогрев автоворонкой из 7–9 касаний, продажа с тремя тарифами и рассрочкой (Долями, Тинькофф, Halva), доступ к платному контенту через закрытые каналы и подписку (Telegram Stars, ЮKassa рекуррент), расписание и напоминания с учётом таймзоны, уроки и материалы (бот, Mini App или гибрид), приём и проверка домашних заданий с AI-проверкой voice для языковых школ, чаты потоков с куратором, геймификация, автогенерация сертификатов с QR-проверкой, ретеншн с апсейлом следующего курса.
Как устроен лидген через бот для онлайн-школы?
Три классических верхних канала. Квиз «какой курс вам подходит» из 5–8 вопросов с инлайн-кнопками — конверсия в заявку 18–35%. Бесплатный урок или демо-занятие с реальным мини-уроком и автопроверкой — конверсия в платный после качественного демо 12–22%, в 3–5 раз выше PDF-магнита. Запись на бесплатный вебинар с напоминаниями за сутки, утром, за час и 10 минут до эфира, после эфира рассылка записи и спецпредложение на 24–72 часа с убывающей скидкой. После любого из трёх входов запускается автоворонка прогрева на 7–9 касаний за 10–14 дней.
Как работает оплата и подписка в боте онлайн-школы?
Тарифная сетка трёхуровневая (базовый, стандарт, премиум) показывается одним сообщением с тремя кнопками. Способы оплаты: ЮKassa (карта плюс СБП, 2.4–2.8%), СБП напрямую (0.4–0.7%), ЮKassa рекуррент для подписок, Telegram Stars для микро-курсов, Долями BNPL четырьмя платежами, Тинькофф рассрочка 3–24 месяца, Halva от Совкомбанка, ручной счёт от ИП/ООО для корпоративных оплат. Подписочная модель реализуется через рекуррентные списания: при первой оплате клиент даёт согласие, дальше бот раз в период инициирует списание. За 3 дня до списания обязательно напоминание с кнопкой «отменить подписку», иначе чарджбеки.
Как реализовать домашние задания и AI-проверку в боте?
Бот принимает ответ в любом формате (текст, фото, файл, voice, ссылка), сохраняет артефакты в S3, в БД пишет метаданные. Маршрутизация по тарифу: базовому — автопроверка (тесты, ключи, регулярки), стандарту и премиуму — куратор с лентой тикетов в админском чате и SLA-таймером (48 часов в стандарте, 24 в премиуме). Для языковых школ отдельно работает AI-проверка voice: транскрипция через Whisper, оценка произношения через Speechace или Azure Pronunciation Assessment, бот возвращает оценку 0–100 по словам и подсвечивает проблемные звуки. Такая обратная связь поднимает completion rate в speaking-курсах на 30–40%. Дедлайны ДЗ с напоминаниями за 24/6/1 час по таймзоне студента.
Как Telegram-бот интегрируется с GetCourse, Bizon365 и другими LMS?
Чаще всего школа уже работает на готовой LMS, и бот ходит к ней через API. Универсальное правило — обмен асинхронный, через очередь с ретраями. У школы всегда внутренняя БД студентов и заказов, а синхронизация с LMS идёт фоновой задачей. Совместимость: GetCourse (REST плюс экспорт CSV, медленный API, большая аудитория), Skillbox-style LMS (REST с webhooks, для крупных школ), AntiTraining (сильна воронками), Tilda Education (через Zapier), Bizon365 (силён вебинарами и автовебинарами), Moodle (open-source, REST плюс LTI), iSpring Learn (корпоративное). Сверху часто amoCRM или Битрикс24 как CRM-слой. Если LMS упала на час, бот продолжает принимать оплаты и ставит задачи в очередь.
Какие метрики отслеживать в боте онлайн-школы?
Conversion в платный (3–8% на холодный трафик, 12–22% после демо), course completion rate (25–45% без бота, 40–65% с ботом), homework submission rate (50–80%), retention по неделям курса (75% на неделе 2, 50% на неделе 6), NPS курса (норма 40+), retention на следующий курс (15–30% за 90 дней), LTV студента (средний чек × 1.4–2.2 за год), ROI на лида (150%+), Cost per Lead (50–800 ₽ по каналу). Самая полезная картинка — когортный анализ retention по урокам: если на уроке 4 «обрыв» 30%, там либо плохой контент, либо сложная домашка, либо баг с видео. Reactivation спящих через 5/14/30 дней дополнительно поднимает completion на 10–15%.
Как генерировать сертификаты автоматически и проверять их по QR?
Фоновая задача раз в день считает progress = выполненные уроки / всего для всех активных студентов. Если progress 80%+ и сертификата ещё нет — генерирует PDF из шаблона. PDF содержит имя студента, название курса, даты, подпись преподавателя, уникальный cert_id и QR-код со ссылкой на публичную страницу проверки. Студент получает PDF в бот плюс ссылку «проверить онлайн». Публичная страница /cert/cert_id показывает имя выпускника, курс, даты, кнопку скачать PDF — без неё сертификат теряет смысл для HR. Сертификаты «государственного образца» можно выдавать только при наличии лицензии Рособрнадзора; большинство EdTech продаёт «информационно-консультационные услуги» и выдаёт сертификат школы — это законно при правильно прописанной оферте.