🔓 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, resumes logged and deduped

Lisa Granqvist Partner Workflow Automation Expert

Your inbox is not an ATS. Yet somehow, every resume ends up living there first, buried under threads, follow-ups, and “just checking in” replies.

Recruiters feel it in high-volume weeks. HR managers feel it when someone asks, “Do we have that candidate’s PDF?” And founders doing their own hiring feel it because resume intake automation is the difference between moving fast and drowning in attachments.

This workflow turns Gmail resume emails into a clean Google Sheet, stores each file in Google Drive, and uses AI to extract candidate details so you can filter and act. Here’s what it does, what it fixes, and how to make it yours.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Gmail to Google Sheets, resumes logged and deduped

The Challenge: Resume Intake Turns Into Spreadsheet Chaos

Resume handling sounds simple until you’re doing it every day. You download a PDF, rename it (or don’t), upload it somewhere “temporary,” then copy the basics into a sheet so the team can review. Later, someone forwards the same candidate again, or the candidate replies from a different email, and now you’ve got duplicates and confusion. Multiply that by 20, 50, 100 applicants. It becomes busywork that steals focus from what actually matters: screening, outreach, and making decisions quickly.

It adds up fast. Here’s where it breaks down in real teams.

  • Resume files get scattered across inboxes and desktops, so finding “the latest one” becomes a mini project.
  • Copy-pasting candidate info into Google Sheets introduces mistakes, especially phone numbers, job titles, and dates.
  • Duplicates creep in when the same resume is emailed twice or forwarded internally, which means reviewers waste time on repeats.
  • You can’t filter or search effectively when the “data” is stuck inside PDFs instead of structured rows.

The Fix: Gmail → Drive Archive → AI Extraction → Deduped Sheet

This n8n workflow watches your Gmail inbox for incoming resumes (based on attachments or matching email patterns you define). When a resume arrives, it pulls the attachment, uploads it into a dedicated Google Drive folder for clean storage, then re-downloads the same file for processing so the workflow always works from the archived copy. Next, it extracts text from the PDF and sends that text to an AI agent (using an Azure OpenAI-compatible chat model) to pull the fields you actually need: name, email, phone, skills, experience, and education. Finally, the workflow cleans the data, checks for duplicates, and appends or updates the candidate row in Google Sheets so your recruiting sheet stays reliable.

The workflow starts with Gmail intake. From there, Google Drive becomes the source of truth for resume storage, while the AI agent converts messy PDF text into structured fields. Google Sheets receives a tidy row you can filter, sort, and share with the team.

What Changes: Before vs. After

Real-World Impact

Say you receive 15 resumes a day. Manually, it’s usually about 10 minutes each to download the PDF, upload to Drive, copy key fields, and sanity-check duplicates. That’s roughly 2 to 3 hours daily. With this workflow, you spend maybe 5 minutes setting up the label or filter in Gmail and glancing at the sheet, then the automation does the storage and extraction in the background. The time you “spend” becomes review time, not admin time.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Gmail to receive resumes and trigger intake.
  • Google Drive for permanent resume archiving.
  • Google Sheets to store structured candidate rows.
  • Azure OpenAI API access (get it from your Azure OpenAI resource in Azure Portal).

Skill level: Intermediate. You’ll connect Google accounts, add an AI key, and adjust a few matching rules.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

Gmail detects a resume email. The workflow begins when Gmail receives a message that matches your criteria (commonly an attachment present, a subject keyword like “Resume,” or a label you apply).

The attachment is saved and normalized. n8n fetches the resume file from the email, then uploads it into Google Drive so you have one consistent archive folder, not a patchwork of downloads.

The PDF is converted into text for AI parsing. The workflow retrieves the archived file from Drive and extracts the readable content. That text is passed to an AI agent powered by an Azure OpenAI chat model, which returns structured fields (think JSON) like contact info, experience summary, skills, and education.

Google Sheets becomes your source of truth. A small transformation script cleans the fields, then the workflow appends a new row or updates an existing one to prevent duplicates. Your team can filter candidates immediately.

You can easily modify the Gmail matching rules to target different roles, or change the sheet columns to fit your pipeline stages. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Gmail Trigger

This workflow starts by monitoring Gmail for incoming resumes, then passes attachments downstream for storage and parsing.

  1. Add and open Gmail Intake Trigger.
  2. Connect your Gmail account to enable inbox monitoring.
  3. Save the node so it can trigger Fetch Email Attachment when new emails arrive.

