Если вы когда-либо загружали резюме в систему отслеживания кандидатов (ATS) и задавались вопросом, почему его так и не увидел человек, вы уже понимаете проблему «черного ящика» в найме с помощью ИИ. Большинство инструментов для оценки резюме скрывают свою логику за SaaS-панелями управления и вежливыми письмами об отказе. HackerRank пошел другим путем. Его Hiring Agent имеет открытый исходный код, а это значит, что любой может заглянуть внутрь, проследить код и увидеть, как именно LLM превращает PDF-файл и ссылку на GitHub в число. Один разработчик сделал именно это. То, что он обнаружил, — это не отточенный фреймворк для рекрутинга. Это зеркало, показывающее, как легко автоматизация закрепляет личные мнения.
Под капотом
Этот конвейер обманчиво прост. PDF-резюме кандидата преобразуется в Markdown, а затем парсится в жесткую структуру JSON с полями для истории работы, навыков, образования и сторонних проектов. Python-скрипты передают данные от одного этапа к другому, но основная «мыслительная» работа происходит внутри цепочки промптов. Для каждого раздела предусмотрен свой промпт. LLM считывает структурированные данные, применяет правила оценки, написанные на обычном английском языке, и выдает оценку.
Эта архитектура имеет значение. Основная нагрузка ложится не на умные алгоритмы или циклы обучения. Она ложится на формулировки промптов. Измените несколько прилагательных в наборе инструкций, и один и тот же инженер превратится из сильного кандидата в слабого. Это делает инструмент хрупким. Но это также делает его честным. Большинство поставщиков ИИ-решений для найма никогда не позволили бы вам увидеть свои промпты. Прототип HackerRank обнажает правду: оценка резюме всегда зависела от критериев оценки, а не от кода.
Тирания 35 процентов
Самое поразительное предубеждение скрыто в критериях оценки. Вклад в open source составляет 35 процентов от общего балла. Это огромный вес. Для сравнения: вся история работы, образование и набор навыков кандидата должны конкурировать с одной лишь его внерабочей деятельностью в программировании за оставшиеся 65 процентов.
Правила даже строже, чем кажется из весовых коэффициентов. Личные репозитории на GitHub не учитываются. Поддержка собственной библиотеки, какой бы полезной она ни была, приносит ноль баллов. Инструмент вознаграждает только вклад в чужие проекты. Чтобы заработать эти баллы, кандидат должен быть коммиттером в чьей-то чужой кодовой базе.
Это предпочтение имеет реальный демографический вес. Инженеры, поддерживающие собственные инструменты, часто делают это потому, что решили проблему, которую никто другой не решал. Они также могут занимать должности, запрещающие внешнюю деятельность, работать в регионах с меньшим количеством крупных open-source сообществ или просто иметь семейные обязательства, которые делают бесплатное программирование в нерабочее время невозможным. Формулируя промпт таким образом, инструмент измеряет не чистые инженерные способности. Он измеряет участие в специфической культуре программирования, а затем называет это объективностью.
Когда инструкции не срабатывают
Критерии также пытаются вознаградить опыт работы в стартапах. В промпте прямо предлагается давать дополнительные баллы основателям и инженерам ранних стадий. В теории это звучит разумно. Ветераны стартапов часто совмещают множество ролей и работают в условиях высокого давления. Поэтому тестировщик провел эксперимент. Он взял одно и то же резюме и не менял ничего, кроме названия последней должности, прогнав его через агента трижды с тремя разными метками: Senior Java Engineer, Founding Engineer и Co-founder / CTO.
Баллы почти не изменились. LLM, по сути, проигнорировала инструкцию.
Это одно из самых важных открытий всего аудита. Оно доказывает, что правило в промпте — это всего лишь предложение. Большие языковые модели обучаются на огромных корпусах текстов, которые содержат собственные упрямые предубеждения о том, что является признаком качества. Если обучающие данные модели связывают престиж с определенными должностями, названиями компаний или ключевыми словами, а не с фразой «founding engineer», ваша тщательно написанная инструкция может просто не сработать. Промпт говорит модели обращать внимание на стартап-должности, но у модели есть свои идеи, и она побеждает. Этот разрыв между человеческим намерением и поведением машины опасен, когда результатом является оценка для найма.
Баллы без цели
Помимо основных весовых коэффициентов, критерии полны странно специфических микроправил, которые больше похожи не на решения, основанные на данных, а на чей-то ночной мозговой штурм.
Профиль в LinkedIn стоит ровно один балл. Не качество профиля. Не количество рекомендаций или глубина истории работы. Просто наличие URL в резюме добавляет один балл к общему счету. В то же время участие в Google Summer of Code стоит пять баллов. А если у кандидата есть форки репозиториев на GitHub, агент игнорирует любой форк, у которого менее пяти собственных форков.
Каждое из этих правил представляет собой громкое оценочное суждение, замаскированное под тихий коэффициент. Почему наличие LinkedIn вообще стоит балла? Это сигнализирует о том, что кандидат умеет заполнять профиль в социальной сети, а не о том, что он может спроектировать распределенную систему. Почему GSoC стоит в пять раз больше, чем ссылка на LinkedIn? Возможно, потому что автор промпта уважает эту программу. Это уважение теперь стало политикой найма. И почему граница проведена именно на пяти форках? Инструмент с десятью пользователями может решать критически важную нишевую задачу. В рамках этой системы его как будто и не существует.
Эти числа не являются результатом регрессионного анализа. Их выбрали люди. Один человек решил, что участие в open source стоит больше трети ценности инженера. Другой решил, что профиль в LinkedIn стоит 1 балл. Когда вы автоматизируете эти догадки, вы наделяете их авторитетом программного обеспечения.
Каждый промпт — это предубеждение
Самое сложное в создании агента для оценки резюме — это не парсинг PDF или вызов API. Это решение о том, что действительно важно. Каждое слово в промпте для оценки — это оценочное суждение о том, что делает инженера хорошим. Должны ли сторонние проекты перевешивать основную работу? Должен ли публичный код значить больше, чем работа в частных компаниях? Должен ли профиль в социальных сетях вообще иметь значение? На эти вопросы нет математически правильных ответов. Есть только культурные предпочтения.
Когда команда рекрутеров делает это вручную, предвзятость, по крайней мере, распределена между многими рецензентами, которые могут не соглашаться, калибровать оценки и учиться. Когда это делает LLM, предвзятость одного промпт-инженера застывает в виде повторяемой функции, работающей в масштабе. Инструмент не устраняет субъективность. Он её архивирует.
Используйте это как зеркало, а не как фильтр
Hiring Agent от HackerRank лучше всего воспринимать как прототип. Он ощущается как черновик, которым он и является. Он дает захватывающее раннее представление о том, как создаются инструменты найма на базе ИИ, но ему не хватает калибровки, тестирования и разнообразия мнений, присущих реальной рекрутинговой организации.
Если вы создаете технологии для найма, изучайте это внимательно. Это показывает, как быстро произвольные правила превращаются в автоматизированный барьер. Если вы кандидат, помните, что эти системы — не оракулы. Это электронные таблицы, облаченные в естественный язык, и они несут в себе предположения тех, кто писал промпты.
Пока эти инструменты не будут тестироваться на предвзятость так же строго, как и инженеры, которых они оценивают, они должны служить лишь основой для человеческого общения, а не заменять его.
