Resume Analysis System - Автоматизация HR скрининга

Resume Analysis System - Автоматизация HR скрининга

Описание процесса

Данная автоматизация представляет собой полноценную HR-систему для автоматического анализа резюме кандидатов. Система принимает резюме через Gmail, обрабатывает различные форматы файлов (Word, PDF, TXT), проводит детальный AI анализ соответствия вакансии, извлекает контактную информацию и автоматически ведет базу кандидатов в Google Sheets со структурированной оценкой каждого соискателя.

API ключи и сервисы:

  1. Gmail OAuth2 - для получения резюме из почты
  2. Google Drive OAuth2 - для работы с файлами
  3. Google Sheets OAuth2 - для ведения базы кандидатов
  4. OpenAI API Key - для o4-mini и gpt-4o-mini моделей

Архитектура системы по блокам

РАЗДЕЛ 1: ПОЛУЧЕНИЕ РЕЗЮМЕ

1.1 Gmail Trigger - Получение резюме

Назначение: Автоматически получает резюме, отправленные на корпоративную почту

Настройки Gmail Trigger:

  • Poll Times: Every Hour (проверка каждый час)
  • Simple: false (расширенные настройки)
  • Options:
    • downloadAttachments: true (скачивание вложений)
  • Credentials: Gmail account 2

Что получаем:

{

  "subject": "Резюме на позицию разработчика",

  "from": "candidate@email.com",

  "attachment_0": {

    "filename": "resume.pdf",

    "mimeType": "application/pdf",

    "data": "[binary_data]"

  }

}

1.2 Upload to Drive

Назначение: Сохраняет полученное резюме в Google Drive для дальнейшей обработки

Google Drive настройки:

  • Input Data Field Name: attachment_0
  • Name: {{ $json.subject }} Resume (имя файла = тема письма + "Resume")
  • Drive ID: My Drive
  • Folder ID: Root folder

Результат: Файл сохраняется в Google Drive и возвращается его ID для дальнейшей работы.

РАЗДЕЛ 2: ОБРАБОТКА ФАЙЛА В РАЗНЫХ ФОРМАТАХ

2.1 Switch - Тип файла

Назначение: Определяет формат загруженного файла и направляет в соответствующий поток обработки

Условия Switch:

  1. Word Doc (Output 0):


    • mimeType equals "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    • Направляет Word документы на конвертацию
  2. PDF (Output 1):


    • mimeType equals "application/pdf"
    • Направляет PDF файлы на прямое извлечение
  3. Text (Output 2):


    • mimeType equals "text/plain"
    • Направляет текстовые файлы на извлечение текста

2.2 Поток обработки Word документов

Конвертация Word в Docs: Назначение: Конвертирует Word документы в Google Docs формат

HTTP Request настройки:

  • Method: POST
  • URL: https://www.googleapis.com/drive/v2/files/{{ $json.id }}/copy?convert=true&supportsAllDrives=true
  • Authentication: Google Drive OAuth2

Get Doc: Назначение: Скачивает конвертированный Google Doc как PDF

Настройки:

  • Operation: Download
  • File ID: {{ $json.id }}
  • Google File Conversion: Docs to PDF format

Extract from File: Назначение: Извлекает текст из PDF версии документа

Настройки:

  • Operation: PDF
  • Destination Key: text

2.3 Поток обработки PDF файлов

Get PDF: Назначение: Скачивает PDF файл из Google Drive

Extract from File2: Назначение: Извлекает текст из PDF файла

Настройки:

  • Operation: PDF
  • Результат: Текст резюме в формате string

2.4 Поток обработки текстовых файлов

Get TXT: Назначение: Скачивает текстовый файл из Google Drive

Extract from File3: Назначение: Извлекает текст из файла

Настройки:

  • Operation: Text
  • Destination Key: text

РАЗДЕЛ 3: СОБИРАЕМ ВСЕ ДАННЫЕ

3.1 Подготовка

Назначение: Объединяет результаты всех потоков обработки в единую структуру

Set настройки:

{

  "assignments": [

    {

      "name": "resume",

      "value": "{{ $json.text }}",

      "type": "string"

    }

  ]

}

Что происходит:

  • Получает текст резюме от любого из трех потоков (Word/PDF/TXT)
  • Создает унифицированную структуру данных
  • Подготавливает данные для AI анализа

3.2 Описание работы

Назначение: Получает описание вакансии для сравнения с резюме

Google Drive настройки:

  • Operation: Download
  • File ID: 1Kqu3gc37e5xR5z4BRfN57F9UsHaQenn7v6MN2wVLnVs (фиксированный ID документа)
  • Google File Conversion: Docs to PDF

Extract from File1: Назначение: Извлекает текст описания вакансии

Результат: Текст с требованиями к кандидату, обязанностями и критериями оценки.

РАЗДЕЛ 4: АНАЛИЗ ПОЛУЧЕННОЙ ИНФОРМАЦИИ

4.1 AI Agent - Основной анализ

Назначение: Проводит детальный анализ соответствия резюме описанию вакансии

Подключенные компоненты:

  • o4-mini (OpenAI o4-mini model) - самая продвинутая модель для анализа
  • Structured Output Parser - структурированный вывод результатов

Входные данные:

Резюме: {{ $('Описание работы').item.json.resume }}

Системный промпт:

# Обзор

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

Сосредоточьтесь на том, насколько кандидат соответствует основным требованиям и идеальному профилю, указанным в описании вакансии. Оценивайте как соответствие техническим навыкам, так и понимание бизнес-контекста. Используйте аргументы, основанные на фактическом содержании резюме и вакансии, - избегайте предположений.

## Выходные данные

Ваши выходные данные должны иметь именно такой формат:

Сильные стороны кандидата:

Перечислите основные сильные стороны кандидата или его квалификацию. Будьте конкретны.

Слабые стороны кандидата:

Перечислите области, в которых кандидат испытывает недостаток или не соответствует описанию вакансии.

Фактор риска:

- Присвойте балл риска (низкий / средний / высокий) - объясните наихудший сценарий, если этот кандидат будет принят на работу.

Фактор вознаграждения:

- Оцените вознаграждение (низкое / среднее / высокое) - опишите наилучший сценарий - какую ценность может открыть этот кандидат?

Подходит ли кандидат на краткосрочную или долгосрочную перспективу?

Общая оценка соответствия (0-10):

Присвойте число от 0 (ужасное соответствие) до 10 (идеальное соответствие). Не указывайте десятичные числа.

Обоснование оценки:

Четко объясните, почему данный кандидат получил именно такую оценку. Укажите конкретное содержание резюме и его соответствие или несоответствие описанию вакансии.

## Описание вакансии {{ $json.text }}

4.2 Structured Output Parser

Назначение: Преобразует ответ AI в структурированный JSON формат

Structured Output Parser Schema:

{

  "name": "resume_screening_evaluation",

  "description": "Парсит структурированный анализ резюме в формате, который выдает AI агент",

  "type": "object",

  "properties": {

    "candidate_strengths": {

      "type": "string",

      "description": "Текстовое описание сильных сторон кандидата со всеми перечислениями и деталями"

    },

    "candidate_weaknesses": {

      "type": "string", 

      "description": "Текстовое описание слабых сторон и областей несоответствия"

    },

    "risk_factor": {

      "type": "object",

      "description": "Оценка фактора риска",

      "properties": {

        "risk_level": {

          "type": "string",

          "description": "Уровень риска: низкий, средний или высокий"

        },

        "risk_explanation": {

          "type": "string", 

          "description": "Объяснение наихудшего сценария при найме кандидата"

        }

      },

      "required": ["risk_level", "risk_explanation"]

    },

    "reward_factor": {

      "type": "object",

      "description": "Оценка фактора вознаграждения",

      "properties": {

        "reward_level": {

          "type": "string",

          "description": "Уровень вознаграждения: низкое, среднее или высокое"

        },

        "reward_explanation": {

          "type": "string",

          "description": "Описание наилучшего сценария и ценности кандидата"

        }

      },

      "required": ["reward_level", "reward_explanation"]

    },

    "career_perspective": {

      "type": "string",

      "description": "Подходит ли кандидат на краткосрочную или долгосрочную перспективу с обоснованием"

    },

    "overall_fit_rating": {

      "type": "integer",

      "minimum": 0,

      "maximum": 10,

      "description": "Общая оценка соответствия от 0 до 10 (целое число)"

    },

    "rating_justification": {

      "type": "string",

      "description": "Подробное обоснование присвоенной оценки с указанием конкретного содержания резюме"

    }

  },

  "required": [

    "candidate_strengths",

    "candidate_weaknesses", 

    "risk_factor",

    "reward_factor",

    "career_perspective",

    "overall_fit_rating",

    "rating_justification"

  ]

}

