Video Chapters
0:00 How to Build an AI Resume Screening System for Recruiters with n8n - Part 01
0:00 n8n Tutorial: Build an AI HR Assistant That Shortlist Candidates in Seconds - Part 02

AI Resume Screening

Build an AI-powered resume screening workflow in n8n to automate candidate evaluation, resume extraction, scoring, and Google Drive storage.

Table of Contents

Overview

In this tutorial, you will learn how to build an AI-powered resume screening workflow using n8n automation platform. This workflow automates the end-to-end recruitment process by extracting information from resumes, evaluating candidate profiles, scoring them, and routing the best candidates for further action. By leveraging n8n’s advanced AI nodes and integrations with Google Drive and OpenAI, you will create a scalable HR assistant that saves hours of manual work every week.

If you are new to OpenAI integration, consider reviewing the AI Automation with n8n and OpenAI lesson to get a solid foundation before proceeding.


Setting Up the Recruitment Workflow Trigger

The first step in automating resume screening is to capture incoming resumes. These resumes may come from email attachments or job application forms on your website. For this tutorial, you will simulate a job application form using the n8n Forms node.

Steps to Create the Form Trigger

  1. Add a Trigger Node:
    Search for and add the n8n Forms Trigger node to your workflow. This node will listen for form submissions.

  2. Configure the Form:

    • Title the form, e.g., Apply for the Job.
    • Add form fields:
      • First Name (Text, Required)
      • Last Name (Text)
      • Email (Email type, Required)
      • Resume (File upload, Required, accept only .pdf)
    • Add a hidden field called jobCode to differentiate between multiple job postings. For example, assign jobCode values such as 001 for Full Stack Developer, 002 for Accounts Assistant, etc.
  3. Publish the Form:
    Save the form and note the production URL. This URL can be shared or embedded on your job postings to collect applications.

  4. Test the Form Submission:
    Trigger the form by submitting a sample resume (PDF). The output JSON will contain the form data, including the uploaded file in binary format.


Uploading Resumes to Cloud Storage

To keep all candidate resumes organized, upload each resume to a dedicated Google Drive folder.

Configuring Google Drive Upload

  1. Add the Google Drive Node:
    Connect the form trigger node to a Google Drive node.

  2. Set Operation:

    • Resource: File
    • Operation: Upload
  3. Specify Input Data:

    • Input Data Field Name: The name of the field containing the resume file (e.g., resume).
    • File Name: Create a custom filename using an expression combining:
      {{$json["jobCode"]}}-{{$json["firstName"]}}-{{$json["lastName"]}}.pdf
      
      This helps uniquely identify resumes by job code and candidate name.
  4. Select Destination Folder:
    Choose the folder where resumes will be stored (e.g., Resumes).

  5. Save and Test:
    Run the workflow with a sample submission to verify the resume uploads correctly.

For more details on handling file uploads and binary data in n8n, refer to the File Management & Binary Data in n8n lesson. Also, the n8n Google Drive node documentation provides comprehensive guidance on configuration.


Extracting Text from Resume PDFs

Resumes are typically in PDF format, which requires conversion into text for AI processing.

Using the Extract from File Node

  1. Add the Extract from File Node:
    This node converts binary PDF data into JSON containing the resume’s text content.

  2. Configure the Node:

    • Operation: Extract from PDF
    • Input Binary Field: The field containing the uploaded PDF (e.g., resume).
  3. Execute and Inspect Output:
    The node outputs raw text extracted from the PDF in a large text blob. This unstructured data will be processed further to extract meaningful information.

For additional information, see the n8n Extract from File node documentation.


Extracting Structured Information with AI Nodes

Raw text from resumes is unstructured and difficult to analyze directly. You will use n8n’s advanced AI nodes to extract structured personal and professional information.

1. Extracting Personal Information

Use the Information Extractor AI node to parse candidate contact details and personal data.

Configuration

  • Input Text: Use the extracted text field from the previous node.
  • Schema Type: JSON Schema
  • JSON Schema Example:
    Define a JSON schema specifying the fields you want to extract. For example:
{
  "title": "Personal Information",
  "type": "object",
  "properties": {
    "fullName": {
      "type": "string",
      "description": "Full name of the candidate"
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "Email address of the candidate"
    },
    "telephone": {
      "type": "string",
      "description": "Phone number, digits only"
    },
    "city": {
      "type": "string",
      "description": "Candidate's city of residence"
    },
    "linkedinProfile": {
      "type": "string",
      "description": "LinkedIn profile URL"
    }
  },
  "required": ["fullName", "email", "telephone"]
}
  • System Prompt Template:
    Provide instructions to the AI model, such as:
    "You are an expert extraction algorithm. Only extract relevant information from the text. If an attribute is missing, set its value to 'NA'."

  • Attach AI Model:
    Add an OpenAI Chat Model node (e.g., GPT-4 or GPT-3.5 Turbo) as a child node within this cluster node.

Execution

Run the node and verify that it extracts personal information like the candidate’s full name, email, phone number, city, and LinkedIn profile in a structured JSON format.


2. Extracting Professional Information

