Кейс: предварительный скоринг резюме через Heli API

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

Схема

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

Запрос

Оценка по отдельным критериям с цитатой полезнее одного балла от 1 до 10: рекрутер видит, на чём основан вывод, и быстро замечает ошибки модели. Альтернатива для быстрой классификации — anthropic/claude-haiku-4.5.

code
criteria = [
    "Опыт коммерческой разработки на Python от 3 лет",
    "Опыт работы с PostgreSQL",
    "Английский на уровне чтения документации",
]
item = {
    "type": "object",
    "properties": {
        "criterion": {"type": "string"},
        "match": {"type": "string", "enum": ["yes", "partly", "no", "unclear"]},
        "evidence": {"type": "string"},
    },
    "required": ["criterion", "match", "evidence"],
    "additionalProperties": False,
}
schema = {"type": "object", "properties": {"criteria": {"type": "array", "items": item}},
          "required": ["criteria"], "additionalProperties": False}

resp = client.chat.completions.create(
    model="openai/gpt-5.4-mini",
    messages=[
        {"role": "system", "content": "Оцени резюме по каждому критерию. В evidence процитируй "
         "фрагмент резюме. Если данных нет, ставь unclear."},
        {"role": "user", "content": "Критерии:\n" + "\n".join(criteria) + "\n\nРезюме:\n" + resume_text},
    ],
    response_format={"type": "json_schema",
                     "json_schema": {"name": "screening", "strict": True, "schema": schema}},
    max_tokens=1500,
)

Claude Haiku API

Персональные данные и закон

  • До отправки удалите ФИО, телефон, email, адрес, фото, дату рождения и ссылки на соцсети. Контакты находятся регулярными выражениями, имена и адреса — библиотеками распознавания именованных сущностей, например Natasha для русского языка.
  • Статья 16 закона 152-ФЗ запрещает принимать решения, порождающие юридические последствия для человека или иначе затрагивающие его права, исключительно на основании автоматизированной обработки персональных данных — кроме случаев письменного согласия или прямо предусмотренных законом. Поэтому модель готовит оценку, а решение принимает рекрутер.
  • Если персональные данные всё же попадают в модель, обсудите с юристом требования 152-ФЗ, включая правила трансграничной передачи.
  • Heli не хранит содержимое запросов и ответов, в журнале остаются только метаданные. Полный текст резюме не храните и в логах своего сервиса.

Безопасность API-ключа

Качество и недискриминация

Перед запуском прогоните схему на 30–50 резюме, по которым решение уже принято, и сравните оценки модели с выводами рекрутеров. Не включайте в критерии пол, возраст, национальность и другие обстоятельства, не связанные с деловыми качествами: статья 64 Трудового кодекса запрещает необоснованный отказ в заключении трудового договора, в том числе по таким признакам.

Что хранить

Сохраняйте оценку модели вместе с решением рекрутера и критериями вакансии. Если кандидат спросит о причинах отказа, ответ должен опираться на требования вакансии и вывод рекрутера, а не на ответ модели.

Попробуйте Heli

Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.

Документация API · Модели и цены

Читайте также