3,583 papers
arXiv:2602.18550 71 20 фев. 2026 г. FREE

Validity-аудит LLM-скрининга резюме: почему ИИ ошибается при отборе кандидатов

КЛЮЧЕВАЯ СУТЬ
Парадокс: LLM звучит одинаково убедительно и когда права, и когда нет. На кандидатах с разницей в один навык даже топовые Claude и GPT-5 выбирают правильного лишь в 82–93% случаев — это монетка с небольшим перевесом. Слабые модели вроде Llama 8B на тех же парах дают 50–67% — чистая случайность. Исследование даёт аудиторскую рамку: разделяй скрининг на два этапа — жёсткий чеклист по обязательным критериям и человеческий финал среди схожих. Иначе ты получаешь не объективный отбор, а уверенно звучащий случайный выбор.
Адаптировать под запрос

TL;DR

LLM плохо различает кандидатов, когда разница между ними небольшая. Если резюме двух кандидатов отличаются всего одним навыком или опытом — большинство моделей угадывают правильного примерно в 50–80% случаев. Это уровень монетки. Чем больше разница в квалификации, тем надёжнее модель — но даже топовые Claude Sonnet 4 и GPT-5 не дотягивают до 100% даже при очевидной разнице.

Главная находка: у LLM есть систематическая слабость именно на «пограничных» кандидатах — тех, кто почти одинаково подходит. В реальном найме это самая частая ситуация: на конкурентную вакансию приходят десятки схожих резюме. Именно здесь модель отказывается принимать решение (абстенция) или выбирает случайно. При этом явные демографические сигналы в резюме — например, упоминание «Ассоциации чернокожих специалистов» или женских профессиональных наград — сдвигают выбор модели, даже если квалификация идентична.

Как это устроено: исследователи создали контролируемые пары резюме с известным «правильным ответом» — один кандидат объективно сильнее другого на k навыков (k=1, 2, 3). Затем проверили, насколько часто LLM выбирает правильного. Чем меньше k, тем хуже результат. Отдельно протестировали равные резюме, различающиеся только демографическими деталями — и большинство моделей всё равно выбирали одного из двух, хотя должны были воздержаться.


🔬

Схема метода

Это не техника промптинга — это аудиторская рамка для оценки надёжности LLM. Для пользователя чата важны выводы:

СИТУАЦИЯ 1: Кандидаты сильно отличаются (3+ критерия)
→ Топовые модели (Claude S4, GPT-5, Gemini 2.5 Pro) надёжны: >95%
→ Слабые модели (Llama 8B): ~80% — всё ещё рискованно

СИТУАЦИЯ 2: Кандидаты отличаются минимально (1 критерий)
→ Топовые модели: 82–93% — монетка с небольшим перевесом
→ GPT-4o-mini, Llama: 50–67% — хуже монетки или как монетка

СИТУАЦИЯ 3: Кандидаты одинаковые, но разные имена/демография
→ Любая модель: начинает выбирать "на ощупь"
→ Явные сигналы (награды, ассоциации) → сильнее смещают, чем имена

🚀

Пример применения

Задача: Ты — founder небольшой IT-компании в Москве. Ищешь продакт-менеджера. Пришло 40 резюме, хочешь использовать Claude чтобы быстро отобрать топ-10.

Промпт (что НЕ делать — распространённая ошибка):

Вот 40 резюме. Выбери лучших 10 кандидатов на позицию 
продакт-менеджера в B2B SaaS-компанию.

[резюме 1... резюме 40]

Почему это опасно: Модель будет выбирать ненадёжно именно там, где выбор самый важный — среди похожих, сильных кандидатов. Плюс имена, упоминание университетов, формулировки наград будут влиять на выбор без твоего ведома.

Промпт (что делать вместо этого):

Я ищу продакт-менеджера для B2B SaaS. Критерии отбора — строго:

ОБЯЗАТЕЛЬНЫЕ (без них — отклоняю):
- Опыт работы с продуктом от 2 лет
- Опыт работы с B2B-клиентами
- Умение писать PRD / технические задания

