Skip to content

Repository files navigation

⚡ AI Manager

AI-менеджер продаж для Telegram Business. Отвечает клиентам в личке как живой человек, квалифицирует лида, собирает бриф, считает смету по вашему каталогу, выставляет оплату и вовремя передаёт диалог человеку.

TypeScript Node.js Fastify Prisma Redis Telegram License Status

CI Release GHCR PRs Welcome Stars

Warning

Open Beta. Проект в активной разработке. API, схема БД и настройки могут меняться. Гоняйте на тестовом аккаунте и в PAYMENTS_MODE=mock, пока не убедитесь, что всё ведёт себя так, как вам нужно.


🧠 В чём идея

Большинство «чат-ботов» — это отдельный @bot, куда клиента ещё надо загнать. Люди туда не идут: они пишут вам в личку и ждут ответа как от человека.

AI Manager работает наоборот. Клиент пишет в ваш реальный аккаунт в Telegram, а бот отвечает в этом же диалоге через официальный Telegram Business API (business_connection_id). Клиент даже не понимает, что первую линию держит ИИ — потому что тот отвечает не мгновенными шаблонами, а по-человечески: читает, «печатает», делает паузы, дробит длинные ответы, задаёт уточняющие вопросы и ведёт к следующему шагу.

✅ Как правильно ❌ Как не надо
Клиент пишет в вашу реальную личку Клиента гонят в отдельный @bot
Backend получает business_message Обычный bot-чат обрабатывается как клиент
Ответ уходит с business_connection_id Ответ без business-connection
Официальный Bot API Userbot / MTProto / Telethon / Pyrogram
Human takeover на сложных кейсах Бот сам обещает скидки, договоры и точные цены

✨ Что умеет

  • 🗣️ Живые ответы, а не робот. Слой Humanizer 2.0: задержки «прочитал → подумал → печатает», статус typing, дробление на человеческие сообщения, ночное замедление, follow-up при тишине. Плюс текстовый де-робот: срезает канцелярит, подхалимаж и дежурные «рад помочь / обращайтесь, если что».
  • 🎯 Квалификация и воронка. Понимает нишу и задачу, отделяет лида от мусора, задаёт вопросы порциями, собирает мини-бриф: ниша → задача → что уже есть → цель → бюджет → сроки.
  • 📋 Бриф в DOCX. Отправляет клиенту бриф, принимает заполненный файл, разбирает его (детерминированно + LLM) и собирает понимание по проекту.
  • 🧾 Смета по вашему каталогу. Считает и рекомендует только из активного каталога услуг — не выдумывает цены и услуги, которых нет.
  • 💳 Оплаты. YooKassa (ссылка), перевод и СБП по реквизитам, распознавание чека (опц.), идемпотентные вебхуки без гонок. Есть mock-режим для E2E без реальных списаний.
  • 🧠 Память и стиль (RAG, опц.). Импорт экспортов переписок → чистка секретов/PII → style profile, sales playbook и embeddings, чтобы отвечать в вашем тоне и по вашим фактам.
  • 🚨 Срочные уведомления. Ловит «горящих» лидов (готов платить, просит счёт/реквизиты, высокий бюджет, серия сообщений без ответа) и рисковые темы (жалоба, возврат, договор, NDA) → зовёт человека.
  • 🛡️ Безопасность из коробки. Валидатор каждого ответа: ловит утечки промпта/модели, ложную идентичность, обещания и PII — рискованное уходит на подтверждение человеку, а не клиенту.
  • 🖥️ Админ-панель. Каталог услуг, кейсы портфолио, оплаты и реквизиты, стиль общения, скорость ответов, пороги срочности, шаблоны сообщений, ручной перехват диалога.

🔥 Как проходит диалог

flowchart LR
  A["Клиент пишет вам в личку"] --> B["Telegram Business update"]
  B --> C["POST /telegram/webhook"]
  C --> D["Lead + ConversationMessage"]
  D --> E["Policy gate"]
  E --> F["Классификатор интента"]
  F --> G{"Что за сообщение?"}
  G -->|рабочая тема| H["Очередь BullMQ + человеческая задержка"]
  G -->|оффтоп| I["короткий вежливый отказ"]
  G -->|"кто ты / какая модель"| J["Human approval"]
  G -->|"NDA / договор / скидка"| K["Human takeover"]
  H --> L["Бриф / Смета / Оплата"]
  L --> M["sendMessage + business_connection_id"]
  M --> N["Ответ в реальном чате"]
Loading

🧰 Стек

Зона Технологии
Backend Node.js 20+, TypeScript, Fastify
БД PostgreSQL, Prisma
Очереди Redis, BullMQ
Валидация Zod
AI Любой OpenAI-совместимый Chat Completions API (OpenAI, OpenRouter, свой шлюз)
Оплаты YooKassa API + mock-режим
Telegram Официальный Bot API (Business) через fetch
Тесты Vitest, ESLint, TypeScript

🚀 Быстрый старт

1. Зависимости

npm install

2. Локальный .env

cp .env.example .env        # PowerShell: Copy-Item .env.example .env

Секреты держим только локально. .env и .env.local уже в .gitignore. Ничего чувствительного в репозиторий не коммитим.

3. Postgres + Redis

docker compose up -d

По умолчанию: postgresql://postgres:postgres@localhost:5432/account_agent и redis://localhost:6379.

4. Миграции и сиды

npm run prisma:generate
npm run prisma:deploy
npm run catalog:seed        # демо-каталог услуг
npm run portfolio:seed      # демо-кейсы портфолио

5. Запуск

