Техническое задание · v1.0
Telegram-бот
«Пульс команды»
Инструмент ежедневного мониторинга для тимлидера риелторского агентства
Содержание
1. Суть продукта и цель 2. Роли и сценарии использования 3. Механика бота — полный флоу 4. Технический стек 5. Структура базы данных 6. Пошаговый план реализации 7. Промпты для Claude / ChatGPT 8. Как продать
1
Суть продукта и цель
Проблема

Тимлидер не знает в реальном времени — кто из агентов буксует, у кого горит сделка, кто на грани выгорания. Это становится известно когда уже поздно.

Решение

Telegram-бот который каждый вечер задаёт агентам 3 коротких вопроса (кнопками, 20 секунд), а утром присылает тимлидеру сводку по всей команде.

Никаких новых приложений. Никакой регистрации. Всё происходит в Telegram где агенты уже сидят.

Главная ценность: тимлидер каждое утро знает куда направить внимание — ещё до первого созвона.
Telegram Bot API Python / Node.js PostgreSQL / SQLite Cron-задачи MVP за 1–2 недели
2
Роли и сценарии использования
Роль Что делает Что получает
Агент Отвечает на 3 вопроса вечером. Нажимает кнопки в Telegram. Ощущение что его слышат. Нет лишней отчётности.
Тимлидер Получает утреннюю сводку. Видит кто не ответил и у кого проблемы. Понимание состояния команды без созвонов.
Директор (опционально) Получает недельный дайджест. Динамика команды за неделю одним сообщением.
3
Механика бота — полный флоу
Вечерний опрос агента — 18:00
1
Бот присылает первое сообщение
«Привет! Как прошёл день? Ответь на 3 вопроса — займёт 20 секунд 👇»
2
Вопрос 1 — Энергия дня
Кнопки: 🔥 Продуктивно / 😐 Средне / 😮‍💨 Тяжело
3
Вопрос 2 — Нужна помощь?
Кнопки: ✅ Всё ок / ⚠️ Есть вопрос / 🚨 Нужна помощь
4
Вопрос 3 — Заметка (необязательно)
«Одна фраза о дне — или нажми "Пропустить"»
Бот благодарит
«Готово, спасибо! Хорошего вечера 👋»
Напоминания если агент не ответил
19:00 — Первое напоминание
«Не забудь отметить день, пока не забылось 🙂»
20:00 — Последнее напоминание
«Последний шанс на сегодня — завтра уже не спрошу про этот день»
После 20:00 — Тишина
Бот больше не пишет до следующего дня. Агент отмечается как «не ответил».
Утренняя сводка тимлидеру — 9:00

Бот присылает одно сообщение:


📊 Команда вчера — 14 марта ✅ Ответили: 7 из 8 ❌ Не ответил: Дмитрий К. 🔥 Продуктивный день: 4 чел. 😐 Средне: 2 чел. 😮‍💨 Тяжёлый день: 1 чел. ⚠️ Нужна помощь / есть вопрос: → Марина С. — «застряла с документами по объекту на Ленина» → Олег Р. — отметил ⚠️ без комментария 💬 Заметки дня: → Анна: «закрыла сделку, клиент доволен 🎉» → Виктор: «показ прошёл хорошо, ждём решения»
ПРИМЕР СООБЩЕНИЯ
4
Технический стек
Компонент Технология Зачем
Язык Python 3.11+ Простой, быстро пишется, много примеров ботов
Telegram-библиотека python-telegram-bot v20 Лучшая библиотека для Telegram ботов на Python
База данных SQLite (MVP) → PostgreSQL (продакшн) SQLite не требует сервера, идеально для старта
Планировщик задач APScheduler Отправка сообщений по расписанию (18:00, 19:00 и т.д.)
Хостинг Railway.app / Render.com Бесплатный тариф для MVP, деплой за 5 минут
Переменные окружения .env + python-dotenv Хранение токена бота и настроек
Альтернатива на Node.js: Telegraf.js вместо python-telegram-bot, node-cron вместо APScheduler. Логика та же — выбирай язык который знаешь лучше.
5
Структура базы данных
Таблица: users
id INTEGER PRIMARY KEY telegram_id INTEGER UNIQUE -- chat_id пользователя в Telegram name TEXT -- имя агента role TEXT -- 'agent' или 'leader' is_active BOOLEAN -- участвует ли в опросах created_at DATETIME
SQL SCHEMA
Таблица: responses
id INTEGER PRIMARY KEY user_id INTEGER -- FK → users.id date DATE -- дата опроса energy TEXT -- 'good' | 'ok' | 'bad' help_needed TEXT -- 'ok' | 'question' | 'urgent' note TEXT -- свободный текст (может быть NULL) answered_at DATETIME
SQL SCHEMA
Таблица: reminders
id INTEGER PRIMARY KEY user_id INTEGER -- FK → users.id date DATE -- дата reminder_num INTEGER -- номер напоминания (1, 2, 3) sent_at DATETIME
SQL SCHEMA
6
Пошаговый план реализации
Этап 1 — Подготовка (День 1)
Шаг 1.1
Создать бота через @BotFather в Telegram. Получить API токен.
Шаг 1.2
Создать проект: папка, виртуальное окружение Python, установить зависимости:
pip install python-telegram-bot apscheduler python-dotenv
Шаг 1.3
Создать файл .env с токеном. Создать структуру папок: /bot, /db, /scheduler.
Этап 2 — База данных (День 1–2)
Шаг 2.1
Написать db.py — инициализация SQLite, создание таблиц users, responses, reminders.
Шаг 2.2
Написать функции: add_user(), get_all_agents(), save_response(), get_responses_for_date().
Этап 3 — Команды бота (День 2–4)
Шаг 3.1
/start — регистрация пользователя. Бот спрашивает имя и роль (агент / тимлидер).
Шаг 3.2
Реализовать ConversationHandler — цепочку из трёх вопросов с inline-кнопками.
Шаг 3.3
Сохранять ответы в БД после завершения опроса.
Шаг 3.4
/report — команда для тимлидера: показать сводку за вчера вручную (для теста).
Этап 4 — Планировщик (День 4–6)
Шаг 4.1
Настроить APScheduler: задача в 18:00 — разослать опрос всем активным агентам.
Шаг 4.2
Задача в 19:00 — проверить кто не ответил, отправить первое напоминание.
Шаг 4.3
Задача в 20:00 — второе и последнее напоминание для не ответивших.
Шаг 4.4
Задача в 9:00 — сформировать и отправить сводку тимлидеру.
Этап 5 — Тест и деплой (День 7–10)
Шаг 5.1
Протестировать полный флоу самому — зарегистрироваться как агент и как тимлидер с двух аккаунтов.
Шаг 5.2
Задеплоить на Railway.app — бесплатно, деплой через GitHub в несколько кликов.
Шаг 5.3
Добавить имена реальной команды. Показать тимлидеру живой прототип.
7
Промпты для Claude / ChatGPT

Копируй эти промпты по порядку когда будешь реализовывать. Каждый промпт — один этап работы.

