Google Sheets + Gmail: CV screening without inbox chaos
Hiring sounds simple until your inbox turns into a CV landfill. PDFs everywhere, follow-ups slipping through, and your “tracker” living in five different versions.
This CV screening automation hits HR managers first, honestly. But recruiters juggling volume and founders doing hiring on top of everything else feel it too. You get a scored CV, a clean row in Google Sheets, and confirmations sent automatically.
Below you’ll see how this workflow runs in n8n, what results to expect, and what you can tweak so it matches your role, your roles, and your standards.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets + Gmail: CV screening without inbox chaos
flowchart LR
subgraph sg0["Application Form Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n1@{ icon: "mdi:message-outline", form: "rounded", label: "Confirmation of CV Submission", pos: "b", h: 48 }
n2@{ icon: "mdi:message-outline", form: "rounded", label: "Inform HR New CV Received", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Using AI Analysis & Rating", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Convert Binary to Json", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Application Form"]
n6@{ icon: "mdi:database", form: "rounded", label: "Candidate Lists", pos: "b", h: 48 }
n6 --> n2
n5 --> n4
n4 --> n3
n0 -.-> n3
n2 --> n1
n3 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n3 ai
class n0 aiModel
class n6 database
classDef customIcon fill:none,stroke:none
class n5 customIcon
Why This Matters: CV screening that doesn’t break your process
Most hiring “systems” fall apart at the exact moment you need them most: when applications start coming in fast. A candidate submits a PDF, you download it, rename it, skim it, then try to remember where to log it. Maybe you reply. Maybe you don’t. Meanwhile your hiring spreadsheet is missing half the applicants, and the other half have notes scattered in email threads. That’s not just messy. It slows decisions, creates awkward candidate experiences, and makes it harder to defend why someone did or didn’t move forward.
It adds up fast. Here’s where the friction usually shows up.
- CVs live in Gmail attachments, which means no single source of truth for the role.
- Manual screening turns into “quick skims,” and consistency drops after the first few candidates.
- Confirmation emails get delayed or forgotten, so candidates follow up and your inbox gets worse.
- Copy-pasting into Google Sheets invites mistakes like wrong names, wrong emails, or missing files.
What You’ll Build: AI-scored CV intake logged to Sheets with auto emails
This workflow gives you a dependable intake lane: a candidate submits their details and CV through a form, and n8n takes it from there. The PDF gets processed so the resume text can be extracted, then an AI step reviews the content and produces a compatibility rating you can actually sort and filter. Next, the workflow writes everything into a Google Sheet, so your tracker is always up to date without anyone “keeping it updated.” Finally, Gmail sends two emails: one to HR so you know a new CV arrived (with the key details), and one to the candidate confirming you received their application. Same flow every time, even when you’re slammed.
The workflow starts at the candidate intake form. Then it extracts resume text, runs AI resume scoring, and stores the results in Google Sheets. After that, Gmail sends notifications so both HR and the candidate get timely updates.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you receive 20 applications in a day. Manually, you might spend about 10 minutes per candidate downloading the PDF, skimming, logging to Sheets, and sending a receipt, which is roughly 3 hours of pure admin. With this workflow, the “work” is basically reviewing the scored rows in Google Sheets. Candidates still get a near-instant email, HR gets notified automatically, and you get those 3 hours back for actual hiring decisions.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing candidates and scores.
- Gmail to send HR alerts and candidate receipts.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Beginner. You’ll connect accounts, paste a prompt, and map a few fields into a sheet.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A candidate submits your intake form. The workflow begins the moment someone uploads their CV PDF and enters their basic details (name, email, role applied for, and anything else you ask).
The CV is converted from PDF into usable text. n8n extracts the resume content so the scoring step isn’t guessing based on a file name or a few visible lines.
AI scores the resume using your criteria. The Basic LLM Chain runs your “CV screening” prompt and returns a compatibility rating plus summary points you can store, review, and compare across candidates.
Sheets becomes the system of record, and Gmail handles the communication. A new row is added or updated in Google Sheets, HR gets an email about the new application, and the candidate receives a receipt email so they’re not left wondering.
You can easily modify the AI scoring rules to match different roles or seniority levels based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
This workflow starts when a candidate submits the intake form. Configure the form fields and ensure file uploads match the resume extraction step.
- Add and open Candidate Intake Form.
- Set Form Title to
Application for Software Engineer Position. - Confirm the form fields include Full Name, E-mail, Expectation, Linkedin, and Your Resume/CV with acceptFileTypes set to
.pdf.
Step 2: Connect Google Sheets
Store candidate data and AI scoring into a Google Sheet for tracking.
- Add and open Update Candidate Sheet.
- Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Set Operation to
append. - Set Document to
[YOUR_ID]and Sheet to[YOUR_ID]. - Map columns to these expressions exactly:
CV →{{ $('Candidate Intake Form').item.json['Your Resume/CV'][0].filename }}
Full Name →{{ $('Candidate Intake Form').item.json['Full Name'] }}
E-mail →{{ $('Candidate Intake Form').item.json['E-mail'] }}
Expectation →{{ $('Candidate Intake Form').item.json.Expectation }}
Linkedin →{{ $('Candidate Intake Form').item.json.Linkedin }}
AI Rating →{{ $json.text }}
[YOUR_ID] placeholders in Update Candidate Sheet with your actual Google Sheet document and sheet IDs.Step 3: Set Up Resume Extraction and AI Scoring
This step extracts text from the uploaded PDF and runs it through the AI scoring chain using Gemini.
- Open Extract Resume Text and set Operation to
pdfand Binary Property Name toYour_Resume_CV. - Open AI Resume Scoring and set Text to
{{ $json.text }}. - Confirm the AI prompt content remains unchanged in AI Resume Scoring to preserve the rating format and language controls.
- Open Gemini Chat Engine and connect it as the language model for AI Resume Scoring.
- Credential Required: Connect your googlePalmApi credentials to Gemini Chat Engine (credentials are added to the parent language model node, not the chain node).
Step 4: Configure Output & Notification Emails
Notify HR of new candidates and send a confirmation to the applicant.
- Open Notify HR of New CV and set Send To to
[YOUR_EMAIL]. - Keep the Message template with embedded expressions such as
{{ $('Candidate Intake Form').item.json['Full Name'] }}and{{ $('AI Resume Scoring').item.json.text }}. - Credential Required: Connect your gmailOAuth2 credentials to Notify HR of New CV.
- Open Send Submission Receipt and set Send To to
{{ $('Candidate Intake Form').item.json['E-mail'] }}. - Set Subject to
We Have Received Your CVand keep the Message using{{ $('Candidate Intake Form').item.json['Full Name'] }}. - Credential Required: Connect your gmailOAuth2 credentials to Send Submission Receipt.
[YOUR_EMAIL] in Notify HR of New CV before activating, or HR notifications will not send.Step 5: Test and Activate Your Workflow
Run a full test submission to verify PDF extraction, AI scoring, sheet updates, and emails.
- Click Test Workflow and submit a sample entry through Candidate Intake Form with a PDF resume.
- Confirm Extract Resume Text outputs text and AI Resume Scoring returns a plain-text rating in
$json.text. - Verify Update Candidate Sheet appended a new row with the candidate details and AI rating.
- Check that Notify HR of New CV and Send Submission Receipt both sent emails successfully.
- Toggle the workflow to Active for production use.
Troubleshooting Tips
- Google Sheets access often fails due to missing permissions on the spreadsheet. If rows aren’t writing, check the file sharing settings and the connected Google account in n8n credentials.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Your AI scoring prompt is the difference between “useful rating” and “generic fluff.” Add role requirements, must-have skills, and disqualifiers early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your Google and OpenAI accounts are ready.
No. You’ll connect your tools and map a few fields into Google Sheets.
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 CV depending on your prompt length.
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.
Yes, and you should. The quickest win is adjusting the “AI Resume Scoring” prompt so it matches a specific role (for example, “Sales Development Rep” vs. “Senior Backend Engineer”). You can also change what gets stored in “Update Candidate Sheet,” like adding a column for red flags or must-have keywords. And if your intake source changes, you can replace “Candidate Intake Form” with another trigger while keeping the extraction, scoring, and logging steps intact.
Usually it’s expired Google auth or the wrong Google account connected in n8n. Reconnect your Gmail credentials, then confirm the Gmail node is allowed to send email on your behalf. If emails send sometimes but not always, check Gmail sending limits and make sure you’re not firing multiple notifications per submission due to duplicate form events.
Most small teams run dozens of CVs per day without issues, and it scales up from there based on your n8n plan and API limits.
Often, yes, once you care about consistency and control. This workflow isn’t just “move data from A to B.” It extracts PDF text, runs an AI scoring chain, writes structured outputs, and then sends two separate emails in the right order. n8n handles that kind of multi-step logic cleanly, and self-hosting is a real option when volume grows. Zapier or Make can still work if you keep it simple, but AI + file processing tends to get expensive and brittle. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation based on your volume.
Once this is running, your tracker stays clean and every applicant gets a timely response. The workflow handles the repetitive parts, so you can focus on who to move forward.
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.