n8n Workflow Automation for Parse Resumes from Gmail to Google Sheets
June 10, 2025 No Comments

Table of Contents

In the world of recruitment, managing a high volume of job applications and resumes can quickly become overwhelming. That’s where automation tools like n8n come to the rescue. In this blog post, we’ll walk you through a powerful no-code/low-code automation we built to streamline the resume handling process using Gmail, the Docsaar resume parser, Google Sheets, and Slack or Telegram.

What This Workflow Does

This automation keeps an eye on your Gmail inbox, looking out for emails that might contain resumes or job applications. It analyzes the subject and body of each email to determine if it’s relevant. When it finds one, the workflow automatically downloads the attached resume, sends it to the Docsaar resume parsing API, and neatly stores the extracted candidate details into Google Sheets and notifies on Slack or Telegram — saving you time and effort.

Tools and Services Used

  • n8n – Open-source workflow automation tool
  • Gmail Trigger – Monitors incoming emails
  • Google Gemini / ChatGPT LLM – Classifies if the email is job-related
  • Docsaar Resume Parsing API – Parses resume attachments
  • Google Sheets – Stores extracted resume data

Step-by-Step Breakdown

Step 1. Gmail Trigger: Detect New Emails

We start with the Gmail Trigger node, which checks your inbox every minute for new emails. When a new email arrives, its subject and snippet are passed to a large language model to determine whether it’s related to a resume or job application.

To set this up, head to your n8n dashboard, click “Create New Node”, search for “Gmail”, and select “Gmail Trigger” from the list. Configure it to poll your inbox every minute — this ensures the workflow can catch and process emails in real time.

				
					Node: Gmail Trigger
Poll: everyMinute
				
			

Step 2. Email Classification with LLM

A Google Gemini analyzes the email’s subject and content to decide if the message is job- or resume-related. It responds with a simple “YES” or “NO” based on a carefully designed prompt.

If the response is “NO,” the workflow ends right there — saving resources and keeping things efficient.

Your Model node should be configured like this:

To make this work, you’ll need to set up three nodes in this step:

1. Basic LLM Chain

This node passes the email content to the language model using a well-crafted prompt. It’s responsible for generating the “YES” or “NO” classification.

Your Basic LLM Chain node should be configured like this:

2. Google Gemini Chat Model 1

This is the actual large language model that processes the prompt sent from the LLM Chain. It analyzes the email content and returns a straightforward “YES” or “NO” based on the instructions provided.

Your Google Gemini Chat Model 1 node should be set up like this:

3. Structured Output Parser

This node takes the raw output from the language model and ensures it’s parsed cleanly into a structured format. In our case, it extracts the plain “YES” or “NO” response for easy downstream use.

Your Structured Output Parser node should look like this:

After that, we’ll add an IF node.

If the LLM responds with “YES” — indicating that the email is related to a resume — the workflow continues. If it responds with “NO,” we stop the execution right there to avoid unnecessary processing.

Your  IF node should look like this:

After this, we need to build a Google sheet

Step 3. Prepare Google Sheet

Before diving deeper, you’ll need to create a new Google Sheet that will act as your structured resume database. Set up the first row with the following columns:

				
					Email from	| Time |	PDF(Status/error) |	Name |	Phone	| Date of birth |	Address
				
			

This sheet will serve as your structured resume database.

Make sure:

  • You’ve authorized n8n to access your Google account.
  • You note the Google Sheet ID and sheet name (usually Sheet1 by default).

For the first time, add a new node to append to the Google sheet

Step 4. Storing Initial Metadata in Google Sheets

If the email is job-related, we log the sender’s email and message timestamp in Google Sheets as a record of processed entries.

				
					Node: Google Sheets4
Data: Email from, Time
				
			

Step 5. Fetching and Downloading Attachments

The Gmail node fetches the full message using the messageId and downloads any attached files, such as resumes.

Step 6. Add Gmail “Get Message” Node

To retrieve the full content and attachments from an email, add the Gmail → Get Message node to your workflow. This node will fetch the complete email based on the message ID triggered earlier.

🛠️ Configure the node as follows:
  • Operation: Get

Message ID:

				
					{{ $('Gmail Trigger').item.json.id }}
				
			
  • Simple: False
  • Options → Download Attachments: ✅ True

This ensures the node fetches the full email and downloads any attached resumes for further processing.

Step 7. Parsing the Resume

To extract structured data from the resume, we’ll use the Docsaar Resume Parser API. Visit the site and generate your API key — we’ll need it to authenticate our request in the workflow.

The downloaded resume is sent to the Docsaar API using an HTTP Request node. This node should be configured to send multipart-form data, which allows the resume file to be uploaded properly for parsing.

				
					Node: HTTP Request1
URL: https://www.docsaar.com/api/chatgpt_resume_parsing
Header: Authorization Token
Body: chatgpt_resume = attachment_0
				
			

Step 8. Validating the Response

An If node checks if the API response is successful (i.e., no error present). If it fails, an error log is added to Google Sheets.

If successful, we extract details like:

  • Name
  • Phone
  • Address

Step 9. Storing Parsed Data in Google Sheets

We will use

				
					Node: Google Sheets4(Append or Update Row)
Data: Email from, Time
				
			

Depending on success or failure:

✅ Success → Candidate info is appended to Google Sheets (Sheet1)

❌ Fail → Log entry in a separate sheet with status = “Fail” and error message

				
					Nodes: Google Sheets2, Google Sheets3
Columns: Email, Time, Name, Phone, Address, Status
				
			

Step 10. Sending a Message to Slack

If the resume parsing is successful, we’ll notify the team by sending a message to Slack.

To do this:

1. Create a channel in your Slack workspace named #resume (or any name you prefer).

2. In your n8n workflow, add a Slack node.

3. Configure the node to send a message to the #resume channel — for example, include the candidate’s name and a short note that a new resume has been processed.

This keeps your team in the loop in real time whenever a new resume is successfully handled.

Final Output

The full workflow will look like below:

All parsed resume data is neatly stored in a Google Sheet(Looks like below screenshot), creating a searchable and filterable candidate database — ideal for recruiters, HR professionals, and automated hiring systems.

Why This Matters

This workflow removes the need for manual email review, resume downloads, and data entry. It leverages AI to classify and parse resumes while integrating seamlessly into common tools like Gmail and Google Sheets.

Benefits:

  • Saves hours of manual work
  • Increases accuracy and consistency
  • Scales easily for high email volumes

Want to Build This?

You can create this workflow using n8n’s visual builder by:

1. Setting up Gmail OAuth2 credentials.

2. Adding LangChain nodes for classification.

3. Integrating Docsaar or your preferred resume parsing API.

4. Linking to your Google Sheets.

Or you can download the Resume parser n8n workflow file.

We Offer Scalable Automation Flow

We’ve designed this workflow to be scalable and capable of handling multiple resumes in a single email. The workflow is optimized to loop through and process each resume attachment in a single email.

Additionally, we’ve integrated the ability to send messages to platforms like Slack, Telegram, WhatsApp, or other messaging services, notifying you as soon as new data is added to Google Sheets.

Need help setting it up? Just drop a comment or reach out.

Final Thoughts

With n8n and the power of AI, resume management can go from chaos to clarity in just a few nodes. Automate smart, hire faster!

Write a comment

Your email address will not be published. Required fields are marked *

Thanks!