npm run dev
curl http://localhost:3000/health

6. Проброс наружу + вебхук

cloudflared tunnel --url http://localhost:3000   # или ngrok
npm run telegram:set-webhook
npm run telegram:webhook-info

Дальше подключите технического бота в Telegram → Settings → Business → Chat automation и дайте ему право читать и отвечать. Проверить всё разом:

npm run setup:doctor
npm run e2e:simulate

⚙️ Ключевые настройки (.env)

Переменная Зачем
TELEGRAM_BOT_TOKEN токен технического бота
TELEGRAM_WEBHOOK_SECRET секрет вебхука Telegram
ADMIN_CHAT_ID чат для уведомлений и human takeover
LLM_API_KEY / LLM_MODEL / LLM_BASE_URL подключение LLM (OpenAI / OpenRouter / свой шлюз)
PAYMENTS_MODE mock для тестов, yookassa для боевого режима
YOOKASSA_SHOP_ID / YOOKASSA_SECRET_KEY ключи YooKassa (секрет — только в env)
HUMANIZER_ENABLED / HUMANIZER_MODE живое поведение (off / fast / balanced / deep)
REPLY_HUMANIZE_ENABLED текстовый де-робот (срезает AI-штампы)
REPLY_VALIDATOR_ENABLED защитный валидатор ответов (не выключайте в проде)
BOT_IDENTITY_MODE assistant (ассистент, честный disclosure) или owner (пишет от лица владельца)
STYLE_MEMORY_ENABLED RAG по вашим прошлым перепискам (опц.)
BRAIN_ENABLED «думающий» слой Brain 3.0 (опц., по умолчанию off)
ADMIN_USER / ADMIN_PASSWORD / ADMIN_API_TOKEN доступ в админ-панель

Полный список — в .env.example, там каждый параметр с комментарием.


🗣️ Как достигается «живость»

Два независимых слоя:

  1. Как ответ доставляется (Humanizer 2.0) — паузы, typing, отметки о прочтении, дробление на чанки, окно догрупировки сообщений, ночное замедление, follow-up. Настраивается из панели и через HUMANIZER_*.
  2. Как ответ написан (Human-voice layer) — детерминированный де-робот + промпт-директива: убирает канцелярит, подхалимаж, дежурные приветствия/подписи и «фальшивую глубину», оставляя конкретику и человеческий ритм.

Оба можно выключить одним флагом и откатиться к «сырому» тексту модели — сырой ответ всё равно проходит защитный валидатор.


🛡️ Безопасность и честность

  • Каждый ответ модели проходит валидатор: утечки системного промпта/названия модели, ложная идентичность, PII и завышенные обещания → уходят человеку на подтверждение, а не клиенту.
  • В режиме assistant бот не выдаёт себя за человека: на прямой вопрос «ты бот?» отвечает честно и передаёт диалог владельцу. Режим owner (ответ от первого лица) включается осознанно самим оператором.
  • Рискованные темы (жалоба, возврат, суд, договор, NDA, спор об оплате) → human takeover.
  • Секреты живут только в env. Логи содержат идентификаторы (leadId, jobId, paymentId), а не тексты сообщений и ключи.

📜 Полезные команды

npm run dev                 # dev-сервер с hot-reload
npm run build               # сборка в dist/
npm run typecheck           # проверка типов
npm run lint                # ESLint
npm run test                # Vitest
npm run setup:doctor        # проверка конфигурации перед запуском
npm run e2e:simulate        # симуляция полного диалога без Telegram
npm run catalog:seed        # сид каталога услуг
npm run portfolio:seed      # сид кейсов портфолио
npm run import:telegram     # импорт экспорта переписки в память (RAG)

🗂️ Структура

src/
  agent/        # мозг: классификатор, персона, humanizer, критик, бриф, оффер, follow-up
  telegram/     # Telegram Business API, вебхук, polling
  payments/     # YooKassa, СБП/перевод, чеки, вебхуки
  catalog/      # каталог услуг и цен
  portfolio/    # кейсы портфолио и подбор релевантных
  memory/       # база знаний и сиды
  style-memory/ # RAG: импорт, embeddings, векторный поиск
  settings/     # настройки из БД + шаблоны сообщений
  admin/        # REST API админ-панели
  queues/       # BullMQ воркеры
public/admin/   # веб-панель управления
prisma/         # схема и миграции
scripts/        # сиды, импорт, диагностика, E2E
tests/          # Vitest

🐳 Docker

Готовый образ публикуется в GitHub Container Registry при каждом релизе:

docker pull ghcr.io/jacksony100/ai-manager:latest
docker run --rm -p 3000:3000 --env-file .env ghcr.io/jacksony100/ai-manager:latest

Образу нужны доступные PostgreSQL и Redis (DATABASE_URL / REDIS_URL). Миграции применяются отдельно: npx prisma migrate deploy.

🗺️ Roadmap (open beta)

  • Мультиканальность (VK, WhatsApp)
  • Больше провайдеров оплат
  • A/B тесты сценариев и текстов
  • Аналитика воронки в панели
  • Docker-образ и деплой в один клик

🤝 Контрибьют

PR и issue приветствуются. Перед PR: npm run lint && npm run typecheck && npm run test && npm run build.

📄 Лицензия

MIT. Демо-данные (каталог, кейсы, тексты) вымышленные — замените на свои перед боевым запуском.

About

AI Manager — AI-менеджер продаж для Telegram Business: живые ответы, квалификация лидов, смета по каталогу, оплаты (YooKassa/СБП) и human takeover. TypeScript · Fastify · Prisma · BullMQ.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages