Искусственно-интеллектуальная сваха

Здесь в Кракове я вписался в новый проект и начал набирать людей в новую команду. Например, сейчас нужен Frontend Developer, расскажите знакомым. Как только опубликовал вакансию в X, сразу повалили боты. Больше сотник документов, резюме и сопроводительных писем люди прислали. Как водится, часть из них совсем никуда не годится и отправлена наобум и на авось. Так появилась идея написать штуку, которая могла бы резюме оценивать и ранжировать с учётом компанейских «красных флагов» и хотелов.

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

Я не программист, поэтому воспользовался cursor.com, эта штуковина умеет конвертировать желания продуктово-настроенного человека в код. Говоришь, мол, так и так, напиши, проверь, работает ли — и пишет, и проверяет. Один из новых, довольно популярных инструментов, ничего особенного. Через год все только в таких и будут программировать.

Набросал схему решения в голове:

  • Вытащить из PDF текст
    • Просто чтением текста из PDF, если не получается, то…
    • Попробовать разобрать с помощью pytesseract, банального OCR то есть. Если не получается, то…
    • Конвертировать в картинки и послать в мультимодальную модель Сomputer Vision.
  • Сопоставить с помощью «умной» нейронной сетки требования из моего объявления о работе в job_description.txt и получить:
    • Оценку совпадений: я чуть ниже опишу, как это оценивалось.
    • Краткий, с личными деталями ответ кандидату на всякий случай
    • Коротенькое объяснение, почему именно этот кандидат именно так «замэтчился»?
    • Ссылка на его вебсайт, если есть
  • Отдельный (не обязательный) запрос проверяет файлы на бонус-очки и «красные флаги»:
    • опечатки,
    • грамматические ошибки,
    • дырки в карьере
    • явные противоречия
  • Результаты двух оценок сливаются в экстазе: пропорция 80/20 по-умолчанию, но можно подкрутить и в другую сторону.
    • 80% финальной оценки — это конкретно сватовство: насколько резюме подходит вакансии
    • 20% — это личные ощущения, желания и персональные «красные флаги» стороны нанимающей. Там же, кстати, про diversity и inclusion написано.
  • Отдельная функция, насколько это возможно, бегает «посмотреть», что на сайте-портфолио. Если там ошибка (самое печальное), это не добавляет очков кандидату.
  • После этого стоит задача: сортировать по результатам и вывести всё со смешными эмоджиками и титулами вроде «Unicorn Candidate»
  • Написать для всех отзывы с учётом полученной оценки. Позвать кого-то на собеседования. Письма никто не отправляет, но, когда их нужно будет отправлять — тексты будут уже готовы.

На этом скрипт заканчивает свою работу и откланивается. Дальше решать придётся человеку.

Что там в кишках?

Далее, по порядку. Откуда взялась схема оценки и сватовства? Самая свежая, самая тормозная, самая умная нейронная сеть от OpenAI o1-preview помогла разработать структурированную схему. Как одна идей из улучшения — для каждого пункта делать отдельный запрос с помощью ультра-дешёвой и глупой модели вроде gpt-4o-mini, вполне возможно, что так результат окажется точнее. Он точно будет прозрачнее.

Схема выглядит приблизительно так, многое происходит «в уме»:

Резюме и описание вакансии подгоняются под единую понятийную систему, приводятся к общему знаменателю.

Искусственный интеллект рассчитывает параметры и выдаёт одну цифру от 0 до 100. Это базовый рейтинг: индикатор того, насколько близко подходит кандидат.

Сердце скрипта — интеграция с API мощной языкового модели Anthropic Claude. Кроме того, я только что добавил поддержку OpenAI. Модель использует передовые методы обработки естественного языка для глубокого анализа резюме и описания вакансии. Теперь Resume Job Matcher может:

  • Ускорить подбор персонала: Автоматизируя рутинные задачи, вы сможете сосредоточиться на стратегических решениях. Это 100% так, уже проверил на себе.
  • Улучшить качество найма: Отсев совсем «левых» кандидатов — снижает риски неправильного выбора.
  • Создать положительный имидж: Персонализированные ответы и профессиональный подход к каждому кандидату укрепят репутацию вашей компании. Эта часть отнимает куууучу времени при каждом найме.

Скачать, дополнить, улучшить скрипт — это здесь: Resume Job Matcher.

Нежданчик

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

Как-то так, мне кажется, ИИ докажет свою небесполезность и захватит мир. Напомню, что в канале ИИзвестия я каждый день публикую результаты своих экспериментов и новости из мира нейросетей. Контент, разумеется, бесплатный и ни на что не претендующий. Мне просто надо куда-то сгружать эту информацию так и эдак. Помогает размышления структурировать. Надеюсь, будет интересно.

Комментарии

 

Один комментарий

  1. Что-то все более пугающим мне видится наше будущее эдак лет через …надцать, прогресс не остановишь, но и разрыв между возможностями людей и их моральными качествами все больше. Со времён Древнего Рима мы не продвинулись в плане саморегулирования общества ни на сантиметр.
    Спасибо за статью. Кино из детства становится реальностью.

Добавить комментарий прямо сейчас