Бот для поиска лидов

Автоматический сбор заказов из Telegram-каналов и фриланс-бирж с AI-оценкой для IT‑компании

Немного о проекте

IT-компания, которая занимается веб-разработкой и интеграциями, искала новых клиентов вручную: менеджер каждый день просматривал десятки Telegram-каналов с вакансиями и заказами и несколько фриланс-бирж.
На это уходило несколько часов в день, хорошие заказы находились с опозданием, а часть публикаций просто терялась в общем потоке.

наша задача

Сделать бота, который сам находит подходящие заказы, отсекает нерелевантные, оценивает каждого лида и сразу присылает команде готовую карточку с контактами и ссылкой на источник.

Как это работает

Система состоит из нескольких модулей, которые работают по расписанию и в реальном времени:
  • Сбор из Telegram. Пользовательская сессия на Telethon (MTProto API) подписана на отраслевые каналы и чаты и получает новые посты в момент публикации.
  • Сбор с бирж. Парсеры на httpx и Playwright по расписанию забирают новые проекты с фриланс-бирж, в том числе с тех, где контент подгружается JavaScript.
  • Фильтрация и дедупликация. Объявления нормализуются, повторы одного заказа из разных источников отсеиваются по хэшу текста и векторной близости.
  • AI-оценка. LLM читает заказ и сравнивает его с профилем компании: ставит оценку релевантности (score), выделяет теги — стек и тип задачи — и достаёт контакты заказчика.
  • Доставка. Лиды выше порога уходят в закрытый Telegram-канал команды карточкой: оценка, дата, контакт, теги, ссылка на оригинальный пост и полный текст заказа.

Технологический стек

  • Python, asyncio — ядро сервиса;
  • Telethon — чтение каналов, aiogram — бот и публикация лидов;
  • httpx, Playwright — парсинг бирж;
  • LLM API со структурированным ответом — оценка и разметка заказов;
  • PostgreSQL + pgvector — хранение лидов и поиск дублей;
  • Redis, APScheduler — очереди и расписание;
  • Docker — развёртывание на сервере заказчика.

Инженерные вызовы

Главной сложностью было качество отбора: в каналах много вакансий в штат, рекламы и повторов. Мы подобрали промпт и порог оценки на реальной выборке размеченных постов, а критерии вынесли в настройки — команда сама меняет стек и типы задач, не трогая код.
Отдельно позаботились об устойчивости: лимиты Telegram API, смена вёрстки на биржах и падения отдельных источников не останавливают систему — каждый модуль перезапускается независимо, а о сбоях бот сообщает в служебный чат.

что у нас получилось

Команда перестала тратить часы на ручной мониторинг: подходящие заказы приходят в Telegram через несколько минут после публикации, уже с оценкой, тегами и контактами. Менеджер видит только релевантные лиды и откликается на них первым, а новые источники подключаются за пару строк в конфиге.

Этот проект показывает, как AI и автоматизация превращают поток шума в воронку продаж: мы собрали систему, которая работает круглосуточно и приносит команде клиентов, пока она занята проектами.