🔓 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

Google Sheets + Gmail for faster resume screening

Lisa Granqvist Partner Workflow Automation Expert

Resume screening breaks down the moment “just one more applicant” turns into 80 PDFs, five inbox threads, and a spreadsheet nobody trusts.

Recruiters feel it first. Then founders doing hiring on the side, and ops leads trying to keep the process fair. This resume screening automation scores candidates consistently, logs every decision, and sends follow-ups without you babysitting the pipeline.

Below you’ll see exactly what the workflow does, what you need to run it, and what “faster screening” looks like in real hours.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Gmail for faster resume screening

The Problem: Resume screening turns into inbox chaos

You start with good intentions: review each resume, take notes, send a reply, and keep the team aligned. Then the volume hits. PDFs live in email threads, comments end up in Slack, and “quick scores” vary depending on who reviewed it and when. Worse, you can’t easily explain a decision later because the reasoning was never captured, or it was captured differently by different people. The slow part isn’t reading. It’s the sorting, the documenting, and the back-and-forth that steals your afternoon.

The friction compounds. Here’s where it breaks down.

  • Resumes get reviewed twice, while other candidates never get a proper look.
  • Scoring shifts over time, so the “same” resume gets a different verdict next week.
  • Follow-up emails lag, which makes you look disorganized to strong candidates.
  • You end up with a spreadsheet full of vague notes like “seems good” and no real justification.

The Solution: AI scoring + Google Sheets logging + Gmail follow-ups

This workflow turns resume screening into a repeatable, documented system. A candidate submits a PDF via an n8n form trigger. The workflow extracts the resume text, then sends it to an AI evaluation agent powered by OpenAI, using your role-specific criteria and fit questions. That evaluation is parsed into a structured result (so you get consistent fields instead of a messy paragraph), and a classifier compares the score to your threshold. From there it branches cleanly: accepted candidates get logged to the “Accepted” tab in Google Sheets and receive an invite email via Gmail, while rejected candidates are logged to the “Rejected” tab and receive a rejection message. Every entry includes the score and justification, so you can defend decisions later without digging through threads.

It starts with a PDF upload. The middle is the “thinking” work: extraction, evaluation, structured parsing, then a pass/fail decision. The end is neat: two sheets updated automatically and the right email sent every time.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you receive 30 resumes in a week for one role. Manually, you might spend about 10 minutes per resume to open the PDF, jot notes, enter a score, and send a follow-up, which is roughly 5 hours of admin before you even schedule interviews. With this workflow, you upload each PDF in a minute or two and let the evaluation run in the background. You still review the top candidates, but the logging and emailing are already done, so the busywork drops to under an hour.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store Accepted and Rejected decisions
  • Gmail to send acceptance and rejection emails
  • OpenAI API key (get it from the OpenAI API dashboard)

Skill level: Intermediate. You’ll paste credentials, edit the AI prompt variables, and confirm your Sheets tabs match the workflow.

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

How It Works

Resume upload triggers everything. A candidate (or you) submits a PDF through the built-in form trigger in n8n, so you’re not hunting through inbox attachments.

The PDF gets turned into usable text. The workflow extracts the resume content from the file, which means the AI evaluates what’s inside the document, not just the filename and your gut feeling.

AI evaluates and classifies the candidate. The OpenAI-powered evaluation agent scores the resume using your must-haves, your role description, and your soft-skill questions. A structured output parser reads the response into predictable fields, then a classifier checks the score against your threshold and decides “Accepted” or “Rejected.”

Sheets and Gmail get updated automatically. Accepted candidates are appended to the Accepted tab and receive an invite email. Rejected candidates go to the Rejected tab and get the rejection email, so nothing sits in limbo.

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

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the intake form that captures resumes and applicant details for downstream processing.

  1. Add and open Form Intake Trigger.
  2. Set Form Title to Please Upload your resume .
  3. Confirm the form fields include Resume (file, required, accept .pdf), Email (required), Phone Number (required), and Name (required).
  4. Save the node to generate the public form URL for applicants.

Use the built-in form preview to verify the PDF upload and required fields before moving on.

Step 2: Extract Resume Content

Convert the uploaded PDF into text that can be evaluated by the AI agent.

  1. Add Extract Resume Text and connect it to Form Intake Trigger.
  2. Set Operation to pdf.
  3. Set Binary Property Name to Resume.

Step 3: Set Up the Resume Evaluation AI

Configure the AI agent to evaluate the resume against role-specific criteria and return a structured JSON response.

  1. Open Resume Evaluation Agent and set Text to =This is my CV "{{ $json.text }}".
  2. Ensure Prompt Type is set to Define and Has Output Parser is enabled.
  3. Confirm the system message includes your placeholders like {{COMPANY_NAME}}, {{ROLE_NAME}}, and {{CRITERIA_1}}{{CRITERIA_5}} so you can replace them with real values.
  4. In OpenAI Chat Engine, select model gpt-4o and connect it as the language model for Resume Evaluation Agent. Credential Required: Connect your openAiApi credentials.
  5. Open Structured Output Reader and verify the JSON schema example matches the output you want.

