Green Broker — Telegram-бот для продажи растений
Green Broker — Telegram-бот для продажи растений
Суть
Green Broker — реальный проект Павла: Telegram-бот для питомников растений и садовых центров, который автоматизирует продажи, ведение остатков и формирование коммерческих предложений. MVP сфокусирован на B2B-сценарии для ландшафтных дизайнеров и оптовиков: пользователь присылает неструктурированную заявку в виде текста, фото, PDF, Word или Excel, а бот сопоставляет позиции с актуальными остатками и формирует КП в PDF. источник источник
Глобальная цель проекта — экосистема/маркетплейс в Telegram: один питомник или садовый центр получает собственного бота, а затем эти боты объединяются в агрегатор Green Broker Pro для рынка озеленения. источник
Роли и рамки проекта
- Разработчик: Павел, единоличный исполнитель проекта.
- ИИ-ассистент: помощник в анализе вводных, формировании спецификаций и коде по Spec-Driven Development.
- Стейкхолдеры: ландшафтные дизайнеры, строительные компании, частные клиенты, менеджеры и владельцы питомников/садовых центров.
- Язык документации: только русский.
Процесс разработки задан как последовательность: Конституция → spec.md → plan.md → tasks.md → Реализация. Это делает Green Broker прямым живым кейсом для spec-driven агентной разработки и многоагентной методологии automation-проектов.
MVP: B2B-заявки и виртуальная корзина
Главная фича MVP — умная обработка неструктурированных заявок (US-16). Ландшафтник или оптовик отправляет список растений в любом удобном формате, бот извлекает позиции через LLM/алгоритмы, сопоставляет их с БД и кладёт найденные товары в скрытую/виртуальную корзину. После этого пользователь получает КП в PDF с актуальными ценами и остатками. источник
Важная бизнес-логика: если точного совпадения нет, нейросеть предлагает релевантные замены. Если замен нет — позиция уходит в блок «На уточнении». Предложенные замены не плюсуются к итоговой сумме КП, пока клиент их не согласует. источник
Пользовательские контуры
B2B / ландшафтники
- отправка заявок текстом, фото или файлами PDF/Word/Excel;
- оптовый ввод количества цифрами;
- генерация КП в PDF в течение 1 минуты;
- доверительный заказ «в минус» с пометкой
подтверждается менеджером; - скачивание актуального PDF-прайса по кнопке;
- дата актуальности прайса в карточке/выдаче.
B2C / частники
Визуальный интернет-магазин вынесен во вторую фазу: каталог с фотографиями, карточки растений, кнопки добавления в корзину, подарочные сертификаты через ЮKassa.
Менеджеры питомника
- команда
/ostatkiдля управления остатками прямо из Telegram; - сценарий
/addдля создания карточки товара с телефона «в поле»; - загрузка фото в S3;
- уведомления о заказах и дефицитных позициях;
- массовые рассылки с учётом лимитов Telegram.
Техническая архитектура
Стек проекта по плану:
- Python 3.11+;
aiogram 3.x;- SQLite + SQLAlchemy 2.0 +
aiosqliteдля MVP, с прицелом на PostgreSQL; - Docker/Docker Compose для VPS;
- S3-совместимое хранилище: Yandex Object Storage / AWS S3 / Selectel / MinIO;
pandas+openpyxlдля Excel ETL;TheFuzz/FuzzyWuzzy и LLM для сопоставления растений;- генерация PDF через ReportLab или
pdfkit+ Jinja2; - YouGile API для карточек заказов;
- Yandex Geocoder/Routing API для будущей логистики;
- FastAPI/Jinja2 или Streamlit для web-админки. источник
Архитектурно проект делится на три логических модуля:
1. Бот-консьерж — Telegram-интерфейс B2B/B2C, корзина, навигация, генерация КП. 2. Web-админка / CRM-панель — модерация жалоб, аналитика, экспорт и интеграция с CRM. 3. ETL-воркер — парсинг прайсов, нормализация данных, загрузка картинок в S3, обновление БД.
Данные и интеграции
Ключевые требования к данным:
- таблицы пользователей, товаров, заказов и виртуальной корзины;
- заказы фиксируются в одной строке
Orders:Order_ID,User_ID,Name,Phone,Telegram_Username,Total_Sum,Order_Details_JSON; - медиа и PDF хранятся в S3, в БД — ссылки;
- поддержка словарей синонимов для
BR,ОКС,P9,D9,WRB,ком; - единый ключ объединения позиций —
plant_name_lat; - интеграция с YouGile API для Канбан-карточек заказов;
- в будущем — 1С/Бизнес Пак и Яндекс.Карты.
Roadmap
1. Фаза 1 — Ядро и B2B MVP: aiogram, Docker, БД, S3, LLM-парсинг заявок, виртуальная корзина, PDF КП, YouGile. 2. Фаза 2 — Инструменты питомника: мобильное рабочее место агронома, /ostatki, ETL прайсов, заказ «в минус». 3. Фаза 3 — B2C каталог: визуальный каталог, карточки товаров, видимая корзина, ЮKassa, PDF-прайс. 4. Фаза 4 — Админка, логистика, маркетплейс: рассылки, модерация каталога, Yandex Maps, Green Broker Pro, 1С/Бизнес Пак.
Коммерческие предложения и go-to-market
В новых PDF-документах Green Broker описан не только как внутренний бот для обработки заявок, но и как двухсторонняя рыночная модель. Для заказчика/ландшафтного направления КП фиксирует вилку разработки 100 000–200 000 ₽ и срок первой версии 3–4 недели. Базовый цикл: бот мониторит профильные Telegram-каналы, распознаёт запросы на растения, сопоставляет их с базой питомников, готовит предложение и отдаёт неоднозначные/крупные заявки на подтверждение менеджеру. источник
Отдельное КП для питомников позиционирует сервис как канал продаж: питомник один раз отдаёт прайс, фото и контакт, а сервис находит заявки в чатах и отправляет предложения с ценой, фото и контактом. Пилотная подписка: 20 000 ₽/мес, для первых 5 участников — 10 000 ₽/мес первые 2 месяца, цена фиксируется на год; обещание пилота — возврат денег, если за первый месяц нет ни одной заявки. источник
Модель монетизации
- Разовая разработка для заказчика: 100 000 ₽ база; до 200 000 ₽ полный набор модулей.
- Модуль подписки питомников: +35 000 ₽ к разработке.
- Подписка питомников: около 20 000 ₽/мес за приоритетное попадание в выдачу по совпадающим заявкам.
- Потенциал: 10 питомников на подписке дают около 200 000 ₽/мес регулярной выручки.
- Доп. опции: диалоговый клиентский бот +25 000 ₽, админ-панель и аналитика +20 000 ₽, мониторинг Авито и внешних площадок +30 000 ₽, выездная фотофиксация от 40 000 ₽/мес.
Этапы из КП
1. Неделя 1: источники данных — список каналов заявок и источников прайсов, первая база растений. 2. Недели 2–3: базовый цикл — мониторинг, сопоставление, формирование ответа, подтверждение менеджером. 3. Неделя 4: обкатка и выбранные модули — диалоговый бот, аналитика, подписка. 4. Неделя 5: запуск подписки для первых 3–5 питомников-партнёров.
Эти КП важны как слой позиционирования и продаж, который дополняет constitution.md, spec.md и plan.md: теперь в базе есть не только инженерный контур, но и ценность для двух сторон рынка — заказчика/ландшафтников и питомников.
Картографический слой: Construction Maps MCP
Construction Maps MCP Server полезен как возможный геослой для Green Broker: питомники и садовые центры можно связывать с участками, границами территорий, зонами обслуживания, спутниковыми снимками и расчётом расстояний.
Отдельно зафиксирована рабочая связь: Роман, ассоциированный с проектом «с садами», может быть контекстом, где этот MCP-сервер пригодится для будущей автоматизации. Детали по Роману не расширялись, потому что отдельного источника/страницы по нему в базе пока нет.
Риски и quality gates
- Telegram limits: массовые рассылки и отправка медиа требуют троттлинга.
- Качество данных питомников: неоднородные Excel-прайсы требуют ETL, словарей синонимов и ручного доуточнения.
- S3: нужны стабильные ссылки и кеширование, чтобы не дёргать API бакета на каждый показ.
- LLM-парсинг: нужен слой проверки и блок «На уточнении», чтобы не включать сомнительные позиции в итоговую сумму.
- Security: web-админка через JWT/Basic Auth; доступ к
/ostatkiи/add— по ролям. - Side effects: создание заказов в YouGile, списание/уход остатков в минус, массовые рассылки и платежи требуют отдельных approval/rollback-гейтов.
Открытые вопросы для tasks.md
- Какая библиотека PDF будет выбрана как основная: ReportLab или HTML→PDF?
- Как именно хранить виртуальную корзину: таблица, JSON-снапшот, FSM-state или гибрид?
- Какая LLM используется для парсинга заявок и как валидировать её output schema?
- Какой минимальный набор полей у
productsдля MVP? - Как реализовать роли менеджеров и администраторов в Telegram?
- Какой формат карточки YouGile должен получать бот?
- Какой rollback для ошибочного заказа «в минус»?