Credential Required: Connect your Gmail credentials in Gmail Intake Trigger.

Step 2: Connect Google Drive for File Storage

The resume attachments are stored in Drive and then retrieved for content extraction.

  1. Open Fetch Email Attachment and set it to retrieve attachments from the trigger email.
  2. Open Upload to Drive Storage and configure the destination folder where resumes will be saved.
  3. Open Retrieve Drive File and configure it to load the file that was just uploaded by Upload to Drive Storage.

Credential Required: Connect your Gmail credentials in Fetch Email Attachment.

Credential Required: Connect your Google Drive credentials in Upload to Drive Storage and Retrieve Drive File.

Step 3: Set Up Resume Parsing and AI Analysis

This stage extracts text from the resume and uses an AI agent to analyze it before structuring the output.

  1. Open Parse File Content to extract text from the file retrieved in Retrieve Drive File.
  2. Open Resume Analysis Agent and configure it to interpret the extracted content and produce structured output.
  3. Open Azure Chat Model and connect it as the language model for Resume Analysis Agent.

Credential Required: Connect your Azure OpenAI credentials in Azure Chat Model. Azure Chat Model is connected as the language model for Resume Analysis Agent—ensure credentials are added to Azure Chat Model, not the agent.

Step 4: Transform and Store the Results in Google Sheets

The analyzed resume data is formatted and appended to a spreadsheet for tracking.

  1. Open Transform Record Script and map the AI output into fields ready for spreadsheet insertion.
  2. Open Append Sheet Row and select the spreadsheet and sheet to store each resume record.
  3. Ensure Transform Record Script connects to Append Sheet Row as shown in the workflow.

Credential Required: Connect your Google Sheets credentials in Append Sheet Row.

Step 5: Test and Activate Your Workflow

Validate the full flow from email intake to spreadsheet entry before enabling it in production.

  1. Click Execute Workflow and send a test email with a resume attachment to the monitored Gmail inbox.
  2. Confirm the file uploads in Drive, text parsing completes, and Append Sheet Row adds a new row.
  3. When successful, toggle the workflow to Active so Gmail Intake Trigger runs automatically.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Gmail and Google Drive credentials can expire or need specific permissions. If things break, check n8n’s Credentials panel first and confirm the Google account still has Drive access.
  • 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.

Common Questions

How quickly can I implement this resume intake automation?

About an hour if your Google and Azure accounts are ready.

Can non-technical teams implement this resume intake automation?

Yes. You won’t write code, but you will connect accounts and tweak a few matching rules in Gmail and columns in Google Sheets.

Is n8n free to use for this resume intake 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 Azure OpenAI usage, which is typically a few cents per resume depending on 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.

How do I adapt this resume intake automation solution to my specific challenges?

You can adjust the Gmail trigger to only watch a label (like “Applicants”) instead of your whole inbox. The AI extraction can be customized by changing the prompt used by the Resume Analysis Agent so it returns the exact fields your sheet expects, such as location, LinkedIn URL, or eligibility. If your team wants separate sheets per role, keep the same workflow and route records to different Google Sheets tabs based on the email subject or recipient address.

Why is my Gmail connection failing in this workflow?

Usually it’s expired Google OAuth permission or the wrong Google account connected in n8n. Reconnect the Gmail credential, then confirm the workflow has access to read emails and download attachments. If it fails only sometimes, it can also be a message format issue (inline attachments or unusual MIME types), so test with two or three real resume emails and adjust the attachment selection.

What’s the capacity of this resume intake automation solution?

On self-hosted n8n there’s no execution cap, so capacity mostly depends on your server and how fast the AI model responds.

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

Often, yes, because resume parsing needs a few “messy middle” steps that simple zaps don’t handle well. You’re downloading files, storing them, extracting text, calling an AI model, cleaning the output, and deduping before writing to Sheets. n8n is built for that kind of multi-step logic, and you can self-host for unlimited runs if volume spikes. Zapier or Make can still work if you keep it simple, but costs and limitations show up quickly once you add file handling and AI. If you want a second opinion on the trade-offs, Talk to an automation expert.

Once this is running, resumes stop being “email stuff” and start being usable data. Honestly, that’s when hiring starts to feel manageable again.

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