- BrainTools - https://www.braintools.ru -
Летом я искал работу Python-разработчиком в AI: LLM, RAG, автоматизация, удаленка. Опыта [1] у меня около двух лет, и откликаться руками на десятки вакансий в день мне быстро надоело. Поэтому я написал бота, который делал это за меня: находил вакансии на hh, решал, подходят ли они, писал сопроводительное и откликался.
Бот проработал два месяца, с 17 июня по 17 августа. За это время он разобрал 1518 вакансий и отправил 339 откликов. Выборка маленькая: один человек, одно резюме. Зато про каждый отклик я знаю все: какую оценку вакансии поставила модель, ушло ли письмо и какой версией бота оно написано.
Поэтому тут будет не только общая воронка, но и то, как менялись результаты, пока я допиливал бота.
С 15 декабря 2025 hh закрыл API для соискателей, поэтому бот работает через обычный браузер (Playwright) на моем залогиненном профиле. Два раза в день его запускает планировщик Windows, и за прогон он делает вот что:
Ищет вакансии по 14 запросам: “AI Engineer”, “LLM Engineer”, “RAG”, “Python FastAPI”, “чат-бот Python” и так далее. Только удаленка, опыт до 6 лет.
Отсекает лишнее по стоп-словам: senior, lead, тимлид, архитектор, 1С, стажер.
Отдает описание вакансии LLM. Модель ставит оценку от 0 до 100: 85 и выше – роль прямо про LLM или ML, 70-84 – Python-бэкенд, где ИИ часть задач, ниже уже мимо. Откликается бот только выше порога.
Пишет сопроводительное под вакансию: 4-7 предложений, в первом мой опыт под их главное требование. Без “меня заинтересовала ваша вакансия”.
Откликается. Если работодатель задал вопросы, отвечает на них по моему резюме. Если в вакансии тест, ничего не делает и шлет ее мне в Telegram.
Проверяет, что отклик реально ушел, и присылает карточку в Telegram.
Еще бот читает чаты с рекрутерами. На простые вопросы про опыт и стек отвечает сам. Все, что касается денег, переезда, личных данных и тестовых, присылает мне черновиком, и решаю уже я.
LLM я гонял через Codex CLI по подписке, так что за API отдельно не платил. Состояние лежит в SQLite: какие вакансии уже оценены, куда уже откликнулся, какие чаты прочитаны.
Свою базу бот вел сам, но в ней нет главного: что ответил работодатель. Это есть только на hh. Страница “Отклики и приглашения” отдает статусы в JSON прямо внутри HTML, так что я прошелся по всем страницам вместе с архивом и сопоставил отклики с базой бота по id вакансии.
Выгрузка от 20 октября. С последнего отклика прошло два месяца, так что кто хотел ответить, уже ответил. Исходы считал так:
Приглашение – статус “Приглашение” или “Собеседование”.
Отказ – статус “Отказ”.
Открыли и молчат – отклик просмотрен, статус не менялся.
Не открыли – отклик так никто и не посмотрел.
В 339 входят только отклики, которые отправил сам бот. Вакансии с тестами, которые он переслал мне, и мои ручные отклики за те же месяцы считаю отдельно.
Из 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 приглашений. Что я из этого вынес:
Самая полезная правка самая простая: не откликаться на вакансии не своего уровня. После нее конверсия выросла в разы.
Письмо должно начинаться с твоего опыта под их задачу, а не с пересказа компании. И без длинных тире.
Больше откликов не значит больше приглашений. Расширение поиска уронило конверсию до 2,9%.
LLM нормально отсеивает вакансии не по теме, но предсказать, позовут ли тебя, не может. А оценку без шкалы в промпте можно сразу выкидывать.
Тесты при отклике себя не окупили: 26 откликов с тестом и ни одного приглашения по статусам.
Бот экономит время на поиске и письмах, но разговор с рекрутером все равно ведешь сам.
Автор: opium
Источник [2]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/37235
URLs in this post:
[1] Опыта: http://www.braintools.ru/article/6952
[2] Источник: https://habr.com/ru/articles/1096734/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1096734
Нажмите здесь для печати.