Летом я искал работу Python-разработчиком в AI: LLM, RAG, автоматизация, удаленка. Опыта у меня около двух лет, и откликаться руками на десятки вакансий в день мне быстро надоело. Поэтому я написал бота, который делал это за меня: находил вакансии на hh, решал, подходят ли они, писал сопроводительное и откликался.

Бот проработал два месяца, с 17 июня по 17 августа. За это время он разобрал 1518 вакансий и отправил 339 откликов. Выборка маленькая: один человек, одно резюме. Зато про каждый отклик я знаю все: какую оценку вакансии поставила модель, ушло ли письмо и какой версией бота оно написано.

Поэтому тут будет не только общая воронка, но и то, как менялись результаты, пока я допиливал бота.

Как устроен бот

С 15 декабря 2025 hh закрыл API для соискателей, поэтому бот работает через обычный браузер (Playwright) на моем залогиненном профиле. Два раза в день его запускает планировщик Windows, и за прогон он делает вот что:

  1. Ищет вакансии по 14 запросам: “AI Engineer”, “LLM Engineer”, “RAG”, “Python FastAPI”, “чат-бот Python” и так далее. Только удаленка, опыт до 6 лет.

  2. Отсекает лишнее по стоп-словам: senior, lead, тимлид, архитектор, 1С, стажер.

  3. Отдает описание вакансии LLM. Модель ставит оценку от 0 до 100: 85 и выше - роль прямо про LLM или ML, 70-84 - Python-бэкенд, где ИИ часть задач, ниже уже мимо. Откликается бот только выше порога.

  4. Пишет сопроводительное под вакансию: 4-7 предложений, в первом мой опыт под их главное требование. Без “меня заинтересовала ваша вакансия”.

  5. Откликается. Если работодатель задал вопросы, отвечает на них по моему резюме. Если в вакансии тест, ничего не делает и шлет ее мне в Telegram.

  6. Проверяет, что отклик реально ушел, и присылает карточку в Telegram.

Еще бот читает чаты с рекрутерами. На простые вопросы про опыт и стек отвечает сам. Все, что касается денег, переезда, личных данных и тестовых, присылает мне черновиком, и решаю уже я.

LLM я гонял через Codex CLI по подписке, так что за API отдельно не платил. Состояние лежит в SQLite: какие вакансии уже оценены, куда уже откликнулся, какие чаты прочитаны.

Откуда цифры

Свою базу бот вел сам, но в ней нет главного: что ответил работодатель. Это есть только на hh. Страница “Отклики и приглашения” отдает статусы в JSON прямо внутри HTML, так что я прошелся по всем страницам вместе с архивом и сопоставил отклики с базой бота по id вакансии.

Выгрузка от 20 октября. С последнего отклика прошло два месяца, так что кто хотел ответить, уже ответил. Исходы считал так:

  • Приглашение - статус “Приглашение” или “Собеседование”.

  • Отказ - статус “Отказ”.

  • Открыли и молчат - отклик просмотрен, статус не менялся.

  • Не открыли - отклик так никто и не посмотрел.

В 339 входят только отклики, которые отправил сам бот. Вакансии с тестами, которые он переслал мне, и мои ручные отклики за те же месяцы считаю отдельно.

Воронка

Из 1518 вакансий до приглашения дошли 26
Из 1518 вакансий до приглашения дошли 26

Из 339 откликов приглашений пришло 26, это 7,7%, или примерно каждый тринадцатый отклик. Почти 40% закончились отказом, а каждый пятый так никто и не открыл. Отклики ушли в 258 разных компаний.

Исход

Откликов

Доля

Приглашение

26

7,7%

Отказ

133

39,2%

Открыли и молчат

110

32,4%

Не открыли

70

20,6%

Отказывают быстро. Половина отказов пришла в первые сутки (медиана 19 часов), а четверть меньше чем за полтора часа. Три четверти укладываются в 4,5 дня, но бывали и через две-три недели.

Для приглашений время честно посчитать не получилось. hh отдает только время последнего изменения, а после приглашения идет переписка в чате, и она это время сдвигает.

Что меняло конверсию

Пока бот работал, я его постоянно правил. По датам коммитов отклики делятся на пять периодов, и разница между ними больше, чем я ожидал.

