продуктов в одном боте
Туры, экскурсии, eSIM, обмен валют, страховки и ещё семь направлений.
Бот для тех, кто отдыхает в Таиланде: подбор тура, экскурсии, eSIM, обмен валют, страховки, бонусы и розыгрыши. У бизнеса — отдельная CRM-админка для управления контентом, сегментами, рассылками и партнёрской программой. Плюс канал лидгена: парсер слушает публичные TG-чаты, нейросеть отбирает вопросы туристов и превращает их в потенциальных клиентов.



Туры, экскурсии, eSIM, обмен валют, страховки и ещё семь направлений.
Контент, рассылки, сегменты, розыгрыши, партнёрка — всё руками оператора.
Бот, рассылки и AI-парсер работают круглосуточно.
AI находит вопросы туристов в открытых TG-чатах и предлагает оператору.
12+ продуктов в одном боте — туры, экскурсии, eSIM, обмен валют, страховки, отели, трансферы, гайды, розыгрыши.
Пошаговый отбор курорта и формата отдыха, индивидуальный прайс от оператора.
Контент бота, шаблоны сообщений с медиа, рассылки по сегментам, лейблы пользователей, лог отправок, управление розыгрышами и партнёрской программой — всё через UI без разработчика.
Уникальные ссылки блогеров, автоматический учёт продаж и расчёт выплат.
Лейблы пользователей (Пхукет, Паттайя, купившие) — рассылка точечно.
Конструктор активных розыгрышей, авто-сбор участников и фиксация победителей.
Слушает публичные чаты, AI находит вопросы туристов, оператор работает с готовым лидом.
Соберём бота с CRM-админкой и канал лидогенерации в Telegram под ваш бизнес. Расскажите задачу — вернёмся с архитектурой и сметой за пару дней.
Три связанных продукта в одной системе: travel-бот на node-telegram-bot-api (polling), CRM-админка для управления контентом и операционкой, real-time MTProto-парсер публичных TG-чатов на gramjs с фоновым LLM-воркером (Gemini 2.0-flash, рядом готовый локальный Qwen 2.5 1.5B на FastAPI). PostgreSQL держит схему из 13 таблиц — от пользователей и продаж до сегментов, шаблонов и логов. Идея AI-канала лидгена была предложена нами и встроена в архитектуру вместе с ботом.



Отдельный web-UI на Next.js + React: управление контентом бота, рассылки, лейблы пользователей, розыгрыши и партнёрская программа.
Polling-бот без серверных сессий: вместо Telegraf-сцен мы отслеживаем «блоки сообщений» (основное + связанные message_id), чистим их при навигации и помечаем persistent-сообщения, которые переживают возврат в меню.
Listener подписывается на UpdateNewChannelMessage / UpdateNewMessage, матчит чаты по chatId / username / title, фильтрует тексты со знаком «?», достаёт author через InputUserFromMessage и пишет в parsed(chat_id, message_id, text).
Источники чатов хранятся во внешнем Web App; парсер обновляет их не чаще одного раза в 10 минут на чат — чтобы не упереться в FloodWait Telegram.
Сначала parsed-таблица пополняется парсером. Каждые 60 секунд categoryWorker берёт необработанную запись, отправляет в Gemini 2.0-flash с русскоязычным prompt'ом («аптека, туры, экскурсии, обмен валют, другое»), сохраняет category и model в parsed.
Gemini в облаке для качества классификации + рядом готовый локальный сервис на Qwen 2.5 1.5B-Instruct через llama-cpp (FastAPI с OpenAI-совместимым /v1/chat/completions). Можно переключаться без правки воркера.
users.referral_code + bloggers с уникальным slug, sales.referred_by → bloggers_leads с автоматическим расчётом выплат. Никаких ручных Excel-сводок.
user_labels(user_id, label) — composite PK, через таблицу делаем точечные рассылки: «все интересовавшиеся Пхукетом», «купившие в марте», «не купившие за 30 дней».
message_templates.media_files в JSONB хранит набор Telegram file_id, шаблон бота резолвит их без повторной загрузки — экономит трафик и оставляет одну точку правки контента.
postgres, bot, parser, worker и (опционально) llm — каждый в своём контейнере. Воркер можно горизонтально масштабировать без перезапуска бота.
Без вебхуков, без серверных сессий — состояние через MessageFlowService + chat-id maps.
Отдельный web-UI на Next.js + React. Управление всеми текстами, медиа и кнопками бота — без релиза. Доступ выдаётся по ADMIN_IDS.
message_templates.media_files JSONB — переиспользование Telegram file_id для тяжёлого контента, одна точка правки.
Draft-режим, медиа-группы, фильтры по лейблам, статистика отправок.
user_labels с composite PK, рассылки по любым комбинациям тегов.
bloggers, bloggers_leads, sales — автоматический учёт продаж и выплат с возможностью кастомизации на блогера.
giveaways + giveaway_winners, slug-маршрутизация участия через callback_data.
gramjs слушает публичные чаты, фильтрует вопросы, пишет в parsed-таблицу с указанием chat_id и message_id.
Воркер вызывает Gemini 2.0-flash, сохраняет category + model в parsed для дальнейшего отбора лидов.
FastAPI-сервис на Qwen 2.5 1.5B-Instruct, OpenAI-совместимый — можно переключиться без правки воркера.
Источники чатов парсера и CRM-выгрузки идут через Google Apps Script Web App.
logs-таблица с level/context — без отдельной системы наблюдаемости на старте.
Соберём бота с CRM-админкой и канал лидогенерации в Telegram под ваш бизнес. Расскажите задачу — вернёмся с архитектурой и сметой за пару дней.