Автоматизация резюме и откликов на hh.ru: бесплатный ИИ-агент вместо подписки за 5 000 ₽
Поиск работы в IT отнимает часы на однотипные отклики, и платные сервисы-автоотклики берут за это от 3 000 до 5 000 рублей в месяц, но автор-разработчик показал, как собрать бесплатного ИИ-агента, который делает всё сам.

Готовый рецепт заменяет платную подписку на сервис автооткликов полностью бесплатным скриптом с локальной нейросетью, без передачи резюме сторонним сервисам и без ежемесячных платежей.
Рынок IT-вакансий в России фильтрует кандидатов жёстко: автоответчики отсеивают отклики без персонализированного сопроводительного письма, а писать уникальное письмо под каждую вакансию вручную нереально, если откликов десятки в день. Автор из оригинальной публикации собрал собственного ИИ-агента (автономную программу, которая сама выполняет задачи без вашего участия) на Python, который парсит HeadHunter, отсеивает нерелевантные вакансии, генерирует письма через локальную нейросеть Llama 3 и отправляет отклики, отчитываясь в Telegram.
Фактически это автоматизация резюме и всего цикла отклика без единой копейки расходов на API или подписки.
Что понадобится?
- Python 3.10+ с поддержкой asyncio (асинхронность, когда программа не зависает, ожидая ответа от сети, а делает другие задачи параллельно)
- Playwright для управления браузером (библиотека, которая имитирует действия реального пользователя в браузере)
- Ollama с моделью Llama 3, открытая модель (open-source), работает бесплатно на вашей видеокарте
- Aiogram, Python-библиотека для создания Telegram-ботов
- SQLite, встроенная база данных, чтобы не откликаться на одну вакансию дважды
- Аккаунт на HeadHunter с заполненным резюме
- Видеокарта с достаточным объёмом памяти для запуска Llama 3 локально
- Примерно 2 часа на первую настройку
Пошаговая инструкция
1. Обойдите авторизацию один раз вручную
HeadHunter требует код из SMS при каждом входе. Решение: при первом запуске скрипт открывает браузер в видимом режиме, вы логинитесь руками, а Playwright сохраняет куки (файлы с данными сессии) в файл state.json. Все дальнейшие запуски идут в фоновом режиме без вашего участия.
headless = os.path.exists(STATE_FILE)
self.browser = await self.playwright.chromium.launch(headless=headless)
if os.path.exists(STATE_FILE):
self.context = await self.browser.new_context(
storage_state=STATE_FILE, user_agent=user_agent
)
2. Настройте двойной фильтр вакансий
Поиск на HeadHunter выдаёт много мусора: запрос «C++ разработчик» может вернуть вакансию «Педагог автоквантума». Чтобы не тратить ресурсы нейросети на явно нерелевантное, автор применил двухступенчатую фильтрацию.
Первая ступень, хард-фильтр на Python: скрипт проверяет заголовки по списку стоп-слов («senior», «lead», «стажер», «менеджер», «дизайнер», «hr», «1с», «риелтор») и отбрасывает их ещё до вызова нейросети.
Вторая ступень, строгий промпт (промпт, текстовая инструкция для нейросети) для Llama 3:
Твоя задача — оценить, подходит ли вакансия под мои критерии поиска.
Мои требования и профиль: {MY_RESUME_SUMMARY}
Также мне СТРОГО НЕ подходят (отклоняй сразу, отвечая NO):
Вакансии из других сфер: менеджеры, HR, маркетологи, риелторы...
Любые вакансии, которые НЕ связаны напрямую с написанием кода.
Если вакансия не про программирование — сразу пиши NO.
Нейросеть отвечает строго одним словом: YES или NO.
3. Сгенерируйте сопроводительное письмо
Если нейросеть одобрила вакансию, скрипт передаёт ей текст вакансии и ваше резюме. Llama 3 пишет персонализированное письмо, подсвечивая навыки, нужные конкретному работодателю.
Критически важно прописать в промпте ограничения, иначе модель начнёт галлюцинировать (галлюцинация, когда ИИ уверенно выдумывает то, чего не было) или вставлять английский текст:
ПИСАТЬ СТРОГО ТОЛЬКО НА РУССКОМ ЯЗЫКЕ! Никакого английского.
ВЫВОДИ ТОЛЬКО ТЕКСТ ПИСЬМА. Строго запрещены любые вводные фразы.
Дополнительно автор добавил очистку на Python: text.split("\n\n", 1)[-1], которая отрезает мусорные вводные строки.
4. Автоматизируйте клик по кнопке отклика
Интерфейс HeadHunter непредсказуем: кнопка «Откликнуться» иногда ведёт на форму, иногда открывает модальное окно, а поле для письма может быть скрыто. Playwright обрабатывает все варианты:
await apply_btn.click()
# Если есть выбор резюме — выбираем нужное
resume_dropdown = page.locator('[data-qa*="resume-select"]').first
# Если поле для письма скрыто — открываем
add_letter_btn = page.locator(
'button[data-qa="vacancy-response-letter-toggle"]'
).first
if await add_letter_btn.is_visible():
await add_letter_btn.click()
# Вставляем письмо
letter_input = page.locator('textarea[name="text"]')
await letter_input.fill(cover_letter)
await submit_btn.click()
5. Подключите Telegram для отчётов
Скрипт работает в бесконечном цикле, засыпая на 30 минут между итерациями. Telegram-бот на Aiogram присылает уведомления об успешных откликах и прикрепляет текст сгенерированного письма, чтобы вы могли оценить качество.
Скрипт запускается, подхватывает сохранённую сессию HeadHunter, парсит вакансии по запросу «Python backend» сначала по Санкт-Петербургу (офис плюс удалёнка), затем по всей России (только удалёнка). Хард-фильтр отсекает вакансии со стоп-словами. Оставшиеся уходят в Llama 3, которая отвечает YES или NO. На одобренные вакансии генерируется персональное сопроводительное письмо, Playwright кликает «Откликнуться», вставляет текст и отправляет. В Telegram приходит сообщение: «Успешный отклик: Backend-разработчик (Middle)» с полным текстом письма. Весь цикл занимает несколько минут, повторяется каждые полчаса, и за день скрипт обрабатывает десятки вакансий без вашего участия.
Куки протухают. Сессия HeadHunter не вечна. Если скрипт начал получать ошибки авторизации, удалите state.json и залогиньтесь заново в видимом режиме браузера.
Llama 3 пишет на английском. Даже с жёстким промптом локальная модель иногда переключается на английский. Автор решает это программной очисткой, но проверяйте первые письма вручную, прежде чем доверять полностью.
HeadHunter блокирует за массовые отклики. Слишком частые действия могут привести к блокировке аккаунта. Интервал в 30 минут между циклами и случайные задержки между кликами снижают риск, но не устраняют его полностью. Автоматизация резюме и откликов через скрипты формально нарушает правила площадки.
Нерелевантные одобрения. Если стоп-лист неполный, а промпт недостаточно строгий, нейросеть будет одобрять мусорные вакансии. Начинайте с тестового режима без реальной отправки и корректируйте фильтры.
Что делать с этим прямо сейчас?
Автору Дзена и копирайтеру. Принцип двойной фильтрации (сначала жёсткие правила, потом нейросеть) применим не только к вакансиям. По той же схеме можно фильтровать заявки от заказчиков, входящие письма или темы для статей: сначала стоп-слова, потом ИИ оценивает релевантность.
Маркетологу. Автоматизация резюме и откликов через локальную нейросеть означает, что ваши кандидаты на собеседованиях всё чаще будут приходить с ИИ-генерированными письмами. Учитывайте это при оценке: персонализация больше не признак усердия, а признак автоматизации.
Предпринимателю в РФ. Весь стек работает локально и бесплатно. Ollama с Llama 3 запускается на любой машине с видеокартой от 8 ГБ видеопамяти. Никаких зарубежных API, никаких подписок, никаких санкционных рисков. Подход подходит и для других задач: автоматическая обработка заявок, фильтрация лидов, генерация ответов клиентам.
Скрипт реально работает и экономит от 3 000 до 5 000 рублей в месяц по сравнению с платными сервисами автооткликов, по оценке самого автора. Но я бы добавил три оговорки. Во-первых, HeadHunter имеет право заблокировать аккаунт за автоматизированные действия, это риск, который вы берёте на себя. Во-вторых, качество писем от Llama 3 заметно уступает тому, что выдают более крупные модели через API, так что первые дни проверяйте каждое письмо глазами. В-третьих, подход требует базовых навыков Python: если вы не программист, настройка займёт не два часа, а значительно дольше. Тем не менее сама архитектура (хард-фильтр плюс локальная нейросеть плюс Telegram-алерты) применима далеко за пределами поиска работы. Я вижу, как по этой же схеме авторы Дзена могут автоматизировать мониторинг тем, фильтрацию комментариев или сбор данных для статей.
Главное, что даёт этот кейс: вам не нужен платный сервис, чтобы автоматизировать рутину, достаточно открытой модели на своей машине, пары сотен строк на Python и здравого смысла в настройке промптов.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

OpenAI предложила 5% акций правительству США: дивиденды вместо регулирования
OpenAI ведёт переговоры с администрацией Трампа о передаче правительству США пятипроцентной доли в компании, пытаясь через финансовую выгоду для граждан…

OpenAI предложила отдать 5% акций государству: новости о фонде для всех граждан США
OpenAI предложила отдать 5% акций в государственный фонд США, чтобы доходы от ИИ получили обычные граждане, и эта идея уже обсуждается на уровне Белого дома и…

Reinforcement learning без готовых сред: руководство учит собирать окружения под реальные задачи
Андрей Бирюков, независимый эксперт в области ИТ и информационной безопасности, опубликовал на Хабре практическое руководство по созданию собственных окружений…
Комментарии