Конверсия в приглашение по периодам доработок бота
Конверсия в приглашение по периодам доработок бота

Период

Что было в боте

Откликов

Приглашений

17.06 - 30.06

первая версия, без фильтра по уровню

152

7 (4,6%)

01.07 - 11.07

отсекаю senior и lead, порог выше

26

6 (23%)

12.07 - 17.07

строже оценка, письма только по фактам из резюме

58

6 (10,3%)

18.07 - 02.08

письмо начинается с меня, а не с компании

35

5 (14,3%)

03.08 - 17.08

шире поиск, ниже порог, 12 откликов за прогон

68

2 (2,9%)

Первая версия и фильтр по уровню

Первые две недели бот откликался почти на все подряд. Фильтра по уровню не было, senior и lead спокойно проходили, а модель с первой версией промпта ставила 100 из 100 двум вакансиям из трех. Итог: 152 отклика и 7 приглашений.

1 июля я добавил стоп-слова и фильтр по опыту, поднял порог оценки с 60 до 75 и запретил в письмах длинные тире и стрелки: по ним ИИ угадывался с первой строки. За следующие 11 дней пришло 6 приглашений на 26 откликов. 23% на такой выборке скорее везение, но разница с июнем в пять раз. Самая полезная правка за все лето оказалась самой скучной: перестать откликаться на вакансии не своего уровня.

Строже оценка и письма по фактам

12 июля я переписал шкалу оценки: 85+ только для ролей прямо про ИИ и прямое “не завышай”. Порог вырос до 78. Еще модель начала сама придумывать мне зарплатные ожидания, так что про деньги и формат работы она теперь пишет только дословно из моего профиля. В этот период вышло 10%.

Письмо начинается с меня

18 июля я поменял начало письма. Раньше первое предложение было про компанию: “вы делаете X”. Рекрутер это и так знает, и такое начало читается как вода. Теперь первое предложение берет их главное требование и показывает проект из резюме, где я это уже делал: не “вы делаете X”, а “я делал X”. Лучший период за все время: 14,3%, каждый седьмой отклик.

Шире поиск

К концу июля подходящие вакансии начали заканчиваться, и бот находил одну-четыре в день. 3 августа я добавил запросы “RAG”, “ML Engineer”, “GPT интеграция”, “Python FastAPI” и “чат-бот Python”, опустил порог с 78 до 74 и поднял лимит с 4 до 12 откликов за прогон. Откликов стало больше, а приглашений за две недели пришло два.

При этом оценки модели почти не упали: медиана 86 против 88 раньше. Для модели новые вакансии были почти такими же хорошими, а для работодателей нет.

Оговорюсь: выборки маленькие. 5 приглашений из 35 и 2 из 68 ничего не доказывают, и рынок в августе мог быть просто тише. Но картина логичная: чем точнее отбор и письмо, тем выше конверсия, а расширение ради объема ее убивает.

Что оказалось неочевидным

Оценка модели без шкалы ничего не значит

Первый промпт спрашивал у модели одно: связана ли вакансия с ИИ. Про мой уровень там не было ни слова, поэтому 100 из 100 получала и вакансия для сеньора, если она про ИИ. В июне такую оценку получили 96 вакансий из 152, на которые бот откликнулся.

В июле в промпте появились мой уровень и шкала с описанием каждого диапазона, и оценки начали хоть что-то значить. Отклики с 1 июля:

Оценка модели

Откликов

Приглашений

60-79

50

4 (8,0%)

80-89

93

10 (10,8%)

90-99

42

5 (11,9%)

Связь есть, но слабая: между “так себе” и “почти идеально” разница в полтора раза. Модель хорошо понимает, про ИИ ли вакансия, и гораздо хуже понимает, позовут ли туда меня.

Отклики без письма

У части вакансий на hh нет поля для сопроводительного. До середины июля бот туда просто откликался без письма, и это дало 8 приглашений из 20. С письмом за то же время было 8 из 191.

Вывод “письмо вредит” отсюда делать нельзя. Подозреваю, что это просто другой тип работодателей: кто не просит письмо, тот и отбирает проще. С 16 июля бот стал отправлять письмо в чат после отклика, и разница почти исчезла: 3 из 31 против 7 из 97.

