AutomationFlowsAI & RAG › Automated Resume Screening & Response System with Gemini Ai, Gmail and Sheets

Automated Resume Screening & Response System with Gemini Ai, Gmail and Sheets

ByRakin Jakaria @rakinjakaria on n8n.io

Use cases are many: Automate resume screening, candidate scoring, and interview communication in one seamless pipeline. Perfect for HR teams hiring at scale, startups that need quick filtering of applicants, or enterprises like Samsung running multiple roles at once.

Event trigger★★★★☆ complexityAI-powered9 nodesForm TriggerAgentInformation ExtractorGmailGoogle SheetsGoogle Gemini Chat
AI & RAG Trigger: Event Nodes: 9 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7903 — we link there as the canonical source.

This workflow follows the Agent → Form Trigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "qayGRtfzMMxmzYDz",
  "name": "AI Hiring Agent",
  "tags": [],
  "nodes": [
    {
      "id": "51badbe5-a196-4d58-a80c-ea193988c0ac",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -320,
        272
      ],
      "parameters": {
        "options": {},
        "formTitle": "Apply For Executive Assistant at SAMSUNG",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name",
              "placeholder": "Full Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Email Address",
              "placeholder": "user@example.com",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Job",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Executive Assistant"
                  },
                  {
                    "option": "IT Specialist"
                  },
                  {
                    "option": "Manager"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "file",
              "fieldLabel": "Resume",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            }
          ]
        },
        "formDescription": "Give your Info carefully"
      },
      "typeVersion": 2.2
    },
    {
      "id": "739b76a2-8e21-4bff-bf1a-92498e4327fd",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -128,
        272
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "Resume"
      },
      "typeVersion": 1
    },
    {
      "id": "87526f30-5696-4961-a9b3-63e563d684af",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        64,
        272
      ],
      "parameters": {
        "text": "=Name: {{ $('On form submission').item.json.Name }}\nJob Name: {{ $('On form submission').item.json.Job }}\nResume: {{ $json.text }}",
        "options": {
          "systemMessage": "=You are a hiring agent for SAMSUNG. You will evaluate a candidate based on three inputs: the person's name, their job title, and their resume.\n\nYour task:\n1. Rate the resume out of 10 in terms of how suitable it is for the job title.\n2. Give a status: \"Accepted\" if score >= 7, else \"Rejected\".\n3. Generate an email:\n   - If \"Accepted\", write a short congratulatory email with the subject \"Congratulations on Joining Samsung!\" and mention the start date as 1st October 2026.\n   - If \"Rejected\", write a polite rejection email with the subject \"Regarding Your Application at Samsung\" in a soft and respectful tone.\n\nExample Output:\n\nScore: 8\nStatus: Accepted\nEmail: \n    Subject: Congratulations on Joining Samsung!\n    Body:\nDear Rakin Jakaria,\nWe are pleased to inform you that you have been selected for the position of Video Editor at Samsung. Your start date will be 1st October 2026.\nWelcome to the team!\n\nBest regards,\nSamsung HR Team"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "63100817-7331-4dd7-a6c6-9151563ec47c",
      "name": "Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        400,
        272
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "Score",
              "type": "number",
              "required": true,
              "description": "the score"
            },
            {
              "name": "Status",
              "required": true,
              "description": "Accepted or Rejected"
            },
            {
              "name": "Mail Subject",
              "required": true,
              "description": "only the subject of the mail"
            },
            {
              "name": "Mail Body",
              "description": "the body of the mail without the subject"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "821f75ad-48ce-44cc-989a-5da5fcf2cc20",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        736,
        272
      ],
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json['Email Address'] }}",
        "message": "={{ $json.output['Mail Body'] }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.output['Mail Subject'] }}",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "430d1158-c0ca-4761-ac4f-37bc75e709e0",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        944,
        272
      ],
      "parameters": {
        "columns": {
          "value": {
            "Job": "={{ $('On form submission').item.json.Job }}",
            "Name": "={{ $('On form submission').item.json.Name }}",
            "Email": "={{ $('On form submission').item.json['Email Address'] }}",
            "Score": "={{ $('Information Extractor').item.json.output.Score }}",
            "Status": "={{ $('Information Extractor').item.json.output.Status }}",
            "Email Status": "SENT \u2705"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 78682884,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YBesKlPbUuWihzOjWx3wdtNZdo1VFKt6zyM6O4A8yWc/edit#gid=78682884",
          "cachedResultName": "Form responses 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1YBesKlPbUuWihzOjWx3wdtNZdo1VFKt6zyM6O4A8yWc",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YBesKlPbUuWihzOjWx3wdtNZdo1VFKt6zyM6O4A8yWc/edit?usp=drivesdk",
          "cachedResultName": "Candidate Details"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "dce89416-127c-4a93-9b08-8902cd4ccbb4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        -160
      ],
      "parameters": {
        "width": 400,
        "height": 384,
        "content": "## Start here: Step-by Step Youtube Tutorial :star:\n[![I Built an Auto Lead Finder AI Agent](https://img.youtube.com/vi/5bXPl3ud-VA/sddefault.jpg)](https://youtu.be/5bXPl3ud-VA)"
      },
      "typeVersion": 1
    },
    {
      "id": "4261dce8-1819-4b11-8651-f660cf621389",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        256
      ],
      "parameters": {
        "width": 656,
        "height": 688,
        "content": "\n---\n\n# \ud83d\udee0 Setup Guide\n\nFollow these steps to get started:\n\n1. **Set up the Hiring Form**\n   Customize the form fields (Name, Email Address, Job Role, Resume) in the **Form Trigger** node. This is how candidates will submit their applications.\n\n2. **Configure the Resume Extractor**\n   The **Extract from File** node is already set to process PDFs. Ensure applicants only upload `.pdf` resumes.\n\n3. **Add your [Google Gemini](https://aistudio.google.com/apikey) credentials**\n   Gemini powers the AI evaluation in the **AI Agent** node, scoring resumes, assigning Accepted/Rejected status, and generating emails.\n\n4. **Connect your [Gmail](https://mail.google.com/) account**\n   In the **Gmail** node, authorize your Gmail account via OAuth2 so the workflow can send acceptance/rejection emails to candidates automatically.\n\n5. **Connect your [Google Sheets](https://docs.google.com/spreadsheets/)**\n   Link the sheet in the **Google Sheets** node. Ensure your sheet has columns for Name, Job, Score, Status, Email, and Email Status to track all applications.\n\n6. **Customize Email Templates**\n   Edit the AI system message in the **AI Agent** node to refine acceptance and rejection email wording (e.g., change start date, tone, or branding).\n\nOnce all connections are set, your workflow will **collect applications, evaluate resumes, email candidates, and log results automatically** \ud83d\ude80\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "d0964d28-b384-4589-b375-a7d6ceba7787",
      "name": "Google 2.5 Flash",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        240,
        544
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "81acf62e-3d61-46b4-bc9d-1b1d29a3063e",
  "connections": {
    "Gmail": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google 2.5 Flash": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Use cases are many: Automate resume screening, candidate scoring, and interview communication in one seamless pipeline. Perfect for HR teams hiring at scale, startups that need quick filtering of applicants, or enterprises like Samsung running multiple roles at once.

Source: https://n8n.io/workflows/7903/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow converts a YouTube video into a polished, email-ready newsletter. It scrapes the transcript, extracts a thumbnail/logo and brand color theme, uses multiple AI agents to (1) clean & s

Output Parser Structured, Agent, Gmail +5
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

This workflow automates the complete process of generating and sending AI-powered newsletters. It starts with a form submission where the user provides a brand name, website, and topic query. The syst

Output Parser Structured, Agent, Google Sheets +5
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Output Parser Structured, HTTP Request, Form Trigger +6
AI & RAG

Loom_Outreach_Agent. Uses formTrigger, agent, lmChatGoogleGemini, googleSheets. Event-driven trigger; 24 nodes.

Form Trigger, Agent, Google Gemini Chat +4