ЧТО ТАКОЕ Structured Output Parser Schema: Это схема, которая заставляет AI возвращать анализ резюме в строго определенном JSON формате вместо свободного текста.

ЗАЧЕМ ЭТО НУЖНО ЗДЕСЬ:

  1. Структурированная оценка - все критерии анализа в отдельных полях
  2. Автоматическая обработка - данные можно сразу сохранить в Google Sheets
  3. Единообразие - каждое резюме анализируется по одним критериям
  4. Интеграция - результаты легко передаются в другие системы

КАК ЭТО РАБОТАЕТ:

  • AI получает схему как обязательный формат ответа
  • Модель заполняет каждое поле согласно анализу резюме
  • n8n автоматически парсит JSON и делает поля доступными как $json.output.candidate_strengths

4.3 Information Extractor - Извлечение контактов

Назначение: Извлекает личную информацию кандидата из резюме

Подключенные компоненты:

  • OpenAI Chat Model (gpt-4o-mini)

Text Input:

{{ $('Подготовка').item.json.resume }}

Attributes (требуемые поля):

{

  "attributes": [

    {

      "name": "Имя",

      "description": "Имя кандидата",

      "required": true

    },

    {

      "name": "Фамилия", 

      "description": "Фамилия кандидата",

      "required": true

    },

    {

      "name": "Почта",

      "description": "Електронная почта кандидата",

      "required": true

    }

  ]

}

Результат:

{

  "output": {

    "Имя": "Иван",

    "Фамилия": "Петров",

    "Почта": "ivan.petrov@email.com"

  }

}

4.4 Google Sheets - Сохранение результатов

Назначение: Автоматически ведет базу проанализированных кандидатов

Google Sheets настройки:

  • Operation: Append or Update
  • Document ID: 1RoQkdLnX2inM15C_xJS77X3XAZXMUc16d-8x9-63Mgc
  • Sheet Name: Лист1
  • Matching Columns: Имя (обновляет существующую запись или создает новую)

Columns Mapping:

{

  "Имя": "{{ $json.output['Имя'] }}",

  "Фамилия": "{{ $json.output['Фамилия'] }}",

  "Почта": "{{ $json.output['Почта'] }}",

  "Сильные стороны": "{{ $('AI Agent').item.json.output.candidate_strengths }}",

  "Слабые стороны": "{{ $('AI Agent').item.json.output.candidate_weaknesses }}",

  "Фактор риска": "{{ $('AI Agent').item.json.output.risk_factor }}",

  "Фактор вознагрождения": "{{ $('AI Agent').item.json.output.reward_factor }}",

  "Карьерная перспектива": "{{ $('AI Agent').item.json.output.career_perspective }}",

  "Общая оценка": "{{ $('AI Agent').item.json.output.overall_fit_rating }}",

  "Обоснование присвоенной оценки": "{{ $('AI Agent').item.json.output.rating_justification }}"

}

Структура итоговой таблицы:

Схема подключений нод

Основной поток:

  1. Получение резюмеUpload to Drive
  2. Upload to DriveТип файла

Обработка форматов:

Word поток: 3. Тип файла (Output 0) → Конвертация Word в Docs 4. Конвертация Word в DocsGet Doc 5. Get DocExtract from File

