- BrainTools - https://www.braintools.ru -
Поиск работы часто превращается в бесконечный скроллинг по Telegram-каналам: десятки уведомлений, тонны сообщений, чтение длинных описаний вакансий, попытки понять, подходит ли это тебе. А ведь Telegram — один из самых популярных источников свежих предложений о работе, особенно в IT, маркетинге и фрилансе. Но вручную фильтровать всё это — сплошная потеря времени. Здесь на помощь приходят современные технологии: машинное обучение [1], которое может анализировать текст лучше, чем человек, и автоматизировать процесс.
Именно из этой идеи родился JobStalker — Telegram-бот, который мониторит публичные каналы с вакансиями, фильтрует их с помощью модели машинного обучения, оценивает релевантность и сохраняет подходящие варианты в удобной базе данных. Всё это с веб-интерфейсом для настройки и просмотра результатов. Проект полностью open-source, и вы можете развернуть его на своём ПК или сервере.
Telegram-каналы — это золотая жила для поиска работы: там публикуются свежие вакансии в реальном времени, часто с прямыми контактами работодателей. Но проблема в объёме: каналы заспамлены нерелевантными постами, а ручной анализ утомителен. JobStalker решает это, используя:
Конфиденциальность: Бот работает от вашего личного Telegram-аккаунта (с вашими API-ключами), данные не уходят на внешние серверы.
Скорость и автоматизация: Модель машинного обучения быстро оценивает релевантность вакансий, фильтруя только то, что подходит под ваши критерии.
Кастомизация: Вы сами выбираете каналы для мониторинга, настраиваете фильтры и просматриваете результаты через удобный веб-интерфейс.
Поддержка GPU: Для ускорения анализа на мощных машинах.
В итоге вы получаете только релевантные вакансии, сохранённые в базе, без лишнего шума.
JobStalker построен с акцентом на простоту, гибкость и надёжность. Основные принципы: модульность, поддержка разных сред развертывания (от локального ПК до Docker) и интеграция с Telegram API. Вот ключевые компоненты:
Мониторит указанные публичные каналы в реальном времени. Собирает новые сообщения с вакансиями и передаёт их на анализ. Требует авторизации через ваши личные API-ключи (API_ID и API_HASH с my.telegram.org [3]) для безопасной работы.
Сердце системы 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 на русском). Это позволяет точно понимать контекст, синонимы и нюансы описаний.
Кастомизация: Вы можете заменить дефолтную модель на свою, дообучить её на личных данных (например, на архиве вакансий) или настроить параметры через конфиг-файл. Нет “черной магии” — вся логика [4] прозрачна и расширяема в коде.
Преимущества локальной модели:
Безопасность: Ваши предпочтения и данные о вакансиях остаются на устройстве, без риска утечек.
Скорость: На GPU обработка батча вакансий занимает доли секунды; на CPU — чуть дольше, но все равно эффективно.
Гибкость: Поддержка обновлений модели без зависимости от облачных сервисов. В будущем планируется добавить кэширование результатов для еще большей оптимизации.
(Примечание: В текущей альфа-версии фокус сделан на базовой ML для фильтрации, но проект открыт для интеграции с крупными языковыми моделями (LLM), такими как Ollama или Llama, для более глубокого анализа. Например, LLM смогут генерировать краткие summary вакансий, извлекать ключевые навыки с помощью кастомных промптов и даже предлагать персонализированные рекомендации. Если вы разработчик, welcome внести вклад в эту фичу через pull requests!)
Простой и интуитивный сервер на http://localhost:8000 [5] (или другом порту). Здесь вы:
Авторизуете Telegram-аккаунт.
Настраиваете каналы для мониторинга.
Просматриваете отфильтрованные вакансии.
Управляете базой данных с результатами.
Хранит отфильтрованные вакансии для удобного доступа. Легковесная (вероятно, SQLite), чтобы не нагружать систему.
Поддержка .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 [6], LinkedIn)? Или улучшить ML-модель?
Обсуждаем в issues или pull requests на GitHub [2]
Давайте сделаем поиск работы проще вместе! Если у вас есть вопросы по установке или использованию — пишите, помогу.
Автор: 10sorry
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/22998
URLs in this post:
[1] обучение: http://www.braintools.ru/article/5125
[2] Ссылка на репозиторий: https://github.com/10sorry/JobStalker
[3] my.telegram.org: http://my.telegram.org
[4] логика: http://www.braintools.ru/article/7640
[5] http://localhost:8000: http://localhost:8000
[6] HH.ru: http://HH.ru
[7] Источник: https://habr.com/ru/articles/975272/?utm_source=habrahabr&utm_medium=rss&utm_campaign=975272
Нажмите здесь для печати.