Время отправки не важно

Бот запускался дважды в день, и отклики уходили в основном в 7 утра и в 3 часа дня по Москве. Утренние дали 9,1% приглашений (165 откликов), дневные 7,4% (136). На таких объемах это шум, так что подгадывать “идеальный час” смысла нет.

Чаты и вакансии с тестами

Я думал, что бот будет сам отвечать рекрутерам на простое: стек, опыт, график. Но он смотрел только чаты с приглашениями, а простые вопросы задавали в других. После отклика в чат часто приходил робот-рекрутер hh или ИИ-помощник компании и устраивал мини-собеседование: сколько лет пишешь на Python, с какими embedding-библиотеками работал, какие метрики считал. Из 31 чата с живой перепиской за лето такой робот был в 18, и на его вопросы я отвечал сам. В чатах с приглашениями бот подготовил 27 черновиков, и все они были про деньги, переезд, личные данные или тестовое, так что их он отдавал мне на проверку.

С тестами вышло так. На hh работодатель может прикрепить к вакансии тест или анкету с вопросами, и без ответов отклик не отправить. Простые анкеты бот заполнял сам по моему резюме, а настоящие тесты пересылал мне в Telegram. Таких вакансий набралось 35.

За июнь-август с тестом ушло 26 откликов: 14 заполнил бот, 12 я сделал руками. По статусам hh приглашений с них ноль: 14 отказов, 9 открыли и молчат, 3 так и не открыли. У откликов бота без теста за то же время приглашений было 8%. Вакансии с тестом требуют больше всего усилий, а вернули меньше всего.

Это только тесты внутри hh. Отдельно были настоящие тестовые задания, которые присылали в чат после отклика, и решения я туда же и скидывал. Таких я сделал около десяти: CRM для юриста на React и Supabase, оплату через Stripe на Django, инструмент, который сам ищет блогеров и пишет им предложения, скиллы для AI-платформы, кейс для операционного менеджера с разбором тикета и скриптом аналитики, MCP-сервер, через который AI-агент ходит в сеть через прокси, и верстку лендинга по образцу. Бот с ними не помогал, их я делал сам, но через Claude Code, поэтому самые быстрые занимали пару часов.

Чем все закончилось

С hh у меня в итоге было два настоящих собеседования, созвоны по видео.

Работу я нашел не на hh, а на другом сайте. Там я прошел еще два собеседования, и скорость была совсем другой: отвечали в тот же день, а созвон ставили на следующий.

На hh все иначе. Недавно мне написали и позвали на собеседование по вакансии, где я делал тестовое задание. Тестовое я сделал в тот же день, а ответ пришел через два месяца.

Бот снял с меня рутину с поиском и письмами. Но сам hh оказался медленным каналом: в одном месте собеседование ставят на завтра, а в другом ответ на тестовое идет два месяца.

Итого

За два месяца бот разобрал 1518 вакансий, отправил 339 откликов и принес 26 приглашений. Что я из этого вынес:

  1. Самая полезная правка самая простая: не откликаться на вакансии не своего уровня. После нее конверсия выросла в разы.

  2. Письмо должно начинаться с твоего опыта под их задачу, а не с пересказа компании. И без длинных тире.

  3. Больше откликов не значит больше приглашений. Расширение поиска уронило конверсию до 2,9%.

  4. LLM нормально отсеивает вакансии не по теме, но предсказать, позовут ли тебя, не может. А оценку без шкалы в промпте можно сразу выкидывать.

  5. Тесты при отклике себя не окупили: 26 откликов с тестом и ни одного приглашения по статусам.

  6. Бот экономит время на поиске и письмах, но разговор с рекрутером все равно ведешь сам.

Комментарии (3)


  1. danilovmy
    20.10.2026 12:20

    Вторая статья за сегодня про нулевую эффективность подачи на hh. Может просто не использовать hh?


  1. Gletcher_D
    20.10.2026 12:20

    Интересная статья! Но появился вопрос: если же hh медленный канал, то через какой сайт получилось найти работу? Ищу работу уже почти год...


    1. opium Автор
      20.10.2026 12:20

      харифай неплохо себя показывает, там я очень быстро переходил на видео собесы