Здесь в Кракове я вписался в новый проект и начал набирать людей в новую команду. Например, сейчас нужен 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.
Нежданчик
Пока писал этот пост, произошло нечто неожиданное… Проанализировал вчера пачку из приблизительно сотник резюме, отправил нашему главному техническому специалисту кандидата с верхней позиции списка, мол, попробуйте парное программирование устроить. Сегодня они поговорили и — и неожиданно хорошо всё прошло, надеюсь, скоро буду высылать оффер.
Как-то так, мне кажется, ИИ докажет свою небесполезность и захватит мир. Напомню, что в канале ИИзвестия я каждый день публикую результаты своих экспериментов и новости из мира нейросетей. Контент, разумеется, бесплатный и ни на что не претендующий. Мне просто надо куда-то сгружать эту информацию так и эдак. Помогает размышления структурировать. Надеюсь, будет интересно.