ПРОМПТ 1 — Структура проекта и база данных
Я разрабатываю Telegram-бота на Python для риелторского агентства. Бот называется "Пульс команды". Логика: каждый вечер бот опрашивает агентов (3 вопроса с кнопками), утром присылает тимлидеру сводку по команде. Создай структуру проекта и файл db.py с SQLite. Нужны три таблицы: 1. users (id, telegram_id, name, role, is_active, created_at) 2. responses (id, user_id, date, energy, help_needed, note, answered_at) 3. reminders (id, user_id, date, reminder_num, sent_at) Напиши функции: - init_db() — создание таблиц - add_user(telegram_id, name, role) - get_all_agents() — все активные агенты - save_response(user_id, date, energy, help_needed, note) - has_responded(user_id, date) — ответил ли агент сегодня - get_responses_for_date(date) — все ответы за дату - get_leader_ids() — telegram_id всех тимлидеров
ПРОМПТ 1 / 6
ПРОМПТ 2 — Команда /start и регистрация
Продолжаем разработку Telegram-бота "Пульс команды" на Python с библиотекой python-telegram-bot v20. Напиши обработчик команды /start. Логика: 1. Бот приветствует пользователя 2. Спрашивает имя (текстовый ввод) 3. Спрашивает роль — две кнопки: "Я агент" / "Я тимлидер" 4. Сохраняет пользователя в БД через add_user() 5. Подтверждает регистрацию разным текстом для агента и тимлидера Используй ConversationHandler с состояниями ASK_NAME и ASK_ROLE. Импорты и структуру файла handlers/start.py напиши полностью.
ПРОМПТ 2 / 6
ПРОМПТ 3 — Опрос агента (3 вопроса с кнопками)
Продолжаем бот "Пульс команды". Напиши handlers/survey.py. Нужна функция start_survey(context, telegram_id) которую будет вызывать планировщик вечером для каждого агента. Опрос — ConversationHandler с тремя шагами: Шаг 1 — сообщение: "Как прошёл день?" Inline-кнопки: "🔥 Продуктивно" (callback: energy_good) "😐 Средне" (callback: energy_ok) "😮‍💨 Тяжело" (callback: energy_bad) Шаг 2 — сообщение: "Нужна помощь или есть вопросы?" Inline-кнопки: "✅ Всё ок" (callback: help_ok) "⚠️ Есть вопрос" (callback: help_question) "🚨 Нужна помощь" (callback: help_urgent) Шаг 3 — сообщение: "Одна фраза о дне — или пропусти" Inline-кнопка: "Пропустить" (callback: note_skip) Или текстовый ввод. После завершения: сохранить ответы в БД, поблагодарить агента.
ПРОМПТ 3 / 6
ПРОМПТ 4 — Планировщик рассылки и напоминаний
Продолжаем бот "Пульс команды". Напиши scheduler/jobs.py с использованием APScheduler. Нужны 4 задачи по расписанию (временная зона Europe/Kiev): 18:00 — send_surveys() Получить всех активных агентов из БД. Для каждого кто ещё не ответил сегодня — запустить start_survey(). 19:00 — send_reminder_1() Агентам которые не ответили — отправить: "Не забудь отметить день, пока не забылось 🙂" Записать в таблицу reminders (reminder_num=1). 20:00 — send_reminder_2() Агентам которые всё ещё не ответили: "Последний шанс на сегодня — завтра уже не спрошу про этот день" Записать reminder_num=2. 09:00 (следующий день) — send_morning_report() Сформировать сводку за вчера и отправить всем тимлидерам. Покажи как подключить scheduler к основному файлу bot.py.
ПРОМПТ 4 / 6
ПРОМПТ 5 — Утренняя сводка для тимлидера
Продолжаем бот "Пульс команды". Напиши функцию format_morning_report(date) в файле reports/morning.py. Функция должна: 1. Получить все ответы за указанную дату из БД 2. Получить список всех агентов 3. Сформировать текст сообщения в таком формате: 📊 Команда [дата] ✅ Ответили: X из Y ❌ Не ответили: [имена через запятую или "все ответили"] 🔥 Продуктивный день: N чел. 😐 Средне: N чел. 😮‍💨 Тяжёлый день: N чел. ⚠️ Требуют внимания: → [Имя] — [заметка или "отметил ⚠️ без комментария"] 💬 Заметки дня: → [Имя]: "[текст заметки]" Если никто не отметил проблем — вместо блока "Требуют внимания" написать "✨ Все в порядке" Если никто не оставил заметок — блок "Заметки" не показывать.
ПРОМПТ 5 / 6
ПРОМПТ 6 — Финальная сборка и деплой
Собери финальный файл bot.py для бота "Пульс команды". Структура проекта: /pulse_bot bot.py — точка входа .env — TELEGRAM_TOKEN=... db/db.py — база данных handlers/ start.py — регистрация survey.py — опрос агента scheduler/ jobs.py — задачи по расписанию reports/ morning.py — утренняя сводка В bot.py нужно: 1. Загрузить токен из .env 2. Создать Application 3. Зарегистрировать все handlers (start, survey) 4. Запустить APScheduler 5. Запустить polling Также напиши: - requirements.txt со всеми зависимостями - Procfile для деплоя на Railway.app - README.md с инструкцией как добавить агента в систему
ПРОМПТ 6 / 6
8
Как продать
Стратегия презентации
До встречи
Добавь в бота имена агентов команды сестры. Зарегистрируй тимлидера как получателя сводки. Пусть бот уже выглядит как будто создан для них.
На встрече
Не объясняй — показывай. Открой телефон, покажи как агент отвечает на опрос (20 секунд). Потом покажи что тимлидер получает утром. Дай подержать телефон.
Предложение
«Попробуйте бесплатно две недели. Если команда будет пользоваться — договоримся о цене». Это снимает риск для покупателя.
Цена
$200–300 за настройку + $20–30 в месяц за поддержку и хостинг. Или единоразово $300–500 если хотят «навсегда».
Главный аргумент для тимлидера: «Ты каждое утро будешь знать куда направить внимание — до первого звонка. Без созвонов, без "ну как дела"».