🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

OpenAI + Google Sheets: ranked CV shortlists fast

Lisa Granqvist Partner Workflow Automation Expert

CV screening sounds simple until you have 25 PDFs, one job description, and a hiring manager asking for “top 5 by tomorrow.” Then it turns into copy-paste chaos, inconsistent gut calls, and notes that don’t match what you said in the last hiring round.

This is CV screening automation built for recruiters trying to move faster, founders doing hiring on the side, and HR managers who need decisions they can defend. You get a ranked shortlist with fit scores, strengths, weaknesses, and a clear recommendation, without re-reading the same resume twice.

Below, you’ll see how the workflow runs in n8n, what it outputs, and what you need to set it up so screening stays consistent even when volume spikes.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: OpenAI + Google Sheets: ranked CV shortlists fast

The Problem: CV Screening Gets Messy Fast

Manual screening breaks down the moment candidates arrive in mixed formats. Some CVs are clean text. Others are PDFs with odd layouts, missing headings, or names that don’t match the file name. You end up opening each file, hunting for experience, then trying to compare candidates in your head while your notes live in three places. The worst part is consistency. Two people can read the same CV and score it completely differently, which leads to extra meetings and second-guessing.

It adds up fast. Here’s where it usually goes sideways.

  • Reading and re-reading CVs eats a few hours per role, and that’s before you even start shortlisting.
  • PDF extraction is unreliable, so “quick scoring” turns into manual cleanup.
  • Hiring feedback becomes subjective because there’s no shared rubric tied to the job description.
  • Your shortlist isn’t audit-friendly, which makes approvals and stakeholder alignment slower than it should be.

The Solution: OpenAI Scoring + Google Sheets Ranking

This workflow turns a pile of CVs and one job description into a structured shortlist you can actually use. It starts when you upload a JD and multiple CV files through a webhook (PDF or text). The workflow detects which file is the JD versus candidate documents, then extracts text from PDFs so everything is comparable. Next, an AI recruiter agent evaluates each candidate against the JD using a consistent rubric, generating a fit score plus strengths, weaknesses, and a recommendation. Finally, results are returned in a clean response and can be logged to Google Sheets so your shortlist becomes a living dashboard instead of a one-off message in Slack.

The workflow begins with a webhook upload of the JD and CVs. It then normalizes file names, extracts text (including PDFs), and batches candidates for scoring. OpenAI produces structured evaluation data, and the workflow outputs a ranked set of results ready for reporting and sheet-based review.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you’re hiring for one role and you receive 20 CV PDFs. Manually, even a quick first-pass scan at about 8 minutes per CV is roughly 3 hours, and you still have to write notes and rank candidates afterward. With this workflow, you upload the JD plus the 20 CVs once (a couple minutes), then wait while extraction and scoring runs (often around 15–20 minutes depending on PDFs and model speed). You get a ranked list with consistent reasoning, and you can drop it into Google Sheets immediately.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • OpenAI for scoring and recruiter-style analysis
  • Google Sheets to log results and rank candidates
  • OpenAI API key or n8n AI Agent credential (get it from your OpenAI dashboard or n8n credentials)

Skill level: Intermediate. You’ll connect credentials, test the webhook upload, and tweak the evaluation prompt to match your role requirements.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A webhook upload kicks everything off. You submit one job description file and a batch of candidate CV files (PDF or text). The workflow immediately acknowledges the request so you’re not waiting in a spinning browser tab.

The workflow identifies what’s what. It collects file entries, detects formats, and separates the JD from CVs. If a CV is a PDF, it converts the base64 payload into a binary file so it can be extracted reliably.

Candidate text is extracted and normalized. PDFs go through text extraction, then the workflow reattaches metadata (like the original file name) and normalizes candidate naming so results don’t come back as “document (3).pdf.” Small detail. Big quality-of-life improvement.

OpenAI evaluates each candidate in batches. The AI recruiter agent compares each CV against the JD and returns structured fields such as fit score, strengths, weaknesses, and a recommendation. A code step then analyzes the recruiter results so the final response is consistent and easy to store.

You can easily modify the scoring criteria to match your hiring rubric based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the inbound webhook that receives the JD text and CV files from your form or client app.

  1. Add the Incoming Webhook Trigger node and set HTTP Method to POST.
  2. Set Path to chat-new.
  3. Set Response Mode to responseNode so the workflow replies through Return Webhook Response.
  4. Connect Incoming Webhook Trigger to Collect File Entries.
Use a test request that includes body.message (JD text) and body.files[] (base64 files) to validate parsing in Collect File Entries.

Step 2: Connect CV File Intake and PDF Detection

Parse incoming files, detect PDF type, and route only text-based PDFs into the extraction pipeline.

  1. In Collect File Entries, keep the existing code to map body.files into items containing jd, filename, and base64.
  2. In Identify PDF Format, keep Mode set to runOnceForEachItem to classify each file as text or scan.
  3. Configure Branch on PDF Text with Loose Type Validation set to =={{ $json["pdf_type"] === "text" }}.
  4. Connect Branch on PDF Text to Decode Base64 to Binary.
