Поиск работы часто превращается в бесконечный скроллинг по Telegram-каналам: десятки уведомлений, тонны сообщений, чтение длинных описаний вакансий, попытки понять, подходит ли это тебе. А ведь Telegram — один из самых популярных источников свежих предложений о работе, особенно в IT, маркетинге и фрилансе. Но вручную фильтровать всё это — сплошная потеря времени. Здесь на помощь приходят современные технологии: машинное обучение, которое может анализировать текст лучше, чем человек, и автоматизировать процесс.
Именно из этой идеи родился JobStalker — Telegram-бот, который мониторит публичные каналы с вакансиями, фильтрует их с помощью модели машинного обучения, оценивает релевантность и сохраняет подходящие варианты в удобной базе данных. Всё это с веб-интерфейсом для настройки и просмотра результатов. Проект полностью open-source, и вы можете развернуть его на своём ПК или сервере.
Зачем бот для Telegram-каналов
Telegram-каналы — это золотая жила для поиска работы: там публикуются свежие вакансии в реальном времени, часто с прямыми контактами работодателей. Но проблема в объёме: каналы заспамлены нерелевантными постами, а ручной анализ утомителен. JobStalker решает это, используя:
-
Конфиденциальность: Бот работает от вашего личного Telegram-аккаунта (с вашими API-ключами), данные не уходят на внешние серверы.
-
Скорость и автоматизация: Модель машинного обучения быстро оценивает релевантность вакансий, фильтруя только то, что подходит под ваши критерии.
-
Кастомизация: Вы сами выбираете каналы для мониторинга, настраиваете фильтры и просматриваете результаты через удобный веб-интерфейс.
-
Поддержка GPU: Для ускорения анализа на мощных машинах.
В итоге вы получаете только релевантные вакансии, сохранённые в базе, без лишнего шума.
Архитектура инструмента
JobStalker построен с акцентом на простоту, гибкость и надёжность. Основные принципы: модульность, поддержка разных сред развертывания (от локального ПК до Docker) и интеграция с Telegram API. Вот ключевые компоненты:
1. Telegram-клиент
Мониторит указанные публичные каналы в реальном времени. Собирает новые сообщения с вакансиями и передаёт их на анализ. Требует авторизации через ваши личные API-ключи (API_ID и API_HASH с my.telegram.org) для безопасной работы.
2. Модель машинного обучения
Сердце системы JobStalker — это встроенная модель машинного обучения, которая автоматически анализирует текст вакансий из Telegram-каналов, оценивает их релевантность и фильтрует только те предложения, которые соответствуют вашим критериям. Это позволяет избежать ручного просеивания сотен сообщений, сосредоточившись на самых подходящих вариантах. Модель работает полностью локально на вашем устройстве, обеспечивая конфиденциальность данных — ничего не отправляется на внешние серверы. Благодаря опциональной поддержке GPU (через установку extras [gpu]), анализ происходит быстро даже на больших объемах текстов, используя аппаратное ускорение для inference.
Как работает модель?
-
Анализ текста: Модель обрабатывает описание вакансии, извлекая ключевые элементы, такие как требуемые навыки (stack технологий), уровень зарплаты, локация, тип занятости (удаленная/офис) и другие параметры. Для этого используется комбинация техник обработки естественного языка (NLP): токенизация, извлечение сущностей (Named Entity Recognition) и векторизация текста.
-
Оценка релевантности: На основе ваших пользовательских предпочтений (которые вы задаете в конфигурации, например, ключевые слова вроде “Python developer” или “remote work”), модель рассчитывает score релевантности. Это может быть простая метрика, такая как косинусное сходство векторов (с использованием библиотек вроде scikit-learn или Sentence Transformers), или более сложная классификация, где вакансия помечается как “подходящая”, “частично подходящая” или “не релевантная”.
-
Фильтрация и сортировка: После анализа вакансии сортируются по убыванию score, и только те, что превышают заданный порог, сохраняются в базе данных. Это минимизирует шум от нерелевантных постов в каналах.
Технологии за кулисами:
-
Основной фреймворк: PyTorch или TensorFlow для запуска модели (с поддержкой GPU через CUDA). Проект использует легковесные предобученные модели, чтобы не требовать мощного оборудования — даже на CPU анализ занимает секунды.
-
Библиотеки NLP: Hugging Face Transformers для загрузки и использования моделей вроде BERT или DistilBERT, адаптированных для русского языка (поскольку многие вакансии в Telegram на русском). Это позволяет точно понимать контекст, синонимы и нюансы описаний.
-
Кастомизация: Вы можете заменить дефолтную модель на свою, дообучить её на личных данных (например, на архиве вакансий) или настроить параметры через конфиг-файл. Нет “черной магии” — вся логика прозрачна и расширяема в коде.
Преимущества локальной модели:
-
Безопасность: Ваши предпочтения и данные о вакансиях остаются на устройстве, без риска утечек.
-
Скорость: На GPU обработка батча вакансий занимает доли секунды; на CPU — чуть дольше, но все равно эффективно.
-
Гибкость: Поддержка обновлений модели без зависимости от облачных сервисов. В будущем планируется добавить кэширование результатов для еще большей оптимизации.
(Примечание: В текущей альфа-версии фокус сделан на базовой ML для фильтрации, но проект открыт для интеграции с крупными языковыми моделями (LLM), такими как Ollama или Llama, для более глубокого анализа. Например, LLM смогут генерировать краткие summary вакансий, извлекать ключевые навыки с помощью кастомных промптов и даже предлагать персонализированные рекомендации. Если вы разработчик, welcome внести вклад в эту фичу через pull requests!)
3. Веб-интерфейс
Простой и интуитивный сервер на http://localhost:8000 (или другом порту). Здесь вы:
-
Авторизуете Telegram-аккаунт.
-
Настраиваете каналы для мониторинга.
-
Просматриваете отфильтрованные вакансии.
-
Управляете базой данных с результатами.
4. База данных
Хранит отфильтрованные вакансии для удобного доступа. Легковесная (вероятно, SQLite), чтобы не нагружать систему.
5. Конфигурация и прокси
Поддержка .env-файла для настройки (API-ключи, прокси для обхода ограничений). Всё асинхронно и эффективно.
Технологии
Проект использует современный стек для Python-разработки: • Python 3.11+ • Зависимости через pyproject.toml (pip для установки) • Docker и Docker Compose для контейнеризации (рекомендуемый способ развертывания) • Telegram API для интеграции с чатами • Опциональные extras: [gpu] для ускорения на видеокартах • PyInstaller для создания standalone-экзешников (Windows/Linux/macOS) • Виртуальные окружения (venv) для разработки из исходников
Нет лишних зависимостей — всё минималистично и легко расширяемо.
Что уже работает
-
Мониторинг публичных Telegram-каналов в реальном времени
-
Фильтрация вакансий с помощью модели машинного обучения
-
Оценка релевантности и сохранение в базу данных
-
Веб-интерфейс для конфигурации, авторизации и просмотра результатов
-
Поддержка CPU и GPU режимов
-
Несколько способов установки: pip, Docker, из исходников или standalone-экзешник
-
Конфигурация через .env (API-ключи, прокси)
Проект в альфа-версии, но уже полностью функционален для базового использования. Важно: используйте только свои API-ключи, чтобы избежать бана аккаунта Telegram.
Что в разработке
• Интеграция с локальными LLM-моделями (например, Ollama) для более детального анализа (summary, ключевые навыки) • Экспорт результатов в Markdown/JSON/CSV • Графический интерфейс с уведомлениями в Telegram • Кэширование и оптимизация для больших объёмов данных • Система пользовательских предпочтений (фильтры по зарплате, стеку технологий) • Поддержка приватных каналов и чатов (если позволит Telegram API)
Нужен фидбек
JobStalker — это мой личный проект для упрощения поиска работы, и он открыт для улучшений. Если вы пробуете его, поделитесь мыслями: от идей по архитектуре и UX до предложений по новым функциям. Может, добавить поддержку других источников вакансий (HH.ru, LinkedIn)? Или улучшить ML-модель?
Обсуждаем в issues или pull requests на GitHub
Давайте сделаем поиск работы проще вместе! Если у вас есть вопросы по установке или использованию — пишите, помогу.
Автор: 10sorry


