🔓 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 view

Lisa Granqvist Partner Workflow Automation Expert

Your inbox turns into a hiring queue. Resumes arrive as PDFs, DOCX files, and the occasional weird text attachment, and then someone has to download everything, rename files, scan for basics, and paste notes into a spreadsheet that’s never quite up to date.

Recruiters feel the pain first, because speed matters. But a hiring manager trying to compare candidates and a small operations lead juggling HR on the side gets buried too. This Gmail Sheets resumes automation turns incoming resume emails into a consistent, scored row in Google Sheets, usually in minutes.

You’ll see how the workflow captures attachments, extracts text, uses GPT-4o to score candidates against your role requirements, and logs everything in one review-ready view.

How This Automation Works

The full n8n workflow, from trigger to final output:

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

The Problem: Resume screening becomes inbox triage

Manual resume screening is the kind of work that looks “quick” until you do it 30 times in a row. You open an email, download the attachment, realize it’s a DOCX, convert it, skim for role basics, then try to remember what you thought about the last candidate. Meanwhile, someone asks, “Who are our top three?” and you have to reconstruct your own opinions from scattered notes. Errors creep in too: wrong file saved to the wrong folder, duplicate entries, missed attachments, and inconsistent scoring because everyone evaluates differently when they’re rushed.

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

  • Each resume creates a mini checklist of downloads, naming, saving, and note-taking that quietly eats about 10 minutes per candidate.
  • PDFs, DOCX, and TXT formats force you into extra steps, and those steps are where people miss details.
  • When feedback isn’t standardized, “good candidate” means something different depending on who reviewed the file.
  • Spreadsheets fall behind, so hiring decisions get made from memory instead of a reliable, current view.

The Solution: Gmail-to-Sheets AI resume screening you can trust

This workflow watches your Gmail inbox for resume emails and grabs the attachment as soon as it arrives. It stores the file in Google Drive so you have clean organization (and a consistent place to find originals later). Then it routes the file based on type: PDFs get text extracted, DOCX files get converted and fetched as readable text, and TXT resumes are read directly. Once the resume text is normalized, the workflow adds your role requirements and passes both into a GPT-4o powered screening agent. The AI produces structured scoring and written justification, extracts candidate details like contact info and key qualifications, and finally appends a neat row into Google Sheets for your team to review.

The workflow starts with a Gmail trigger. From there, Google Drive handles storage and file conversion support, while GPT-4o does the screening and consistent scoring. Google Sheets becomes the single, shared dashboard where candidates land with the same format every time.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you receive 25 resumes a week for one open role. Manually, if each one takes about 10 minutes to download, convert (sometimes), skim, and log into a spreadsheet, that’s roughly 4 hours. With this workflow, the “human time” becomes closer to 1 minute per candidate to review the scored row and decide next steps. The processing runs in the background, so you get most of those hours back without losing structure.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Gmail to trigger on incoming resume emails
  • Google Drive for storing and accessing resume files
  • Google Sheets to log candidate scores and notes
  • OpenAI API key (get it from your OpenAI dashboard)

Skill level: Beginner. You will connect accounts, paste an API key, and edit the job description text.

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

How It Works

Email trigger from Gmail. When a new resume email arrives (with an attachment), n8n picks it up automatically, so nobody has to “check the inbox” as a process.

File storage and format routing. The attachment is stored in Google Drive, then routed based on file type. PDFs get parsed for text, DOCX files go through conversion and text fetching, and TXT resumes are read directly.

Resume normalization and role context. The workflow cleans the extracted text into a consistent input and merges it with the role requirements you define (the “Define Role Details” part is where your job description lives).

AI screening and structured logging. GPT-4o evaluates the candidate, produces a structured score with reasoning, extracts key candidate details, then appends everything as a new row in Google Sheets for easy sorting and review.

