О чём этот бот и зачем он нужен
Я много лет работаю продактом и давно заметил одну вещь: люди (и я в том числе) постоянно срывают маленькие, но важные цели. Зарядка по утрам, чтение, пет-проект, ранний подъём. Вроде хочешь, а через неделю бросаешь.
Проблема не в отсутствии мотивации. Проблема в том, что:
-
Один пропуск обесценивает всё. Держишь серию 14 дней, потом срыв — и кажется, что всё насмарку. Проще удалить приложение, чем видеть ноль.
-
Слишком сложно. Большинство трекеров привычек перегружены: кучи настроек, графиков, категорий. На входе — порог, а не помощь.
-
Давление. Многие приложения кричат «ты должен», «не сдавайся». Это работает, пока есть силы. Когда сил нет — вызывает отвращение.
Я подумал: а можно сделать проще? Чтобы система не добивала, когда ошибся, а мягко напоминала и позволяла вернуться без чувства вины.
Так появился Консильери — Telegram-бот для дисциплины.
Как он работает (JTBD)
Бот решает одну конкретную задачу: помочь человеку не бросать начатое, делая маленькие шаги без давления.
Сценарий простой:
-
Пользователь выбирает один фокус на день (например, «10 минут зарядки» или «1 страница книги»).
-
Утром бот присылает напоминание.
-
Вечером спрашивает: «Как прошло?» и предлагает три варианта: ✅ сделано, 🌓 частично, 😕 не сделано.
-
Ведёт статистику, считает серию, даёт награды за достижения.
Главное отличие от других трекеров: здесь нет наказания за пропуск. Если сорвался — бот говорит: «бывает, завтра новый день». Серия обнуляется, но ты не чувствуешь себя лузером. Можно начать заново.
Потом, из общения с пользователями, добавились фичи, которые закрывают конкретные боли:
-
Дни отдыха. Жизнь случается: праздники, болезни, просто усталость. Можно взять паузу, не ломая серию. За 30 дней подряд открывается третий день отдыха в месяц.
-
Частичное выполнение. Если сделал не всё, но что-то — это засчитывается в серию. Мозг не видит «провал», а видит «прогресс».
-
Челленджи. Для тех, кому скучно — 14, 21 или 30 дней без пропусков с наградами.
-
Тотемные животные. По статистике бот определяет твой «дух»: черепаха, волк, лев, орёл. Оказалось, люди любят смотреть на себя через такие метафоры.
Сейчас ботом пользуются больше 130 человек. 15-25 активных чекинов в день. Цифры скромные, но для меня это живой эксперимент: я вижу, как люди реально используют продукт, что им помогает, а что нет.
Как ИИ помогал (и мешал)
Основной инструмент — Perplexity, иногда Claude. Работа строится так: я формулирую задачу, получаю код, тестирую, правлю, снова тестирую.
Сначала казалось, что это просто: «нейросеть всё напишет». На практике вышло иначе. MVP ии пишет норм, а когда заходит речь о продукте с нагрузкой и пользователями — нужно еще проделать 80% дополнительной работы.
Что работало хорошо:
-
Рутинные вещи: функции для работы с БД, простые хендлеры, миграции — ИИ делает быстро и без ошибок.
-
Рефакторинг: когда нужно переписать кусок кода под новые требования, нейросеть неплохо справляется.
-
Поиск багов: иногда проще скормить лог ошибки и попросить объяснить, чем самому гуглить.
Что было сложно:
-
Длинные диалоги. Perplexity начинает тупить, теряет контекст, приходится переоткрывать треды. В итоге сформировал большой файл со всеми вводными, правилами и контекстом и скармливаю. когда открываю новый тред.
-
Нейросети любят выдумывать функции, которых нет. Пару раз пытался запустить код, а он падал, потому что ИИ использовал несуществующий метод.
-
Архитектурные решения. Когда дело дошло до FSM с несколькими состояниями, нейросеть путалась в последовательности. Пришлось самому рисовать схему и уже по ней править код.
- Главная проблема, которую я порешал жестким «не пытайся мне угодить, отвечай честно и объективно» — его дурацкие реплики как я классно придумал и бросание во все тяжкие, что бы я не выдумал.
И главный лайфхак, до которого сам дошел: после того, как все сделано, ии все проверил, тесты прошли (ии любит все «мОкать», все с виду в целом хорошо — нужно закинуть полностью весь код в другую ИИ для проверки, совсем без контекста — тут вываливается, как правило, кучу сюрпризов)
Конкретный пример: баг с вечерними уведомлениями
После одного из обновлений бот начал отправлять вечерние сообщения каждую минуту. Пользователи молчали (или не замечали), но в логах был ад. Оказалось, я забыл обновлять поле last_checkin_reminder_sent после отправки. ИИ эту ошибку не заметил, хотя код выглядел логично. Пришлось лезть в логи самому и разбираться.
Потом добавил тест, который проверяет, что после отправки поле обновляется. Больше эта ошибка не возвращалась.
Ещё один случай: feature flags
Реферальная система открывает доступ к фичам после трёх приглашённых друзей. Изначально я использовал один ключ message_style и для флага доступа, и для хранения текущего стиля. При смене стиля доступ пропадал. ИИ предложил разделить на styles_unlocked и current_style. Сработало.
Сейчас в БД у пользователей JSON-поле с фичами. Для 130 человек — норм, для 1000 — возможно, придётся переделывать. Посмотрим.
Что с тестами
Когда кода стало много, перестал понимать, что ломается. Постепенно написал 90 автотестов. Не идеально, но базовые сценарии покрывают.
Пример из тестов
async def test_challenge_done_victory(monkeypatch):
challenge_data = {'level': 'easy', 'current_day': 13, 'partial_used': 0} async def mock_get_active(*args): return challenge_data monkeypatch.setattr('bot.get_active_challenge', mock_get_active) # ... ended, msg = await process_challenge_checkin(123, "done") assert ended is True
Проверяем, что при выполнении всех условий вызов завершается с победой. Без такого теста баги в логике челленджей могли жить долго.
Цифры на сегодня
Пользователей: 130+ (кто хоть раз заходил)
Активных в день: 15-20
DAU: около 15%
Конверсия онбординга: 95%
Adoption фактов: 70% включили
Retention после 7 дней падает — это главная проблема. Сейчас думаю, как мягко возвращать людей без спама. Streak freeze, напоминания через день, может быть, что-то ещё.
Что дальше
Планы на ближайшие месяцы:
-
миграция с SQLite на PostgreSQL (чтобы не думать о масштабировании)
-
веб-панель со статистикой (чтобы можно было смотреть прогресс не только в телефоне)
-
английская локализация (попробовать зайти на Reddit)
Но главное — слушать пользователей. В боте есть /feedback, каждое сообщение приходит мне. Из таких фидбеков родились дни отдыха, челленджи, тотемные животные. Без обратной связи продукт мёртв.
Если интересно
Бот живёт тут: @focuscompanion_bot
Про разработку и метрики пишу в канале: @discipline_bot_consigliere
Буду рад любой обратной связи — идеям, критике, баг-репортам. Это реально помогает.