Automate CV Screening with n8n, OpenAI & Supabase

Streamline candidate screening by automatically extracting and analyzing CVs using n8n’s workflow, OpenAI’s AI, and Supabase storage. This workflow saves recruitment teams hours by delivering matching scores, summaries, and insights for every applicant.
manualTrigger
set
httpRequest
+1
Learn how to Build this Workflow with AI:
Workflow Identifier: 1347
NODES in Use: manualTrigger, set, httpRequest, extractFromFile

Press CTRL+F5 if the workflow didn't load.

Visit through Desktop for Best experience

1. Opening Problem Statement

Meet Sarah, an HR manager at a fast-growing tech startup receiving hundreds of job applications weekly. Each CV arrives in different formats and languages, piled up through multiple platforms. Manually opening each file, skimming for relevant skills, and ranking candidates is not only tedious but error-prone. Sarah often misses hidden talents or wastes hours sifting through resumes that do not fit. The inefficiency stretches the hiring cycle, potentially costing the company valuable time and money in a competitive market.

This is the exact challenge solved by this n8n automation workflow, designed to automate CV screening using advanced AI analysis and structured data handling, streamlining Sarah’s daily applicant evaluation process.

2. What This Automation Does

When this workflow is run, it:

  • Downloads a candidate’s CV from a direct URL (e.g., Supabase storage or Dropbox).
  • Extracts the text content from PDF resumes using n8n’s “Extract Document PDF” node.
  • Sends the extracted CV text and a detailed job description to OpenAI’s GPT-4o-mini model for critical analysis.
  • Receives a structured candidate evaluation response, including a matching percentage, summary, reasons for suitability, and concerns.
  • Parses this JSON response and stores or processes it further as needed.
  • Enables quick, data-driven decisions by HR on candidate suitability without manually reading every resume.

Overall, this automation saves recruitment teams hours per batch of applicants, reduces oversight errors, and delivers consistent, critical insights for hiring decisions.

3. Prerequisites ⚙️

  • n8n Account: To build and run the automation workflow. Self-hosting options available if preferred.
  • OpenAI API Key 🔑: For accessing the GPT-4o-mini model to analyze CV content.
  • HTTP Access to CV Storage 📁: The resumes must be accessible via direct URLs (e.g., Supabase public URLs).
  • Basic familiarity with JSON and REST APIs.

4. Step-by-Step Guide

Step 1: Create the Manual Trigger

In n8n, click + New Workflow. Add a Manual Trigger node. This will allow you to test the workflow on-demand initially.

Step 2: Set Variables for Testing

Add a Set node named “Set Variables”. Configure it to create test input data:

  • file_url: URL of a sample CV PDF file (use the example URL in the workflow).
  • job_description: Paste the complete job description text you want to evaluate candidates against.
  • prompt: A detailed prompt instructing OpenAI how to analyze resumes critically, including evaluating candidate job jumps and skills fit.
  • json_schema: Define the JSON structure for the AI’s response, specifying expected fields like percentage, summary, and reasons.

This node prepares the fixed input data for downstream nodes.

Step 3: Download the CV File

Add an HTTP Request node named “Download File”. Configure:

  • Method: GET (default)
  • URL: Use the expression selector and map from {{$json.file_url}}

This node fetches the CV file content for extraction.

Step 4: Extract Text from the PDF

Add an Extract Document PDF node named “Extract Document PDF”. Configure:

  • Operation: pdf

Connect the HTTP Request node output to this node input. It extracts readable text from the downloaded PDF content.

Step 5: Analyze CV with OpenAI

Add an HTTP Request node named “OpenAI – Analyze CV”. Configure:

  • URL: https://api.openai.com/v1/chat/completions
  • Method: POST
  • Authentication: Use your OpenAI API key credential in n8n.
  • Request Body: JSON format including the GPT-4o-mini model, system and user messages.
  • In the system message, inject the prompt variable from “Set Variables” node.
  • In the user message, send the URL-encoded extracted CV text.
  • Use response_format to request the structured JSON response matching your json_schema.

This node sends the CV data and job description to OpenAI for detailed candidate evaluation.

Step 6: Parse the OpenAI JSON Response

Add a Set node named “Parsed JSON”. Configure it to parse the JSON string returned by OpenAI:

={{ JSON.parse($json.choices[0].message.content) }}

This converts the AI analysis to a usable JSON object in your workflow.

Step 7: Run & Test the Workflow

Connect all nodes as per the flow: Manual Trigger → Set Variables → Download File → Extract Document PDF → OpenAI – Analyze CV → Parsed JSON.

Click Execute Workflow. You should see the candidate evaluation data appear in the “Parsed JSON” node output.

5. Customizations ✏️

  • Adjust Job Description: In the “Set Variables” node, replace the job_description text with your specific role to tailor the AI’s evaluation.
  • Change File Source: Modify the “file_url” in the “Set Variables” node to point to different storage providers or files.
  • Use Different AI Models: In “OpenAI – Analyze CV” node, update the model parameter to GPT-4 or another suitable model depending on your subscription.
  • Add More Extraction Options: Extend the “Extract Document PDF” node or add additional extractors to support DOCX or other document types.

6. Troubleshooting 🔧

  • Problem: “Error: Could not download file from URL.”

    Cause: The URL specified in file_url is invalid or inaccessible.

    Solution: Verify the URL is public and reachable. You can test it by pasting it in a browser. Update the “Set Variables” node accordingly.
  • Problem: “Extract Document PDF” node returns empty or garbled text.

    Cause: The CV PDF might be scanned images or protected.

    Solution: Confirm the CV is machine-readable. Use OCR tools or alternate extraction methods for scanned documents.
  • Problem: OpenAI API returns error or unexpected response.

    Cause: API key invalid, exceeded usage limits, or request JSON misformatted.

    Solution: Check and update your OpenAI credentials in n8n. Review request body payload formatting carefully.

7. Pre-Production Checklist ✅

  • Ensure the CV file URLs are accessible and valid.
  • Validate the JSON schema matches the expected OpenAI response.
  • Test OpenAI API credentials and permissions.
  • Run end-to-end test with sample CVs matching job criteria.
  • Backup your workflow version in n8n before starting production runs.

8. Deployment Guide

Activate the workflow in n8n once testing is successful. You can trigger it manually, or extend it with webhook or form inputs to automate with real candidate CV submissions. Monitor logs in n8n’s execution history to track processing results and detect errors early. Integrate the parsed data output with other systems like HRIS or databases for seamless candidate tracking.

10. Conclusion

By following this guide, you’ve built a robust n8n automation that downloads, extracts, analyzes, and evaluates candidate CVs using OpenAI’s powerful AI model. This workflow can save recruitment teams significant time, provide consistent candidate insights, and reduce errors from manual reviews.

Next automation ideas you can try include automatically emailing shortlisted candidates via Gmail node, adding sentiment analysis on cover letters, or integrating with Slack to notify hiring managers instantly.

With this workflow, you’ve taken a huge step towards smarter, AI-powered recruiting — simplifying your hiring process with speed and precision.

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free