ЖЕЛАТЕЛЬНЫЕ (чем больше — тем лучше):
- Опыт в SaaS
- Работа с enterprise-сегментом
- Английский B2+

ИГНОРИРУЙ при оценке: имена, пол, возраст, 
фото, названия университетов, хобби, 
участие в профессиональных сообществах.

Сначала раздели на: [проходят обязательные] / [не проходят].
Потом среди прошедших — оцени только по желательным критериям.
Дай мне список с кратким обоснованием по каждому пункту.

[резюме]

Результат: Модель выдаст структурированный список по явным критериям. Решения по "обязательным" будут надёжными — разница очевидная. Ранжирование среди "прошедших" — уже менее надёжно, используй как черновик для финального просмотра вручную.


🧠

Почему это работает (и почему LLM всё равно ошибается)

Слабость LLM: Модель не «читает» резюме как рекрутер. Она генерирует текст, основываясь на паттернах из обучающих данных. Когда два резюме похожи, модели не на что опереться — паттерн «победителя» размыт. Это как просить угадать, кто чуть умнее, по двум похожим фотографиям — без контекста.

Что модель умеет хорошо: Следовать явным, структурированным критериям. Если ты говоришь «выбери того, у кого есть пункт X», — она справляется. Проблема начинается когда критерии неявные, субъективные или нужно взвешивать несколько факторов одновременно.

Демографическая «сверхкомпенсация»: Исследователи нашли любопытный эффект — в некоторых профессиях (разработка ПО) модели начали активнее выбирать женщин и чернокожих кандидатов при равной квалификации. Это «over-alignment» — модель знает, что нужно быть «справедливой», и перекомпенсирует. Явные сигналы (названия наград, ассоциаций) работают сильнее, чем имена.

Рычаги управления: - Критерии как чеклист → чем конкретнее, тем надёжнее решение - Просить абстенцию явно → «если кандидаты примерно одинаковые — скажи об этом» - Убирать демо-сигналы → попроси Claude сначала «анонимизировать» резюме (убрать имена, пол, возраст) перед оценкой - Разбивать на этапы → сначала фильтр по hard критериям, потом ранжирование среди прошедших


📋

Шаблон промпта

Я отбираю кандидатов на позицию {должность}.

ОБЯЗАТЕЛЬНЫЕ КРИТЕРИИ (нет хотя бы одного → кандидат отклонён):
- {критерий 1}
- {критерий 2}
- {критерий 3}

ЖЕЛАТЕЛЬНЫЕ КРИТЕРИИ (оцениваю только у прошедших обязательный фильтр):
- {критерий A}
- {критерий B}

ИГНОРИРУЙ при оценке: имена, пол, возраст, университеты, 
хобби, членство в профессиональных сообществах, 
любые личные характеристики не связанные с работой.

Шаг 1. Раздели кандидатов на два списка: 
[Прошли обязательный фильтр] / [Не прошли — укажи какой критерий отсутствует].

Шаг 2. Среди прошедших — оцени по желательным критериям. 
Для каждого: перечисли присутствующие желательные критерии.
Если кандидаты примерно одинаковые — прямо скажи об этом.

{резюме кандидатов}

Плейсхолдеры: - {должность} — конкретная позиция: «senior backend разработчик», «менеджер по продажам в B2B» - {критерии} — только измеримые, проверяемые: не «коммуникабельность», а «опыт переговоров с enterprise-клиентами» - {резюме} — вставляй текстом, не PDF

🚀 Быстрый старт — вставь в чат:

Вот шаблон для скрининга резюме через LLM. 
Адаптируй под мою задачу: {опиши вакансию и контекст}.
Задавай вопросы, чтобы заполнить обязательные и желательные критерии.

[вставить шаблон выше]

LLM спросит про конкретные требования вакансии и контекст найма — потому что без явных критериев шаблон работает как монетка.


⚠️

Ограничения