You can easily modify the scoring criteria to match different roles, then map the outputs to new Google Sheets columns 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 email trigger to capture incoming resumes and download attachments for processing.

  1. Add the Incoming Email Trigger node and set Simple to false.
  2. In Options, enable Download Attachments to collect resume files.
  3. Set Poll Times to everyMinute.
  4. Credential Required: Connect your gmailOAuth2 credentials.

⚠️ Common Pitfall: If attachments aren’t downloaded, downstream nodes like Store in Drive won’t receive the file data.

Step 2: Connect Google Drive and Route by File Type

Store the resume file in Drive and route it based on the MIME type to the right parser path.

  1. Configure Store in Drive with Name set to ={{ $json.subject.replace(/[^a-zA-Z0-9]/g, '_') }}_resume_{{ $now.format('yyyy-MM-dd_HH-mm') }} and Input Data Field Name set to attachment_0.
  2. Credential Required: Connect your googleDriveOAuth2Api credentials to Store in Drive.
  3. In File Type Router, add rules for PDF, DOCX, and TXT using Left Value ={{ $json.mimeType }} with right values of application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document, and text/plain.
  4. Connect File Type Router outputs to Download Doc PDF, Convert DOCX File, and Grab TXT File respectively.
  5. Credential Required: Connect your googleDriveOAuth2Api credentials to Download Doc PDF, Convert DOCX File, and Grab TXT File.

Tip: File Type Router uses strict MIME checks. Ensure attachments are not zipped or forwarded in a way that changes the MIME type.

Step 3: Extract and Normalize Resume Content

Parse the file content (PDF, DOCX, or TXT) and normalize it into a standard resume field.

  1. In Download Doc PDF, keep Operation as download and ensure the file ID uses ={{ $json.id }} with Google file conversion to application/pdf.
  2. Configure Parse PDF Content with Operation set to pdf and Max Pages set to 10.
  3. In Convert DOCX File, set URL to =https://www.googleapis.com/drive/v2/files/{{ $json.id }}/copy and JSON Body to { "title": "{{ $json.name }}_converted", "mimeType": "application/vnd.google-apps.document" }.
  4. In Fetch Doc Text, keep Operation as download and convert Google Docs to text/plain.
  5. In Read TXT Content, set Operation to text and Destination Key to resumeText.
  6. Configure Normalize Resume Fields with these assignments: candidateResume = ={{ $json.text || $json.data || $json.resumeText }}, originalEmail = ={{ $('Incoming Email Trigger').item.json }}, and driveLink = ={{ $('Store in Drive').item.json.webViewLink }}.

⚠️ Common Pitfall: If Normalize Resume Fields receives no text, check that the correct branch is connected from File Type Router and that the file conversion in Fetch Doc Text is set to text/plain.

Step 4: Set Up AI Screening and Candidate Extraction

Define role details, run the AI screening review, and extract candidate attributes.

  1. In Define Role Details, set jobDescription to the provided multi-line role description.
  2. Configure AI Screening Review with Text set to =**CANDIDATE RESUME:** {{ $('Parse PDF Content').item.json.text }} **JOB DESCRIPTION:** {{ $json.jobDescription }} and keep Has Output Parser enabled.
  3. Connect OpenAI Chat Model as the language model for AI Screening Review and Extract Candidate Details.
  4. Credential Required: Connect your openAiApi credentials to OpenAI Chat Model. The Structured Result Parser is a sub-node—credentials are added on OpenAI Chat Model, not the parser.
  5. In Structured Result Parser, keep Schema Type as manual and use the provided JSON schema in Input Schema.
  6. Set Extract Candidate Details Text to ={{ $('Normalize Resume Fields').item.json.candidateResume }} and keep the listed attributes (full_name, email_address, phone_number, current_title, years_experience, key_skills).

Tip: Update the OpenAI Chat Model settings (gpt-4o-mini, maxTokens: 2000, temperature: 0.3) only if you need different output length or creativity.

