🔓 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

Gmail to Google Sheets, scored resumes in one list

Lisa Granqvist Partner Workflow Automation Expert

Your hiring inbox fills up, fast. A few great candidates get buried under “almost right” resumes, and your process turns into tab-switching, renaming files, and trying to remember who looked promising.

Recruiters feel this when volume spikes. A hiring manager trying to move quickly feels it too, and honestly, so does a founder doing their first serious round of hiring. This Gmail resume scoring automation turns incoming resume emails into a ranked shortlist you can actually work from.

Below, you’ll see exactly how the workflow runs, what results to expect, and what you need to set it up in n8n without turning it into an IT project.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Gmail to Google Sheets, scored resumes in one list

The Problem: Resume Triage Turns Into Inbox Archaeology

Resume screening sounds simple until you’re doing it at speed. The resumes arrive as PDFs inside emails, sometimes with missing context, sometimes with vague subject lines, and often in bursts that blow up your afternoon. You open, download, skim, take notes, try to compare candidates fairly, then repeat. After about 20 resumes, everything blurs together. The real cost isn’t just time. It’s the mental load, the inconsistent decisions, and the good candidates you meant to revisit but never did.

The friction compounds. Small manual steps create big delays once the volume hits “dozens,” not “three.”

  • You end up re-reading the same resume twice because there’s no single shortlist to work from.
  • Notes live in too many places (email threads, docs, Slack messages, your memory), so decisions become inconsistent.
  • It’s easy to miss key signals like a required skill or relevant industry experience when you’re scanning quickly.
  • Sharing candidates with a team turns into forwarding emails and hunting down “the latest version” of the PDF.

The Solution: Gmail → AI Parsing → Scored Rows in Google Sheets

This workflow watches a Gmail inbox for unread emails that include PDF resume attachments. When a new application arrives, it pulls the PDF out of the email, converts it into text, and sends that text to an AI agent powered by an OpenAI chat model. The agent extracts structured fields (like name, email, LinkedIn, skills, education) and applies your evaluation criteria to produce a score. Finally, it appends one clean row to a Google Sheet, so every applicant lands in the same place with the same format and a comparable score. No downloading. No copy-paste. No “where did I put that one?”

The workflow starts with an Incoming Email Trigger in Gmail. Then it derives text from the PDF and passes it into the Resume Review Agent, which uses the OpenAI Chat Engine plus a structured output schema. At the end, Append Evaluation to Sheets logs the candidate details and score in Google Sheets.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you receive 30 applications over a day. Manually, even a quick routine (open email, download PDF, skim, jot notes, then log basics) is maybe 4 minutes each, which is about 2 hours. With this workflow, you spend a couple minutes setting criteria and checking the sheet, then let n8n process the batch in the background. In practice, most teams end up with about 20 minutes of review time because the sheet is already ranked and searchable.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Gmail to receive resume emails and attachments.
  • Google Sheets to store your scored candidate shortlist.
  • OpenAI API key (get it from your OpenAI API dashboard)

Skill level: Intermediate. You’ll connect Google OAuth, add your scoring criteria, and test with a few real resumes.

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

How It Works

New resume emails trigger the run. The Gmail Trigger checks on a schedule (for example, every 6 or 24 hours) and looks for unread emails with PDF attachments in the inbox you choose.

The PDF becomes usable text. n8n pulls the resume attachment out of the email and uses a file extraction step to derive the resume text, so you’re not asking the model to “guess” from a messy format.

AI extracts fields and applies your scoring rules. The Resume Review Agent uses the OpenAI Chat Engine plus a structured output schema so you get the same columns every time (name, email, LinkedIn, skills, education, and score).

Everything lands in one Google Sheet. The workflow appends a new row per candidate, which means you can sort by score, filter by keywords, and share one link with the team instead of forwarding attachments.

You can easily modify the scoring criteria to match each role you’re hiring for based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Incoming Email Trigger

Set up the Gmail trigger to watch for unread emails with attachments so resumes can be processed automatically.

  1. Add the Incoming Email Trigger node as your workflow trigger.
  2. Credential Required: Connect your gmailOAuth2 credentials.
  3. Set Simple to false.
  4. In Filters, set q to has:attachment.
  5. In Filters, set labelIds to UNREAD and readStatus to unread.
  6. In Options, enable downloadAttachments by setting it to true.
  7. In Poll Times, add an item with mode everyHour and minute 1.

Tip: Ensure incoming resumes are attached as PDFs, since downstream extraction expects a PDF attachment in the binary property attachment_0.

Step 2: Connect Google Sheets

Prepare the destination sheet where the evaluation results will be appended.

  1. Add the Append Evaluation to Sheets node.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  3. Set Operation to append.
  4. Set Document ID to [YOUR_ID].
  5. Set Sheet Name to [YOUR_ID] (cached name shows Resume Score).
  6. In Options, ensure useAppend is true.