⚠️ Пограничные кандидаты: Когда разница между резюме минимальна (один навык, чуть больше опыта) — даже топовые модели ненадёжны. Используй LLM для грубого фильтра, финальный выбор среди схожих — делай сам.

⚠️ Явные демографические сигналы: Упоминания профессиональных ассоциаций, наград с демографической привязкой («Лучший молодой специалист — Women in Tech») сдвигают выбор модели. Если хочешь нейтральной оценки — попроси Claude сначала убрать всё, кроме профессиональных данных.

⚠️ Иллюзия объективности: LLM создаёт ощущение взвешенного, обоснованного решения — но за ним может стоять случайность или паттерн из обучающих данных. Обоснование звучит убедительно, даже когда выбор неверный.

⚠️ Мелкие и открытые модели: Llama 8B и 70B показали результаты на уровне случайного выбора при минимальных различиях. Не используй их для скрининга резюме.


🔍

Как исследовали

Команда из Принстона придумала элегантный способ обойти главную проблему любого исследования найма: у реальных резюме нет правильного ответа. Кто был «правильным» кандидатом — неизвестно, потому что нанятый человек мог оказаться хуже непринятого.

Решение: создать резюме с программируемым «правильным ответом». Берёшь базовое резюме, добавляешь k навыков → более сильный кандидат. Убираешь k навыков → более слабый. Теперь истина известна. Исследователи сгенерировали сотни таких пар по 186 реальным вакансиям с Greenhouse, в 25 отраслях.

Затем проверили 9 моделей: от маленькой Llama 8B до GPT-5 и Claude Sonnet 4. Каждой модели давали пары резюме и смотрели — выберет ли она объективно лучшего. Параллельно проверяли равные резюме, где менялись только имена и демографические сигналы — модель должна была воздержаться от выбора, но в большинстве случаев всё равно кого-то выбирала.

Неожиданная находка: ошибки у большинства моделей — это не неверный выбор, а отказ от выбора (абстенция). 93% ошибок Claude — это «не могу решить», а не «выбрал не того». Это хорошая новость для HR: лучше лишний раз попросить человека посмотреть, чем ошибочно отклонить.


💡

Адаптации и экстраполяции

🔧 Техника: анонимизация перед оценкой → нейтральный скрининг

Прежде чем просить Claude сравнить кандидатов, попроси убрать всё нерелевантное:

Шаг 1. Прочитай эти резюме и удали: 
- Имена (замени на Кандидат А, Кандидат Б...)
- Пол и возраст
- Названия университетов (замени на «университет»)
- Участие в профессиональных сообществах с демографической привязкой
- Хобби и личные интересы

Оставь только: опыт работы, навыки, достижения в цифрах.

Шаг 2. Теперь сравни анонимизированные версии по критериям: {критерии}

Это применение принципа «discriminant validity» из исследования: убираем всё нерелевантное ДО оценки, а не просим игнорировать его во время.

🔧 Техника: явный запрос на абстенцию → честная оценка

Исследование показало: модели по умолчанию стараются выбрать кого-то, даже когда не должны. Добавь явное разрешение:

Если кандидаты примерно одинаково подходят под критерии 
и ты не можешь уверенно выбрать — напиши "НУЖНА ЧЕЛОВЕЧЕСКАЯ ОЦЕНКА" 
и объясни в чём кандидаты схожи. Не выбирай наугад.

🔗

Ресурсы

Название работы: Measuring Validity in LLM-based Resume Screening (2025)

Авторы: Blossom Metevier, Jane Castleman, Zeyu Shen, Max Springer, Aleksandra Korolova

Университет: Princeton University