⚠️ Common Pitfall: Structured Output Reader is an AI sub-node. Credentials are not added here—ensure OpenAI Chat Engine is authenticated for Resume Evaluation Agent.

Step 4: Configure Decision Classification and Routing

Classify the AI decision into Accepted or Rejected and route records to the correct outputs.

  1. Open Decision Classifier and set Input Text to ={{ $json.output.decision }}.
  2. Confirm categories are Accepted (if decision is Proceed) and Rejected (if decision is rejct).
  3. Connect OpenAI Classifier Model as the language model for Decision Classifier and select model gpt-4.1-mini. Credential Required: Connect your openAiApi credentials.
  4. Ensure the flow routes correctly: Decision Classifier outputs to both Append Accepted Sheet and Append Rejected Sheet in parallel.

Step 5: Connect Google Sheets for Decision Logs

Write accepted and rejected candidates to separate sheets with structured fields.

  1. Open Append Accepted Sheet and set Operation to append.
  2. Set Document ID to [YOUR_ID] and Sheet Name to [YOUR_ID] (Accepted). Credential Required: Connect your googleSheetsOAuth2Api credentials.
  3. Map columns using the existing expressions, such as Email to ={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }} and JUSTIFICATION to ={{ $json.output.justification }}.
  4. Repeat the same configuration in Append Rejected Sheet with the rejected sheet name. Credential Required: Connect your googleSheetsOAuth2Api credentials.

⚠️ Common Pitfall: Replace [YOUR_ID] with real Google Sheets document and sheet IDs, or the append will fail.

Step 6: Configure Applicant Email Responses

Send acceptance and rejection emails to the applicant based on the classifier outcome.

  1. Open Send Acceptance Email and set Send To to ={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }}.
  2. Set Subject to Hiring Process and keep the HTML Message as provided, replacing https://[YOUR_SCHEDULING_LINK] with your real scheduling URL. Credential Required: Connect your gmailOAuth2 credentials.
  3. Open Send Rejection Email and set Send To to ={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }} and Subject to Hiring Process. Credential Required: Connect your gmailOAuth2 credentials.

Keep the applicant name token intact: {{ $('Form Intake Trigger').item.json.Name }} so personalization renders correctly.

Step 7: Test and Activate Your Workflow

Validate the full pipeline from form submission to sheet updates and email delivery.

  1. Click Execute Workflow and submit a test resume through Form Intake Trigger.
  2. Confirm Extract Resume Text outputs readable text and Resume Evaluation Agent returns structured JSON.
  3. Verify that Decision Classifier routes to the correct branch and that either Append Accepted Sheet or Append Rejected Sheet adds a row.
  4. Check that the corresponding email is sent via Send Acceptance Email or Send Rejection Email.
  5. Once validated, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets access can fail if the connected Google account doesn’t have edit permissions on the file. If appends stop working, check the sheet sharing settings and the credential inside n8n 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 resume screening automation?

About 30 minutes if your Google and OpenAI accounts are ready.

Do I need coding skills to automate resume screening?

No. You’ll connect accounts and edit a few prompt placeholders.

Is n8n free to use for this resume 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 resume depending on prompt size.

Where can I host n8n to run this 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 resume screening automation workflow for a different role and scoring rubric?

Yes, and you should. Update the AI prompt placeholders like COMPANY_NAME, ROLE_NAME, ROLE_DESCRIPTION, CRITERIA_1 to CRITERIA_5, and Q1 to Q5 so the evaluation matches the job. Then set THRESHOLD to your pass score. Most teams also tweak the Gmail templates so the acceptance email sounds like a human wrote it.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or the wrong spreadsheet ID. Confirm the connected Google account can edit the file, then re-select the sheet in the “Append Accepted Sheet” and “Append Rejected Sheet” steps inside n8n. If you recently duplicated the spreadsheet, the workflow may still point to the old one. Also check that the tabs are named exactly “Accepted” and “Rejected,” because mismatched names cause silent failures.

How many resumes can this resume screening automation handle?

Plenty for typical small teams. On n8n Cloud, your limit is mostly your monthly execution allowance, and self-hosting has no execution cap (it depends on your server). In practice, you can process resumes one-by-one or in bursts; the main bottleneck is API speed and any OpenAI rate limits on your account.

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

Often, yes. n8n is more comfortable when you need branching logic (Accepted vs Rejected), structured AI outputs, and the option to self-host when volume grows. Zapier or Make can still work, but multi-step AI screening flows tend to become expensive and harder to debug. If you need strict control over prompts and logging, n8n usually feels cleaner. Talk to an automation expert if you want help choosing.

You set the rules once, and the workflow applies them the same way every time. That’s hours back each week, plus a hiring process you can actually defend.

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