⚠️ Common Pitfall: The columns must exist in your sheet with matching names: Name, Email, Score, LinkedIn, and Resume text.

Step 3: Set Up Resume Text Extraction

Extract readable text from PDF attachments so the AI agent can analyze the resume.

  1. Add the Derive Text from PDF node.
  2. Set Operation to pdf.
  3. Set Binary Property Name to attachment_0.
  4. Connect Incoming Email TriggerDerive Text from PDF in the main flow.

Step 4: Set Up the AI Scoring Pipeline

Configure the AI agent and schema parser to extract structured fields and generate a resume score.

  1. Add the Resume Review Agent node and set Text to =Here is the resume:{{ $json.text }}.
  2. Set Prompt Type to define and enable hasOutputParser.
  3. In Options → systemMessage, use: You are an invaluable assistant. You were given a resume. You have to help me analyze the resume and give it a score based on the details available in the resume. Also, extract the name, email, and LinkedIn profile from the resume.
  4. Add the OpenAI Chat Engine node as the language model and set Model to gpt-4o-mini.
  5. Credential Required: Connect your openAiApi credentials to OpenAI Chat Engine.
  6. Add the Parsed Output Schema node and set Schema Type to manual with Input Schema set to the provided JSON schema.
  7. Connect OpenAI Chat Engine to Resume Review Agent as the ai_languageModel.
  8. Connect Parsed Output Schema to Resume Review Agent as the ai_outputParser.
  9. Connect Derive Text from PDFResume Review Agent in the main flow.

Tip: Parsed Output Schema is an AI sub-node, so credentials are added to OpenAI Chat Engine, not the parser itself.

Step 4: Configure the Output to Google Sheets

Map the AI output into sheet columns so each evaluated resume becomes a new row.

  1. Open Append Evaluation to Sheets and set column mappings in Columns → Value.
  2. Set Name to {{ $json.output.name }}.
  3. Set Email to {{ $json.output.email }}.
  4. Set Score to {{ $json.output.score }}.
  5. Set LinkedIn to {{ $json.output.linkedin }}.
  6. Set Resume text to {{ $('Derive Text from PDF').item.json.text }}.
  7. Connect Resume Review AgentAppend Evaluation to Sheets in the main flow.

Step 5: Test and Activate Your Workflow

Verify the end-to-end flow and then activate it for production use.

  1. Click Execute Workflow and send a test email with a PDF resume attached to the Gmail account monitored by Incoming Email Trigger.
  2. Confirm that Derive Text from PDF outputs a text field.
  3. Verify Resume Review Agent returns structured output with name, email, linkedin, and score.
  4. Check your Google Sheet to ensure a new row is appended by Append Evaluation to Sheets.
  5. When satisfied, toggle the workflow to Active to run automatically.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google (Gmail/Sheets) OAuth credentials can expire or need specific permissions. If things break, check the credential status in n8n and confirm Gmail API + Google Sheets API are enabled in Google Cloud Console 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 Gmail resume scoring automation?

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

Do I need coding skills to automate Gmail resume scoring?

No. You’ll mostly connect accounts and tweak the scoring prompt and sheet columns.

Is n8n free to use for this Gmail resume scoring 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 usage costs, which are usually a few cents per resume depending on the model and 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 Gmail resume scoring workflow for different job roles?

Yes, and you should. Update the evaluation criteria in the Resume Review Agent prompt so it scores for that role (for example, “B2B SaaS AE,” “React developer,” or “Office manager”). You can also adjust the structured output schema to add fields like location, salary expectations, or visa status, then map those fields into new Google Sheets columns.

Why is my Gmail connection failing in this workflow?

Most of the time it’s an OAuth issue or missing API access in Google Cloud Console. Reconnect the Gmail credential in n8n, confirm the Gmail API is enabled, and make sure the account has permission to read messages and attachments. If it still fails, check whether your trigger is filtering too narrowly (unread only, specific labels, or attachment type) and returning zero matching emails.

How many resumes can this Gmail resume scoring automation handle?

A typical small team can run hundreds of resumes a week without trouble, as long as you respect Google and OpenAI rate limits.

Is this Gmail resume scoring automation better than using Zapier or Make?

Often, yes, if you care about structured extraction and scoring quality. n8n is built for multi-step logic, so you can parse PDFs, enforce a strict output schema, and add branching rules without paying per tiny “step.” Self-hosting is also a big deal when volume grows because you’re not watching task limits every week. Zapier or Make can still be fine for lightweight routing, but resume parsing tends to get messy unless you can control the AI prompt, the output structure, and the error handling. If you want help choosing, Talk to an automation expert.

Once this is running, your inbox stops being the system. The sheet becomes the system, and you get hours back every week to spend on actual hiring decisions.

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