PDF поток: 3. Тип файла (Output 1) → Get PDF 4. Get PDFExtract from File2

Text поток: 3. Тип файла (Output 2) → Get TXT 4. Get TXTExtract from File3

Объединение и анализ:

  1. Extract from File/File2/File3Подготовка
  2. ПодготовкаОписание работы
  3. Описание работыExtract from File1
  4. Extract from File1AI Agent
  5. AI AgentInformation Extractor
  6. Information ExtractorGoogle Sheets

AI Подключения:

  • o4-miniAI Agent (основная модель анализа)
  • Structured Output ParserAI Agent (структурированный вывод)
  • OpenAI Chat ModelInformation Extractor (извлечение контактов)

Необходимые сервисы и их настройки

Настройка Gmail:

  • Создайте отдельную почту для приема резюме
  • Настройте OAuth2 доступ для Gmail API
  • Убедитесь в включении опции downloadAttachments в самой первой ноде

Настройка Google Drive:

  • Создайте папку для хранения резюме
  • Подготовьте документ с описанием вакансии
  • Получите ID документа с описанием вакансии

Настройка Google Sheets:

  • Создайте таблицу "Таблица кандидатов"
  • Добавьте заголовки всех колонок согласно mapping
  • Получите ID таблицы для настройки

Возможности системы

Поддерживаемые форматы:

  • Microsoft Word (.docx) - через конвертацию в Google Docs
  • PDF (.pdf) - прямое извлечение текста
  • Текстовые файлы (.txt) - прямое чтение

Критерии анализа:

  • Сильные стороны - соответствие требованиям
  • Слабые стороны - области несоответствия
  • Фактор риска - потенциальные проблемы при найме
  • Фактор вознаграждения - возможная ценность кандидата
  • Карьерные перспективы - краткосрочная/долгосрочная пригодность
  • Общая оценка - числовая оценка от 0 до 10
  • Обоснование - детальное объяснение оценки

Автоматизированные процессы:

  • Прием резюме - автоматическая проверка почты каждый час
  • Обработка форматов - универсальная поддержка разных типов файлов
  • AI анализ - глубокая оценка соответствия
  • Извлечение контактов - автоматическое определение имени и email
  • Ведение базы - структурированное хранение всех кандидатов

Применение системы

Для HR отделов:

  • Массовый скрининг - обработка сотен резюме автоматически
  • Объективная оценка - AI исключает человеческие предрассудки
  • Экономия времени - первичный отбор происходит без участия HR
  • Структурированная база - все кандидаты в удобной таблице

Для рекрутинговых агентств:

  • Масштабирование - обработка большого объема кандидатов
  • Стандартизация - единые критерии оценки для всех
  • Отчетность - готовые данные для клиентов
  • Competitive advantage - современные AI технологии

Для стартапов:

  • Автоматизация HR - нет нужды в большом отделе кадров
  • Качественный отбор - профессиональная экспертиза от AI
  • Гибкость - легко адаптировать под разные позиции
  • Интеграция - совместимость с существующими процессами

Результат работы системы

Что получается:

  • Автоматизированный HR процесс работающий 24/7
  • Структурированная база кандидатов с детальной оценкой
  • Объективный анализ на основе AI экспертизы
  • Экономия времени HR специалистов до 80%
  • Стандартизированная оценка всех кандидатов

Метрики эффективности:

  • Скорость обработки - анализ резюме за 2-3 минуты
  • Точность извлечения - 95%+ корректность контактных данных
  • Объективность оценки - исключение человеческих предрассудков
  • Масштабируемость - обработка неограниченного количества резюме

Преимущества перед ручным процессом:

  • Консистентность - одинаковые критерии для всех
  • Скорость - мгновенная обработка вместо дней ожидания
  • Детальность - углубленный анализ каждого аспекта
  • Документирование - полная история всех оценок

Эта система превращает трудозатратный процесс ручного скрининга резюме в автоматизированный конвейер с AI экспертизой!