Бот для поиска лидов
Автоматический сбор заказов из 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 API, смена вёрстки на биржах и падения отдельных источников не останавливают систему — каждый модуль перезапускается независимо, а о сбоях бот сообщает в служебный чат.
что у нас получилось
Команда перестала тратить часы на ручной мониторинг: подходящие заказы приходят в Telegram через несколько минут после публикации, уже с оценкой, тегами и контактами. Менеджер видит только релевантные лиды и откликается на них первым, а новые источники подключаются за пару строк в конфиге.
Этот проект показывает, как AI и автоматизация превращают поток шума в воронку продаж: мы собрали систему, которая работает круглосуточно и приносит команде клиентов, пока она занята проектами.