Similarly, extract the candidate’s professional background such as education, job history, skills, and experience.

Configuration

  • Input Text: Use the same extracted text field.
  • Schema Type: Attribute Descriptions (UI-based schema creation)
  • Attributes to Extract:
Attribute Type Description Required
educationalQualification String Summary of academic career focusing on undergraduate and university studies (max 100 words). Yes
jobHistory String Summary of recent work experience (max 100 words). Yes
skills String Technical and functional skills, formatted as a bulleted list. Yes
experience String Total years of experience grouped by job function or role type (e.g., Account Executive: 2 years). Yes
title String Most recent job title. No
employer String Most recent employer. No
totalYearsExperience String Total years of experience, formatted as total years exp: X. Yes
  • Attach AI Model:
    Link the same OpenAI Chat Model used previously.

Execution

Run the node and check the output. The AI will summarize and structure the professional data, giving you clear fields for education, job history, skills, and experience.

For more on configuring AI nodes and OpenAI models, consult the OpenAI platform documentation.


Merging Extracted Data

After extracting personal and professional information in separate branches, merge the data into a single JSON object.

Using the Merge Node

  1. Add a Merge Node:
    Connect the outputs of both Information Extractor nodes (personal and professional).

  2. Configure Merge Mode:

    • Mode: Merge By Index or Combine (depending on your data flow).
    • This consolidates both sets of structured data for a unified candidate profile.
  3. Save and Test:
    Execute the merge node and verify that the output contains all relevant fields combined appropriately.

Refer to the n8n Merge node documentation for detailed options and best practices.


Scoring Candidates and Automating Decisions

Once you have structured candidate data, you can automate scoring and decision-making.

Example Scoring Logic

  • Assign scores based on skills, experience, and education.
  • For example:
    • Score > 7: Shortlist candidate
    • Score 5-7: Add to “Maybe” list
    • Score < 5: Archive candidate

You can implement this logic using the IF node or Code node in n8n. To master complex branching and decision-making, review the Master Conditional Logic in n8n lesson.

Automating Notifications

  • Use the Email node to notify shortlisted candidates and hiring managers.
  • Use the Google Sheets node or Google Docs node to update your application tracker with all extracted data and scores.

Common Mistakes & Troubleshooting

  • Incorrect File Field Names:
    Ensure the file upload field matches exactly in all nodes (resume vs. rumé typo). Use consistent naming.

  • Google Drive Credentials:
    Make sure your Google Drive credentials are correctly set up and have permission to access the target folder.

  • AI Model Configuration:
    If the AI nodes fail, double-check the OpenAI API credentials and model selection.

  • Schema Definitions:
    Invalid JSON schemas or missing required fields can cause extraction errors. Validate your schema JSON or attribute definitions.

  • Handling Missing Data:
    Use the system prompt to instruct the AI to return "NA" for missing fields to avoid null or empty values.

  • Large PDF Files:
    For very large resumes, consider limiting the number of pages extracted or splitting the file to avoid timeouts.

For further troubleshooting and node-specific guidance, the n8n documentation is an excellent resource.


Additional Resources


Quick Reference Cheat Sheet

Step Node Type Key Settings
Trigger form submission Forms Trigger Fields: firstName, lastName, email, resume (PDF), jobCode
Upload resume to cloud Google Drive Operation: Upload, File field: resume, Filename: custom
Extract text from PDF Extract from File Operation: Extract from PDF, Input Binary Field: resume
Extract personal info Information Extractor Schema: JSON Schema, Attach OpenAI Chat Model
Extract professional info Information Extractor Schema: Attribute Descriptions, Attach OpenAI Chat Model
Merge extracted data Merge Mode: Merge By Index or Combine
Score and decision logic IF / Code Custom logic based on extracted data
Notify candidates and managers Email Dynamic recipient, customized email content
Log application Google Sheets / Docs Append candidate data and scores

By following this tutorial and adapting the nodes as needed, you will create a powerful AI resume screening assistant that automates tedious manual tasks and enhances your recruitment workflow efficiency. As shown in the video above, breaking down the extraction process into smaller, structured chunks yields better accuracy and easier maintenance. Happy automating!

Frequently Asked Questions

Add the n8n Forms Trigger node, configure fields like First Name, Email, and Resume upload, then publish the form to collect submissions.

Connect the Forms Trigger node to a Google Drive node set to upload files, specify the resume field, and configure a custom filename for organization.

Use the 'Extract from File' node to convert PDF binary data into JSON text, enabling AI nodes to analyze resume content.

Add a hidden field like 'jobCode' in the form to tag resumes by job type, then use this field in filenames and routing logic.

Yes, by integrating AI nodes such as OpenAI, you can evaluate and score candidate profiles based on extracted resume information.

Dheeraj Sharma

Dheeraj Sharma

AI Systems Builder
Creator of the n8n Zero to Hero course (42 lessons, 31+ hours). I help solopreneurs build AI systems that grow revenue without growing workload.

Get the n8n Mastery Bundle

All workflows, cheat sheets, and premium resources from the entire course in one package.

Get Premium Resources