Конференция: Second Conference of the International Association for Safe and Ethical Artificial Intelligence (IASEAI'26)

Источники вакансий в исследовании: Greenhouse.com, LinkedIn, Indeed


📋 Дайджест исследования

Ключевая суть

Парадокс: LLM звучит одинаково убедительно и когда права, и когда нет. На кандидатах с разницей в один навык даже топовые Claude и GPT-5 выбирают правильного лишь в 82–93% случаев — это монетка с небольшим перевесом. Слабые модели вроде Llama 8B на тех же парах дают 50–67% — чистая случайность. Исследование даёт аудиторскую рамку: разделяй скрининг на два этапа — жёсткий чеклист по обязательным критериям и человеческий финал среди схожих. Иначе ты получаешь не объективный отбор, а уверенно звучащий случайный выбор.

Принцип работы

Модель — хороший фильтр, плохой судья. Когда разница очевидна (3 и более критерия) — топовые модели правы в 95%+ случаев. Когда разница тонкая — плывут, но не показывают этого. Правило: LLM отсеивает явно неподходящих по чёткому чеклисту, человек выбирает среди финалистов. Отдельный момент: демографические сигналы в резюме — профессиональные ассоциации, награды с привязкой к группе — сдвигают выбор модели сильнее, чем просто имена. Хочешь нейтральной оценки — сначала попроси убрать всё личное, потом оценивай.

Почему работает

Модель не читает резюме как рекрутер. Она строит ответ по паттернам из обучения. Когда кандидаты похожи — паттерн «победителя» размыт. Модель всё равно выбирает, потому что её спросили. Потом придумывает убедительное объяснение задним числом. Жёсткий чеклист переводит задачу из «кто лучше» (размыто) в «есть ли пункт X» (чётко) — вот почему здесь модель надёжна. Исследователи специально создали пары резюме с известным правильным ответом и замерили точность при разном числе различий. Результат: чем меньше различий — тем хуже. Линейно и предсказуемо.

Когда применять

Первичный отбор резюме → особенно когда их 20+ и нужно отсеять явно неподходящих по обязательным требованиям. Работает для любых позиций с чёткими критериями: опыт в годах, конкретные навыки, обязательные сертификаты. НЕ подходит для финального выбора между 2–3 похожими кандидатами — там точность падает до уровня монетки. Это работа для человека.

Мини-рецепт

1. Выпиши обязательные критерии: только измеримые и проверяемые. Не «коммуникабельность», а «опыт работы с корпоративными клиентами от 2 лет». Если критерий нельзя проверить по тексту резюме — выброси его.
2. Добавь запрет на демографию: явно укажи в промпте что игнорировать — имена, пол, возраст, университеты, хобби, членство в сообществах и ассоциациях.
3. Раздели на два шага: сначала попроси разделить на «прошли обязательный фильтр» и «не прошли — укажи причину». Потом отдельным запросом — оценить прошедших по желательным критериям.
4. Попроси называть ничьи: добавь в промпт «если кандидаты примерно одинаковые по желательным критериям — прямо скажи об этом вместо выбора».
5. Финалистов проверяй сам: список прошедших обязательный фильтр — надёжный результат. Ранжирование среди них — черновик для твоего глаза, не окончательное решение.

Примеры

[ПЛОХО] : Вот 40 резюме. Выбери лучших 10 кандидатов на позицию продакт-менеджера.
[ХОРОШО] : Я ищу продакт-менеджера для В2В-продукта (бизнес для бизнеса). ОБЯЗАТЕЛЬНЫЕ КРИТЕРИИ — нет хотя бы одного → кандидат отклонён: — опыт работы с продуктом от 2 лет — опыт работы с корпоративными клиентами — опыт написания технических заданий или требований к продукту ЖЕЛАТЕЛЬНЫЕ — оцениваю только у прошедших: — опыт в облачных сервисах — работа с крупными корпорациями — английский выше среднего ИГНОРИРУЙ при оценке: имена, пол, возраст, фотографии, названия университетов, хобби, членство в профессиональных сообществах. Шаг 1. Раздели на два списка: [прошли обязательный фильтр] / [не прошли — укажи какой критерий отсутствует]. Шаг 2. Среди прошедших — перечисли присутствующие желательные критерии для каждого. Если кандидаты примерно одинаковые — прямо скажи об этом. [резюме кандидатов] Результат: первый шаг (обязательный фильтр) работает надёжно — разница очевидная. Ранжирование среди прошедших — черновик, финальный выбор делаешь сам.
Источник: Measuring Validity in LLM-based Resume Screening
ArXiv ID: 2602.18550 | Сгенерировано: 2026-02-24 05:35

Проблемы LLM

ПроблемаСутьКак обойти
Модель объясняет уверенно, даже когда выбирает наугадДаёшь модели два похожих варианта на сравнение. Она выбирает один и объясняет убедительно. Но за объяснением — случайность, не анализ. Нет сильного сигнала для выбора — нет и надёжного ответа. Это работает для любых задач сравнения: резюме, идеи, предложения, стратегииПопроси модель явно признавать близость вариантов: «Если варианты примерно одинаковые по критериям — скажи об этом прямо, не выбирай». Убедительное объяснение выбора — не признак правильного выбора

Методы

МетодСуть
Явный запрос на воздержание при равенствеБез специальной инструкции модель всегда выберет одно из двух — даже когда варианты идентичны. Добавь в запрос: «Если варианты примерно равны по заданным критериям — прямо скажи об этом. Не придумывай преимущества». Почему работает: Модель по умолчанию настроена давать ответ, а не воздерживаться. Явная инструкция меняет это поведение. Без неё получаешь выбор с обоснованием — но это не надёжность, это имитация. Когда применять: Любое сравнение похожих вариантов — кандидаты, идеи, тексты, планы. Когда не нужно: Варианты заведомо разные — модель справится и без этой инструкции
📖 Простыми словами

Measuring Validity inLLM-based Resume Screening

arXiv: 2602.18550

Нейросети в роли HR-менеджеров — это пока что симулятор подбрасывания монетки, а не точный инструмент. Фундаментальная проблема в том, что LLM не обладают «чуйкой» на таланты, они просто сравнивают текстовые паттерны. Когда разрыв между кандидатами огромен, модель справляется, но как только на стол ложатся два похожих резюме, где один чуть сильнее в аналитике, а другой — в управлении командой, логика ломается. Модель начинает гадать, выдавая результат на уровне случайного выбора, потому что она не понимает реальную ценность опыта, а просто считает совпадения слов.

Это как если бы ты выбирал арбуз, просто читая этикетки на ящиках, не имея возможности их потрогать или постучать. Формально ты делаешь выбор, основываясь на данных, но по факту ты просто веришь тому, кто громче крикнул в описании. Если на одной этикетке написано «сладкий», а на другой «очень сладкий», для модели это статистическая погрешность, а не реальный критерий отбора. В итоге ты можешь выкинуть идеального кандидата просто потому, что Claude или GPT не хватило «разрешающей способности» увидеть разницу в одном ключевом навыке.

Исследование показало, что даже топовые модели вроде Claude 3.5 Sonnet или GPT-4o лажают в 20–50% случаев, когда разница между кандидатами минимальна. Они используют поверхностное сравнение, которое легко обмануть. Если в одном резюме указано «5 лет опыта», а в другом «6 лет», модель может вообще не придать этому значения или, наоборот, зацепиться за это как за единственный фактор, игнорируя всё остальное. Точность падает до 50-80%, что для серьезного найма — полная фигня и риск пропустить звезду.

Этот принцип применим не только к найму продактов в московский стартап, но и к любому автоматизированному ранжированию. Будь то выбор подрядчика на тендере, оценка качества кода или даже фильтрация входящих заявок в поддержку — если варианты похожи, нейронка превращается в непредсказуемого судью. Нельзя слепо доверять AI-фильтрам, когда на кону стоят реальные деньги или позиции в команде, потому что валидность таких оценок пока не дотягивает до профессионального стандарта.

Короче: не вздумай увольнять HR-а и отдавать первичный скрининг на откуп чат-боту без двойной проверки. LLM — плохой судья для тонких различий, и их вердикт часто зависит от того, как легли токены в контекстном окне, а не от реальных заслуг человека. Используй AI как помощника для черновой работы, но финальный топ-10 перепроверяй руками, иначе твой «идеальный кандидат» окажется просто тем, кто лучше всех накормил модель правильными словами.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с