За неделю автопрогон просматривает около двадцати источников вакансий и вытягивает несколько сотен объявлений. Один обход LinkedIn дал 112 результатов. За год пайплайн оценил больше 1500 вакансий.
Откликов за это время — несколько штук. Так и задумано. Автор этой системы не выпускник, рассылающий резюме веером: ему за сорок, пять лет он отработал в банковских операциях Lloyds, восемь лет развозил почту, два года был Windows-сисадмином, сейчас руководит сменами печати на складе Amazon. В этом году получил BSc in Computing and IT в Open University. Профессионального титула «software engineer» у него нет — он охотится за первым, и обязательно удалённо.
Дальше — разбор, как устроена такая воронка и что из неё переносится на обычный поиск работы.
Пять стадий воронки
1. Сбор
Шестнадцать источников через API и RSS плюс обходы на Playwright там, где API нет: Indeed, StepStone, LinkedIn через сохранённую сессию и немецкая Arbeitsagentur. Каждый источник пишет markdown с сырыми результатами, всё складывается в хранилище на SQLite с дедупликацией — одно объявление не обрабатывается дважды.
2. Жёсткий отсев правилами
До того как хоть что-то увидит модель, работают дешёвые детерминированные фильтры: «Senior» в заголовке, город за пределами радиуса, шаблоны рекрутёрского спама, требования больше трёх лет профессионального опыта. «Erste Erfahrung» подходит, «5+ years» — нет. Это строки и правила, а не вызовы модели. Так сделано осознанно: они бесплатны и их видно целиком, до последнего символа.
Счёт на момент подсчёта: 12 позиций в списке «уверенно», 23 в «может быть» и 1539 в отстойнике. Огромное ведро отсева — признак работающей системы, а не сломанной.
3. Оценка языковой моделью
Выжившие уходят в LLM, который считает соответствие честному профилю — вместе с ограничениями, которые обычно всплывают только на собеседовании. Письменный немецкий на уровне B1 закрывает позиции с «verhandlungssicher Deutsch in Wort und Schrift»; при этом переписка внутри команды на немецком нормально, потому что устный — C1. Такие правила, прописанные в промпте вместо интуиции, убирают целый класс оптимистичных ошибок.
4. Проверка тела объявления
Эту стадию пришлось добавить после болезненного опыта. Агрегаторы льстят заголовками: шесть кандидатов подряд из LinkedIn, идеальных по названию, рассыпались, когда выкачали настоящий текст вакансии. «Junior» хотел пять лет опыта, «remote» — три дня в офисе в другом городе, «AI engineer» оказался разметкой данных. Правило теперь жёсткое: ничего не попадает в очередь откликов, пока не выкачано и прочитано реальное тело объявления.
5. Человек
Ссылку автор открывает сам и читает сам. Дальше — один отклик за раз, ровно в той форме, которую требует работодатель. Ни писем, сгенерированных пачкой, ни автоотправки. Когда отклик стоит дорого, объявление читают внимательно, и это, пожалуй, главная функция всей конструкции.
Стадии подряд
| Стадия | Чем делается | Что отсекает | Цена ошибки |
|---|---|---|---|
| Сбор | API, RSS, Playwright, дедупликация в SQLite | Повторную обработку тех же объявлений | Мусор в базе, токены не потрачены |
| Жёсткий отсев | Строки и правила | Неподходящие заголовки, города, требования к опыту | Почти нулевая: правила проверяются глазами |
| Оценка LLM | Промпт с честным профилем и ограничениями | Формально подходящее, но нереализуемое | Токены; промпт правится руками |
| Проверка | Загрузка настоящего текста вакансии | Приукрашенные заголовки агрегаторов | Самая высокая: теряется время на отклик |
| Решение | Человек | Автоматическую лень | Ничего, кроме внимания |
Что переносится на любую охоту за работой
- Фильтруй до модели. Правила бесплатны, токены — нет. Всё, что решается строкой, решай строкой: такой фильтр можно отлаживать в шесть утра перед сменой, и он не соврёт.
- Не разрешай модели придумывать вакансии. Если попросить LLM «найти работу», он охотно сочинит правдоподобные объявления с правдоподобными ссылками. Здесь модель только ранжирует то, что реально скачали скраперы; каждая ссылка в очереди ведёт на настоящую доску.
- Последняя миля остаётся за тобой. Задача пайплайна — сделать тебя придирчивым. Не ленивым.
- Пайплайн и есть портфолио. Долго кажется, что нужен проект поубедительнее, чтобы доказать способность писать софт. А доказательство уже работает каждый день: тесты на Python, живые скраперы, хранилище с дедупликацией, CI на ETL-фреймворке — система, которая решает задачу с реальными ставками.
Когда так делать не стоит
Если ищешь широко, без узких ограничений, три-четыре источника и штатные фильтры доски закроют вопрос быстрее, чем сборка пайплайна. Если целишься в одну конкретную компанию, воронка из шестнадцати источников просто не окупится.
Отдельный случай — обслуживание. Скраперы ломаются после каждого редизайна сайта, и без времени на починку автоматизация тихо превращается в источник устаревших ссылок. Начинать тогда лучше с ручного шорт-листа.
Обратная сторона: карьерный переход в сорок с лишним — это как раз про узкие ограничения. Первый инженерный титул, только удалёнка, конкретный уровень языка. На таких фильтрах пайплайн и выигрывает.
Типичные ошибки
- Верить заголовку. Агрегаторы льстят, тело объявления читается отдельно и всегда.
- Пускать модель туда, где хватит правила: отлаживать поведение промпта сложнее, чем просмотреть список запрещённых слов.
- Автоматизировать сам отклик. Пачка писем от модели экономит время и убивает смысл: форма требует конкретики, и взять её можно только из прочитанного текста.
- Ждать идеального проекта для портфолио, пока рабочий инструмент уже решает твою задачу.
- Мерить успех числом откликов. Полезнее считать, сколько объявлений отброшено осознанно.
Смысл всей затеи в одном. Доска вакансий не знает, кто ты и что тебе подходит; она ранжирует то, что выгодно ей. Пайплайн, собранный под свой профиль, фильтрует по твоим правилам, и каждый отброшенный вариант можно объяснить. Двенадцать позиций в очереди из тысячи с лишним просмотренных — это нормальный результат для человека, который ищет первую работу в новой профессии и не готов тратить вечера на ленту, где перемешаны сеньорские вакансии, рекрутёрский спам и поддельные «AI engineer».
Комментарии (0)
Войдите, чтобы комментировать.
Пока нет комментариев. Будьте первым.