Кейс крупным планом · 2026
Job Search Panel панель поиска работы на hh.ru
0 ₽
за API нейросети: вакансии оценивает и письма пишет Claude Code по подписке
5
источников в одной панели: hh.ru, каналы в Telegram, сайты компаний, тендеры и студии
- Проблема
- Поиск работы на hh.ru отнимает часы: несколько поисков дают сотни вакансий, письмо под каждую пишется заново, а отклики и ответы работодателей приходится отслеживать вручную.
- Решение
- Сделал панель: она находит вакансии через официальный API hh.ru и отсеивает лишнее правилами, а оценку и письмо по фактам резюме готовит Claude Code.
- Результат
- Вакансии приходят с оценкой и письмом, все отклики видны на одной доске, приглашения и отказы приходят в Telegram. Письмо, где не хватает фактов, не уйдёт, пока его не допишут.
Все вакансии и отклики видны на одной доске
Доска «Воронка» показывает, где каждая вакансия: новые, ждут подтверждения, отправлено, смотрели, ответ. Любая колонка раскрывается в рабочий список с оценкой и письмом, и разобрать его можно с клавиатуры: открыть отклик, пропустить, отложить. Такие же доски есть у тендеров и студий, так что всегда видно, где какой отклик и что с ним делать дальше.
Как это сделаносвернуть
Сохранённые поиски hh.ru проверяются по расписанию. Новые вакансии проходят жёсткие правила анкеты — стоп-слова, зарплата, регион, формат — и получают предварительную оценку без нейросети, по весам навыков.
Над доской — воронка за 30 дней: сколько вакансий найдено, оценено, отправлено, просмотрено и сколько пришло приглашений. Рабочий список листается клавишами J/K, Enter открывает отклик на hh.ru, S пропускает вакансию, D откладывает её.
— открыть крупно
Оценку и письмо готовит Claude — по фактам резюме
Каждая подходящая вакансия получает оценку от 0 до 100 с объяснением: что совпадает с резюме и чего не хватает. Письмо Claude пишет по фактам профиля, а где фактов нет, ставит пометку «уточнить», и такое письмо не уйдёт, пока его не допишут. Тем же путём Claude готовит ответы работодателям, листы подготовки к собеседованию, ответы на вопросы формы отклика и правки резюме. Всё это идёт в Claude Code по подписке, без платы за API.
Как это сделаносвернуть
Подходящие вакансии панель складывает в пакеты по 12 в папку обмена. Claude разбирает их в сеансе Claude Code командой /hh-batch: читает профиль и правила, пишет результат по JSON-схеме, а панель импортирует его сама. Вызовов API нейросети и ключей в продукте нет.
Разбор может идти и без человека: панель сама запускает claude -p, когда появляются пакеты, и сообщает в Telegram, сколько разобрано и сколько подходит. Права у фонового разбора узкие: он пишет только в папки результатов, из команд ему разрешён только сканер стиля, а .env, база и резервные копии ему не читаются.
Тексты вакансий для Claude — данные, а не инструкции: письма с похожими на секреты фрагментами панель при импорте отклоняет. Русские письма Claude пишет по скиллу humanizer-ru (MIT, автор Ilya Utov), а панель проверяет тем же сканером импортированные и отредактированные письма.
— открыть крупно
Откликается человек, а ответы работодателей не теряются
В режиме «Ассистент» панель открывает страницу отклика на hh.ru, письмо уже в буфере обмена, а отправку подтверждает человек. Где hh.ru разрешает, отклик уходит через API, с очередью, паузами и лимитами. Ответы работодателей приходят из hh.ru, из почты или из ручного журнала, а приглашения, отказы и новые вакансии с кнопками действий — в Telegram.
Как это сделаносвернуть
С 15 декабря 2025 года hh.ru ограничил методы API для соискателей, и что доступно конкретному приложению, заранее неизвестно. Поэтому панель запускает зонд и по его итогам выбирает режим: закрыт отклик через API — работает «Ассистент», закрыт список откликов — ручной журнал и письма hh.ru из почты по IMAP.
Все запросы к hh.ru идут через один клиент: OAuth с PKCE, частота запросов, повторы, ошибки, обновление токенов и капча. Методы, которых нет в публичной спецификации, вызываются только после подтверждения зондом. Панель соблюдает лимиты hh.ru и свои, более строгие, — в день, в час и окно отправки, — не эмулирует браузер, не обходит капчу и перед первым откликом просит согласия: отклики уходят от имени пользователя.
В Telegram однотипные события за пять минут склеиваются в одно сообщение. Вакансия с письмом приходит с кнопками «Да, отправлено», «Пропустить» и «Отложить», а команды боту принимаются только из чата владельца.
— открыть крупно
Аналитика показывает, где шансы выше
Аналитика делит рынок на сегменты по поискам, должностям и навыкам: зарплаты, конкуренция, тренды и то, кто отвечает на отклики. Она подсказывает, какие поиски завести, какие слова добавить в стоп-слова и какие навыки поднять в резюме, а правки резюме под сегмент готовит Claude.
Как это сделаносвернуть
Сегмент — любой срез базы: сохранённый поиск, набор критериев, целевая должность, формат работы, опыт или метка. Метки — отрасль, задачи и инструменты — панель ставит сама по названию, навыкам и описанию вакансии, Claude добавляет свои при оценке, а одинаковые по смыслу считаются за одну.
«Горячие» — свежие вакансии с хорошей оценкой и малым числом откликов: их стоит открыть первыми. «Пограничным» не хватило до порога нескольких баллов, на них стоит взглянуть глазами.
Сводка считает конверсии от найденной вакансии до приглашения, медиану реакции работодателей и динамику по дням, любые данные выгружаются в CSV. Отчёты считаются в отдельном потоке, и остальная панель в это время не замирает.
— открыть крупно
Кроме hh.ru — каналы, сайты компаний, тендеры и студии
Панель читает публичные Telegram-каналы с вакансиями, карьерные сайты компаний и тендеры workspace.ru на digital-услуги, а ещё находит студии разработки и дизайна, которым может пригодиться опыт. Отклики на тендеры и письма студиям, в деловом или простом стиле, пишет Claude, а отправляет человек.
Как это сделаносвернуть
Каналы читаются через публичную веб-версию t.me/s, без входа в Telegram. Сайты компаний и студий панель читает без браузера, соблюдает robots.txt и не обходит защиту от роботов.
Тендеры панель проверяет раз в час и сравнивает с анкетой. Студиям, найденным через hh.ru, она предлагает только инициативный отклик: соглашение hh.ru разрешает использовать его данные лишь для поиска работы.
— открыть крупно
— открыть крупно
Работает на своём сервере и открывается с телефона
Панель работает на компьютере или постоянно на своём Linux-сервере. Обновление и откат — одной командой, а если после обновления панель не ответила за четыре минуты, возвращается прежняя версия. Копия базы делается каждую ночь, а свежую можно каждый день забирать с сервера. Открыть панель можно в любом браузере по одноразовой ссылке от бота, и интерфейс работает на телефоне.
Как это сделаносвернуть
На сервере панель — служба systemd в песочнице, с лимитами памяти и CPU. Проверка живости раз в две минуты перезапускает службу, если она трижды подряд не ответила, и сообщает об этом в бота. Установку можно поручить Claude Code: команда /setup ставит зависимости, собирает интерфейс, запускает панель и проводит по шагам, которые человек делает сам, — ключи hh.ru, вход, резюме, бот.
Обновление ждёт окончания задач панели, делает копию базы, переключает код и проверяет /api/health. Выкладывается только коммит, слитый в master с зелёным CI на Windows и Ubuntu: 744 автотеста (625 у бэкенда, с моками hh.ru и Telegram, и 119 у интерфейса), ruff и mypy в строгом режиме. Восстановление из копии проверяется: скрипт поднимает её второй панелью без входа в hh.ru и без бота и сверяет данные.
Ссылка для входа из браузера живёт пять минут, о каждом входе бот сообщает время, браузер и IP, а без входа публичный адрес отдаёт только страницу входа. Наружу открыт только Caddy, и он ограничен: из прав — только привязка к порту, файловая система только на чтение, фильтр системных вызовов.
Интерфейс — на своей дизайн-системе: цвета OKLCH, шесть размеров текста, все компоненты во всех состояниях на странице /ui. Страница никогда не прокручивается вбок, таблицы прокручиваются внутри своего блока, и каждая страница проверяется на ширине 1280–1536 px и на телефоне.
— открыть крупно
Как шла работа
Работал в паре с Claude Code: архитектуру и приёмку держал за собой, код по техническому заданию писал агент, и каждый этап закрывался тестами, линтерами и проверкой страниц в браузере. Поэтому весь продукт — от каркаса и работы с API hh.ru до аналитики, сервера и нового интерфейса — сделал один человек. Код открыт, лицензия MIT: github.com/
Есть похожая задача? Опишите её — предложу, с чего начать.
Написать в Telegram