Analyze a Resume with an AI Agent and Match It to a Job Offer (Free n8n Workflow + Video Guide + Tutorial + Download)
This guide shows you how to automate the analysis of a PDF resume using an AI agent integrated into n8n, which extracts key data and compares it to a job offer.
In just seconds, you’ll get a structured candidate profile and a precise matching score — no manual sorting or copy-pasting required.
You can download the ready-to-use workflow, follow the step-by-step video tutorial, and adapt it to your own hiring process — without writing a single line of code.
Hack’celeration: What the so-called experts never show you? We give it to you.






What the n8n Automation Enables to Automatically Analyze a Resume with an AI Agent and Measure Matching
Want to instantly know if a resume matches a job offer without spending hours reviewing profiles? This n8n automation helps you pre-qualify every candidate with an AI agent.
Here’s how it works: download the ready-to-use workflow, upload a PDF resume and a job description, and get a detailed matching score with all data sorted in Google Sheets.
Bonus: you can fully customize the trigger (e.g. fetch applications via email or API) and automatically send a rejection email or alert when a strong candidate is identified.
No more guessing or manual review — with n8n and this AI agent, you qualify the right candidates in seconds, for free and with zero effort.
To make things easy, the workflow you download is fully ready to use: each step in the scenario includes clear annotations directly inside n8n. You can see exactly how the AI agent compares the resume to the job offer.
Along with the workflow, you’ll get a detailed video tutorial and a step-by-step guide that walk you through setup and customization. You can use it as-is or connect it to your existing tools.
The goal: help you automatically pre-qualify each application with no coding, using an AI agent that scores profiles based on your job criteria.
Tutorial Video – Analyze a Resume with an AI Agent and Compare It to a Job Offer
n8n Workflow Details: Step-by-Step Guide with Screenshots (AI Agent Matching Resume & Job Offer)
Prerequisite: Start with Resume Data Extraction (First Part of the Workflow)
This automation relies on an essential first step: automatically extracting and structuring data from a resume using an AI Agent. This initial setup is fully explained in a dedicated tutorial on a separate page.
You’ll learn how to turn a PDF resume into a structured file ready for analysis in Google Sheets, Notion, or your CRM. It comes with a ready-to-use n8n workflow, a step-by-step guide, and a detailed video tutorial.
Before setting up this new automation, make sure to complete the first part explained in the previous guide. This ensures all resume data is clean and ready for the matching analysis.
Step 1: Fetch the Job Offer from a Google Docs
This first step connects your workflow to a Google Docs document containing a job offer. The job description will be used by the AI agent to automatically assess compatibility with each resume received.
The Google Docs module makes it easy to extract the job posting text directly from a document, without manual copy-paste. This makes your automation fully dynamic and reusable.
➡️ Parameters to configure:
- Operation: Get (read existing document)
- Document URL: paste the URL of the Google Docs containing the job offer
- Authentication: select your Google Docs account (OAuth2)
You can use a different URL for each execution, depending on the job you’re hiring for. That makes the AI matching adaptable to any recruitment process.
Step 2: Analyze the Resume Against the Job Description
This step activates an AI Agent integrated into n8n that automatically compares a resume to a job description. Both the job listing and the resume content are processed in a structured prompt to generate an accurate compatibility score.
By default, the analysis uses 4 weighted criteria out of a total of 100 points:
- Key Skills (40 points): checks how well the candidate’s skills match the requirements
- Relevant Experience (30 points): compares past experience with the job responsibilities
- Tools & Methodologies (20 points): verifies familiarity with the tools or processes mentioned in the job offer
- Education (10 points): assesses how the degree level and specialization align with the job requirements
The result is a structured JSON output containing individual scores for each criterion, plus a global matching score that can be reused throughout the workflow.
Note: This scoring system is fully customizable. You can adjust the analysis criteria, change the weights, or add new ones like location, spoken languages, availability, and more.
This lets you tailor the AI Agent to your unique evaluation standards or specific recruitment workflows.
Step 3: Connect the AI Model (GPT-4o)
This step connects the workflow to an advanced language model used to analyze both the resume and the job description. By default, it uses OpenAI’s GPT-4o, a powerful and reliable model known for its accuracy and performance.
The model is called through the LangChain Chat Model node, allowing the AI Agent to handle semantic matching and scoring logic, returning a clean and structured JSON response.
Good to know: you can replace GPT-4o with another compatible model. For example, use GPT-3.5 to reduce costs, or switch to a self-hosted model to keep your data private.
Everything is customizable at this step: model selection, generation settings, temperature, token limits, and more. The n8n automation is built to stay fully flexible and adaptable to your tech stack and privacy constraints.
Step 4: Parse the AI Agent Results (Structured Output)
Once the AI Agent has compared the resume and the job offer, it returns a structured response including the total score, a breakdown by category, and a summary.
This step uses the Structured Output Parser module to convert the AI response into clean JSON data. You’ll be able to retrieve key fields such as:
- match_score: overall matching score (out of 100)
- criteria.skills, criteria.experience, etc.: individual sub-scores
- summary: a human-readable summary of the evaluation
The main benefit is getting a well-structured and usable JSON output that can be pushed to Google Sheets, Notion, Airtable, or used to trigger other workflow actions like automated emails or internal alerts.
Bonus: everything is already formatted, so you can directly plug these values into the next steps of your n8n automation — no extra processing needed.
Step 5: Automatically Update a Row in Google Sheets
Once the resume analysis is complete, this step lets you centralize all data in Google Sheets. Each row represents a candidate, identified by their email address.
The Google Sheets node is set to “Update” mode to modify an existing row based on the candidate’s email. This avoids duplicates and keeps your table always up to date.
Automatically updated fields:
- match_score: overall score calculated by the AI
- skills, experience, tools, education: individual scores by category
- summary: analysis summary
- job_title: analyzed job position
All values come from the structured parser in the previous step. Thanks to this integration, you can visualize results in a clear spreadsheet, filter or sort them, or link them to other workflows (e.g., alerts, follow-up emails, CRM updates…)
Pro tip: you can fully customize which columns get updated, how matching is done (e.g., with a unique ID), and even add more fields to improve your candidate tracking system.
Step 6: Filter Applications with a Low Matching Score
Thanks to the “If” node, you can automate the first decision: should this application be processed further?
In this example, we’ve set a threshold of 20 points (out of 100). If the candidate’s overall match_score
is below that threshold, the workflow can:
- Send an automated rejection message
- Completely skip the candidate in the next steps
- Store the candidate separately in a dedicated tab or database
This step helps filter out candidates who don’t match the job requirements before triggering more advanced actions (CRM updates, notifications, etc.).
Of course, you can fully customize this logic: change the score threshold, combine it with additional filters (e.g., missing tool experience), or create multiple conditional paths for different evaluation levels.
Step 7: Automatically Send a Rejection Email if the Score Is Too Low
In this scenario, if the candidate’s score is too low (below 20 in our example), you can automatically send a rejection email using Gmail.
The message is dynamically personalized with the job title, adding just enough context for a professional and respectful message:
Subject: Your Application – {{ $json.job_title }} Hi, Thank you for your interest in the {{ $json.job_title }} position. After reviewing your application, we’ve carefully assessed the match between your profile and the key requirements for this role. At this time, we believe there is not enough alignment to proceed with the next steps of the process. We appreciate the time and effort you put into your application and wish you all the best in your job search and future professional endeavors. Warm regards, Romain CEO
This step clearly demonstrates what can be automated once the AI analysis is complete.
But nothing is mandatory: you could choose to send a Slack notification, store the candidate for manual review, or create a follow-up task in your CRM. Everything is fully customizable.
Here, the automated email simply illustrates how far you can take the logic of pre-qualification — all the way to action.
Step 8: Automatically Notify the Recruiter When a Strong Profile Is Detected
If a candidate reaches a sufficient score, the workflow can automatically send an email to a recruiter or decision-maker. The goal is to streamline the review process and only notify when a profile matches the position.
Here’s an example of an internal automated email:
Subject: Potential Candidate – {{ $json.job_title }} Application Hi Romain, A new application for the {{ $json.job_title }} position has been processed. The candidate shows a strong match with the job requirements and may be worth reviewing in more detail. Let me know if you’d like to receive their profile or schedule a follow-up. Best,
This is, of course, just one example.
You can replace this action with whatever suits your workflow best:
- Create a new record in a Notion or Airtable database
- Send a notification via Slack, Discord, or Teams
- Reach out to the candidate directly (with a Calendly link)
- Add a follow-up task in your CRM (HubSpot, Pipedrive…)
Every part of this logic is 100% customizable based on your tools, team, and hiring process.
Why Automatically Analyzing a Resume and Matching It with a Job Offer Will Transform Your Hiring Process
- Partial or biased reading of resumes depending on the role or candidate profile.
- Time wasted manually comparing resumes to job requirements.
- Lack of consistent and objective scoring across candidates.
- High risk of missing great profiles due to unclear evaluation.
- Instant and objective evaluation of every application.
- Customizable scoring based on key job criteria (skills, tools, education, etc.).
- Faster decisions and better prioritization of top profiles.
- Seamless automation with Google Sheets, Notion, Airtable, or your CRM.