Step 5: Configure Output to Google Sheets

Append structured screening results and candidate details into your tracking sheet.

  1. In Append Sheet Record, set Operation to append, select your Document ID, and choose Sheet Name Sheet1.
  2. Map columns to values, such as Date = ={{ $('Store in Drive').item.json.createdTime }}, Email = ={{ $json.output.email_address }}, Strengths = ={{ $('AI Screening Review').item.json.output.candidate_strengths.join("\n\n") }}, and Overall Fit = ={{ $('AI Screening Review').item.json.output.overall_score }}.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials.

⚠️ Common Pitfall: Ensure your Google Sheet headers match the column names in Append Sheet Record (e.g., Overall Fit, Risk Factor, Reward Factor).

Step 6: Test and Activate Your Workflow

Verify the workflow end-to-end, then activate it for production use.

  1. Manually send an email with a resume attachment to the account monitored by Incoming Email Trigger.
  2. Run the workflow and confirm that Store in Drive creates a file, and File Type Router sends it to the correct branch.
  3. Verify that Normalize Resume Fields contains candidateResume and that AI Screening Review produces structured output parsed by Structured Result Parser.
  4. Check Append Sheet Record to confirm a new row is appended with strengths, weaknesses, and overall score.
  5. Once verified, switch the workflow to Active to process resumes automatically.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Gmail and Google Drive permissions can be picky. If the workflow suddenly stops seeing attachments, check the OAuth connection inside n8n’s Credentials and confirm the Gmail scope still has access.
  • If you’re converting DOCX files via HTTP Request, response speed can vary depending on the service and file size. When downstream nodes fail or return blank text, extend waits or add a retry so the next nodes don’t run on empty content.
  • The default AI prompt will feel generic fast. Bake in your job requirements and your “deal-breakers” early, otherwise you will end up re-reading and re-scoring candidates manually anyway.

Frequently Asked Questions

How long does it take to set up this Gmail Sheets resumes automation?

About 20 minutes if your accounts are ready.

Do I need coding skills to automate Gmail Sheets resumes screening?

No. You’ll connect your accounts and edit the job description and scoring prompt inside n8n.

Is n8n free to use for this Gmail Sheets resumes 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 (often a few cents per resume, depending on length).

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 Sheets resumes workflow for multiple job roles?

Yes, and it’s one of the best reasons to use n8n here. Update the role requirements in the “Define Role Details” step, then tailor the scoring rubric in the AI Screening Review prompt for each position. Many teams also adjust what gets extracted in “Extract Candidate Details” so different roles capture different fields (portfolio links, certifications, tools, or location). If you want separate spreadsheets per role, you can switch the Google Sheets destination or add simple routing based on the email label.

Why is my Gmail connection failing in this workflow?

Usually it’s expired OAuth credentials or changed permissions. Reconnect Gmail inside n8n Credentials, then confirm the trigger is watching the correct mailbox and label/filter. Also check if your Google Workspace admin restricted third-party access, which can break previously working setups.

How many resumes can this Gmail Sheets resumes automation handle?

On n8n Cloud, your limit depends on plan executions per month, and self-hosting depends on your server. Practically, most small teams can process dozens to a few hundred resumes a week as long as you stay within OpenAI rate limits and keep file conversion reliable.

Is this Gmail Sheets resumes automation better than using Zapier or Make?

Often, yes. n8n handles branching logic (PDF vs DOCX vs TXT), structured parsing, and richer AI chains in one place, which means fewer fragile “glue” steps. Self-hosting is also a big deal if your resume volume spikes, because you’re not paying per tiny task. Zapier or Make can be fine for simple “email to sheet” capture, but AI screening plus file handling tends to get messy fast. If you want, Talk to an automation expert and we’ll map the cleanest route for your setup.

Once this is running, your spreadsheet becomes the hiring inbox. You review candidates, not attachments, and you get your week back in the 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