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.
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.
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
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:
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:
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:
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
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:
For the first time, add a new node to append to the Google sheet
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
The Gmail node fetches the full message using the messageId and downloads any attached files, such as resumes.
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.
Message ID:
{{ $('Gmail Trigger').item.json.id }}
This ensures the node fetches the full email and downloads any attached resumes for further processing.
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
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:
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
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.
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.
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:
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’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.
With n8n and the power of AI, resume management can go from chaos to clarity in just a few nodes. Automate smart, hire faster!