Миллион вакансий на входе — единицы на выходе
Каждая точка — вакансия. Повторы склеиваются, правила и две ступени ИИ отсеивают лишнее, а до Telegram долетает примерно одна карточка из 1 700.
дней работает без остановки
карьерная страница компаний под наблюдением — от стартапов на Ashby до корпораций на Workday
уникальных вакансий в базе от 12 016 разных компаний
источника: LinkedIn, Workday, Greenhouse, Ashby, Lever, SmartRecruiters…
хороших вакансий вместо сотен — каждая с объяснением, почему подходит
Конвейер из семи шагов
Вакансия проходит через сито: сначала дешёвые и быстрые правила, потом всё более «умные» и дорогие проверки. До нейросети доходит меньше одной вакансии из десяти.
Сбор
Бот опрашивает LinkedIn и публичные карьерные страницы компаний (системы найма Workday, Greenhouse, Ashby, Lever и ещё 15 других). Большие списки компаний обходятся по очереди: тихие страницы — реже, активные — чаще.
Фильтр-правила
Без всякого ИИ отсекается очевидное: другая страна, офис не в моём городе, обязательный немецкий или французский, стажировки, игровая индустрия. Сомнительное не выбрасывается, а уходит дальше на проверку.
Полное описание
Для выживших бот скачивает полный текст вакансии и прогоняет фильтры второй раз — теперь уже по описанию, а не только по заголовку.
Склейка дублей
Одна и та же вакансия часто висит в пяти городах и на трёх сайтах. Бот находит такие «семьи» по тексту и оценивает каждую только один раз.
Быстрая сортировкаAI
Дешёвая модель за секунды решает «оставить / выбросить». Это отсекает ещё ~3 из 4 вакансий, не тратя деньги на подробный разбор.
Подробная оценкаAI
Сильная модель сравнивает вакансию с моим профилем по рубрике: роль, уровень, домен, география, формат. Ставит балл 0–100 и вердикт: «откликаться», «уточнить», «пропустить». Спорную географию перепроверяет вторая модель.
Telegram и таблица
Лучшее прилетает в Telegram с объяснением, почему вакансия подходит. Всё остальное складывается в Google-таблицу, раз в день приходит сводка.
Охота за «слагами»
У каждой компании в системе найма есть короткое имя — «слаг». Узнал слаг — получил прямой доступ ко всем вакансиям компании, раньше и полнее, чем на LinkedIn. Общего списка ни у кого нет, поэтому бот собирает его сам, как детектив.
Архив интернета
Common Crawl — ежемесячный снимок миллиардов веб-страниц. Бот ищет в нём все когда-либо встречавшиеся адреса вида jobs.lever.co/… и вытаскивает имена компаний.
Журналы сертификатов
Каждый HTTPS-сертификат публично регистрируется. Поддомены вроде acme.recruitee.com выдают компанию ещё до того, как её страницу кто-то проиндексирует.
Открытые каталоги
Чужие базы слагов, список компаний Y Combinator, агрегаторы. Доверять им нельзя: в одном каталоге Workday 46% записей оказались битыми — каждую проверяем вживую.
Работодатели из LinkedIn
Видишь компанию на LinkedIn — угадай её слаг (acme, acmehq, acme-inc…) и проверь. Засчитывается, только если сама система найма называет компанию так же.
Каждого кандидата бот проверяет вживую
кандидатов-слагов собрано из всех источников
оказались мёртвыми (страница 404) — отсеяны проверкой
живых досок с открытыми вакансиями прямо сейчас
угадываний по LinkedIn попадают в цель: 1 525 из 50 005
Как обойти 67 тысяч страниц и никого не задолбать
Каждый цикл бот берёт небольшую порцию досок — сначала те, что давно не проверялись. Доска без вакансий опрашивается всё реже:
Две «404» подряд — доска помечается надгробием и перепроверяется раз в две недели: вдруг компания снова начнёт нанимать. Пустые доски тоже перепроверяются — однажды так нашлось сразу 153 доски, которые снова начали нанимать.
Где скрипт не пускают — настоящий браузер
Некоторые площадки отвечают обычному HTTP-запросу ошибкой 429 и проверкой на JavaScript. Для них бот открывает страницы в Chromium без окна через Playwright.
Так же: hiring.cafe и Wellfound за Cloudflare.
опросов заблокировано за 4 дня до перехода
блокировок после перехода на браузер (с 14 октября)
новых вакансий с этой площадки с тех пор
Из 1,65 миллиона — 968
Каждый этап отрезает большую часть. Шкала логарифмическая, иначе последние ступени было бы не разглядеть.
Таблица
Главные причины отказа на этапе правил
Число вакансий, отброшенных каждым правилом (у одной вакансии может быть несколько причин).
Где больше всего шума, а где — золото
Workday приносит почти половину всех вакансий, но лишь 0,2% из них доходят до Telegram. Маленькие стартаповые системы найма (Ashby, Greenhouse) — в 50 раз «точнее».
Таблица
ИИ оценивает, код считает
Нейросеть не ставит итоговый балл сама. Она лишь оценивает каждое требование вакансии по шкале 0–1–2 и пять критериев «хорошей работы». Всю арифметику, пороги и вердикт считает обычный код: когда считала сама модель, в 20% случаев её балл противоречил её же правилам.
Все оценённые вакансии на одной карте
2 735 вакансий, оценённых по текущей рубрике. Две из трёх упираются в стоп-фактор — чаще всего географию, — даже при высоком соответствии.
Когда появляются хорошие вакансии
По вакансиям, которые бот прислал в Telegram.
медиана от момента, когда бот впервые увидел вакансию, до сообщения в Telegram
приходят быстрее чем за полчаса, 89% — за два часа
реже публикуют хорошие вакансии в выходной день, чем в будний
День публикации
Час публикации, CET
Только вакансии с точным временем публикации (476). Пик — с 15 до 18.
Отрасли
Грубая группировка по отрасли, которую называет ИИ; одна вакансия — одна группа.
Прислано по месяцам
Июль — неполный месяц (с 13-го).
Формат работы
Скромно, но надёжно
строк Python
автотест
сторонних библиотек в ядре · ~400 коммитов
Принципы
Один процесс, одна база SQLite, только стандартная библиотека Python. Никаких серверов и очередей.
Любой сбой — локальный: упал один источник, остальные работают. Если сайт просит притормозить, бот уважает паузу.
Сомнение трактуется в пользу вакансии: правила режут только при явных признаках, остальное решает ИИ.