⚠️ Common Pitfall: If base64 is missing, Identify PDF Format returns pdf_type = unknown, so the file will not be processed. Validate your client payload before testing.

Step 3: Set Up PDF Extraction and Candidate Assembly

Convert base64 files into binary PDFs, extract text, and rebuild metadata into a candidate list for evaluation.

  1. In Decode Base64 to Binary, keep Mode set to runOnceForEachItem and retain the binary mapping to application/pdf.
  2. Connect Decode Base64 to Binary to Iterate Records Batch, then connect Iterate Records Batch to Extract PDF Text.
  3. In Extract PDF Text, set Operation to pdf.
  4. Connect Extract PDF Text to Rejoin Metadata After Extract, then to Assemble Candidates Payload, and then to Normalize CV Names.
  5. Leave Placeholder Step connected from Iterate Records Batch for debugging and future expansion.
This workflow contains 7 code-based nodes. Keep their existing JavaScript intact unless you need to change business rules for name extraction, PDF detection, or candidate aggregation.

Step 4: Configure the AI Evaluation Layer

Set up the AI evaluator to compare JD and CVs and produce structured scoring results.

  1. Open Recruitment AI Evaluator and keep the prompt in Text as-is to ensure structured scoring and strict name handling. The prompt uses {{ $json.jd }} and {{ JSON.stringify($json.candidates) }} to pass the JD and candidates.
  2. Ensure OpenAI Chat Engine is connected as the language model for Recruitment AI Evaluator.
  3. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
  4. Connect Normalize CV Names to Recruitment AI Evaluator, then to Analyze Recruiter Results.
⚠️ Common Pitfall: Do not add OpenAI credentials directly to Recruitment AI Evaluator; credentials must be configured on OpenAI Chat Engine.

Step 5: Configure Output Response

Return the scoring results to the caller as the webhook response.

  1. In Analyze Recruiter Results, keep the JSON parsing and candidate ranking logic intact to produce summary_text and candidate metrics.
  2. In Return Webhook Response, set Respond With to allIncomingItems.
  3. Confirm Analyze Recruiter Results connects to Return Webhook Response.

Step 6: Test and Activate Your Workflow

Verify end-to-end processing before enabling the workflow in production.

  1. Click Execute Workflow and send a POST request to the Incoming Webhook Trigger URL with a sample JD in body.message and base64 PDFs in body.files[].
  2. Confirm successful runs: Extract PDF Text outputs text, Recruitment AI Evaluator returns scored candidates, and Return Webhook Response responds with a JSON payload including summary_text.
  3. When testing is successful, toggle the workflow to Active to start processing live submissions.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • OpenAI credentials can expire or get blocked by missing billing/permissions. If things break, check your OpenAI API key status and usage limits in the OpenAI dashboard first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this CV screening automation?

About 30 minutes if your OpenAI and Google Sheets access is ready.

Do I need coding skills to automate CV screening?

No. You’ll mainly connect accounts and paste in your scoring criteria. If you want custom scoring formulas, a little JavaScript helps, but it’s optional.

Is n8n free to use for this CV screening automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per candidate depending on CV length and the model.

Where can I host n8n to run this CV screening automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this CV screening automation workflow for multi-language scoring (English + Vietnamese)?

Yes, and it’s one of the better use cases for this setup. You can adjust the prompt used by the AI recruiter agent to tell it which language to respond in, or to return bilingual fields for strengths and weaknesses. If you want different rubrics by language, add a simple “language detected” branch before the AI step and route candidates to separate prompt templates. Many teams also add one extra output column in Google Sheets for “language confidence” so reviewers know when to double-check.

Why is my OpenAI connection failing in this CV screening automation workflow?

Usually it’s an invalid or expired API key, or billing is not enabled on the OpenAI account. Update the credential in n8n and re-run with one candidate first to confirm it works. If you’re sending many long PDFs at once, rate limits can also cause intermittent failures, so batching (Split in Batches) and slightly slower runs help.

How many CVs can this CV screening automation handle?

Dozens per run is normal, and larger batches work if you process them in smaller chunks.

Is this CV screening automation better than using Zapier or Make?

Often, yes, because this workflow needs branching, batching, and file handling (PDF extraction plus structured AI output) that gets clunky and expensive in simpler tools. n8n also gives you more control over how candidate data is merged, named, and returned, which matters when you’re presenting results to stakeholders. Zapier or Make can still be fine if you only score one CV at a time and don’t care about clean, repeatable ranking logic. If your process includes “upload many files, score all, rank, then log,” n8n is usually the calmer option. Talk to an automation expert if you want a quick recommendation based on your volume.

Once this is running, screening stops being the bottleneck. You get cleaner shortlists, clearer decisions, and a workflow you can repeat for every role without reinventing your process.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal