Инструмент для отбора резюме от HackerRank набрал популярность на LinkedIn и Reddit. Один разработчик решил протестировать его — и получил жуткий разброс результатов.
Он загрузил одно и то же резюме дважды. Первый заход — 90 баллов из 100. После удаления отладочных print-ов — 74 балла. Он отключил DEVELOPMENT_MODE и прогнал тест сто раз. Баллы прыгали от 66 до 99. Если у компании порог отсечения 85, кандидат с одним и тем же резюме провалится в 65% случаев просто из-за случайности.
Вот как работает инструмент. PDF резюме превращается в текст. LLM вызывается шесть раз, чтобы вытащить структурированные данные: базовую информацию, опыт, образование, навыки, проекты, награды. Система тянет GitHub-профиль, сканирует топ-репозитории и добавляет их как контекст. Всё это скармливается LLM для оценки.
Баллы распределяются так: 35 — за open source, 30 — за личные проекты, 25 — за опыт работы, 10 — за технические навыки. Ещё до 20 бонусных баллов за стартап-опыт, портфолио или технический блог. По умолчанию используется модель gemma3:4b с температурой 0.1.
Технические навыки оказались почти стабильными — 8 из 10 в 98 из 100 прогонов. Это чек-лист: знаешь React — получаешь балл, нет — не получаешь. А вот с проектами — катастрофа. LLM то пишет, что проектам «не хватает архитектурной сложности», то что они «демонстрируют реальное развёртывание». Даже при температуре 0 результаты всё равно прыгают: пользователь на GitHub показал баллы 27, 34, 32, 34, 34, 30 на шести последовательных запусках.
Проблема не в модели. Gemini дала более узкий разброс — 48–64 балла, но при пороге 60 кандидат всё равно проваливается в 28% случаев без своей вины.
Особенно тревожно с опытом. 25 из 25 — каждый раз. Разработчик подставил старое резюме с одной стажировкой — снова 25 из 25. Причина в промпте: оценка опыта занимает всего две строки. Ни рубрики, ни примеров, ни якорей, что считать за 15 баллов, а что за 25. Джуниор с одной стажировкой и принципиал инженер с десятилетием опыта получают одинаково.
LLM отлично парсит резюме и проверяет, знает ли кандидат Python. Но оценивать, стоит ли опыт 18 или 24 баллов, — это уже гадание. Инструмент даёт 65% веса open source и проектам, отсекая инженеров, которые строили что-то серьёзное, но не выкладывали код на GitHub.
Поправка от 28 июня: в шаблоне resume_evaluation_criteria.jinja на первой строке указано «Software Intern» — нигде больше в репозитории это не задокументировано. Явная подмена промпта на Senior SWE ничего не изменила: критерии оценки оказались не привязаны к должности.