AutomationFlowsAI & RAG › AI Resume Job Title Extractor with Google Gemini

AI Resume Job Title Extractor with Google Gemini

ByNavneet Singh Arora @navneet-singh-arora on n8n.io

AI Resume Job Title Extractor with Google Gemini

Event trigger★★★★☆ complexityAI-powered10 nodesRead Write FileExecute Workflow TriggerGoogle Gemini
AI & RAG Trigger: Event Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

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

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": "resume-analyser-workflow",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Resume-Job-Title-Extractor-with-Google-Gemini",
  "tags": [],
  "nodes": [
    {
      "id": "sticky-overview",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        -992
      ],
      "parameters": {
        "color": "#FEC942",
        "width": 372,
        "height": 812,
        "content": "## AI Resume Job Title Extractor\n\nAnalyses a PDF resume using Google Gemini and extracts the candidate's current job title. Designed to run as a sub-workflow called by the Job Search automation.\n\n### How it works\n1. Triggered by a parent workflow via the Execute Workflow trigger\n2. Reads the candidate's PDF resume from the local filesystem\n3. Extracts raw text from the PDF\n4. Sends the text to Gemini with a prompt to identify the current job title\n5. Returns the extracted job title and Gemini response parts to the calling workflow\n\n### Setup\n1. **Resume File**: Update the file path in the 'Read/Write Files from Disk' node to point to your resume PDF\n2. **Google Gemini**: Connect your Google Gemini (PaLM) API credentials in the 'Message a model' node\n3. **Model**: Uses Gemma-4-31B by default \u2014 swap in any Gemini model you prefer\n\n### Customisation\n- Adjust the prompt in 'Message a model' to extract different info (skills, years of experience, etc.)\n- Edit 'Return' to pass additional fields back to the parent workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-section-1",
      "name": "Setup & PDF Extraction",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -880
      ],
      "parameters": {
        "color": "#AEADAD",
        "width": 656,
        "height": 552,
        "content": "## Setup & PDF Extraction\nTrigger the workflow from a parent automation, read the resume PDF from disk, and extract its raw text for processing."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-section-2",
      "name": "AI Analysis & Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -880
      ],
      "parameters": {
        "color": "#AEADAD",
        "width": 556,
        "height": 556,
        "content": "## AI Analysis & Output\nSend the extracted resume text to Google Gemini to identify the current job title, then return the result to the calling workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "c337df28-cd6e-4411-ad84-12b33356c957",
      "name": "Read/Write Files from Disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        -288,
        -704
      ],
      "parameters": {
        "options": {},
        "fileSelector": "/home/node/.n8n-files/Navneet-Resume.pdf"
      },
      "typeVersion": 1.1
    },
    {
      "id": "7208b89a-301d-4bac-b73c-9a6e9f02977b",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -64,
        -704
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1.1
    },
    {
      "id": "5a32f956-b316-4a28-b50f-c25ec8f328f4",
      "name": "Return",
      "type": "n8n-nodes-base.set",
      "position": [
        496,
        -704
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "338084ba-f9f9-4f26-85d2-7b37d7853aa8",
              "name": "text",
              "type": "string",
              "value": "={{ $('Extract from File').item.json.text }}"
            },
            {
              "id": "c3571360-cfaa-4bd1-ad17-f25106799a3b",
              "name": "content_parts",
              "type": "string",
              "value": "={{ $json.content.parts }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2261e908-c791-46e0-ab38-a042ee2f9a1b",
      "name": "Start",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -512,
        -768
      ],
      "parameters": {
        "inputSource": "passthrough"
      },
      "typeVersion": 1.1
    },
    {
      "id": "e3bcb3c5-816d-41ad-bb53-2d07e13ddbe1",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        208,
        -704
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemma-4-31b-it",
          "cachedResultName": "models/gemma-4-31b-it"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Analyse the resume text: {{ $json.text }}.\n\nIdentify the current job title.\nOutput ONLY a single search string."
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "c77e2a21-9104-495c-bff5-7b4946cea1fe",
      "name": "Setup & PDF Extraction1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -736
      ],
      "parameters": {
        "color": "#C96464",
        "width": 192,
        "height": 360,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate the path for the Resume:\n1. Open this node.\n2. Update the path under File(s) Selector"
      },
      "typeVersion": 1
    },
    {
      "id": "9409fbf9-0c7a-4f11-b1e7-6123c6b497e0",
      "name": "Setup & PDF Extraction2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -736
      ],
      "parameters": {
        "color": "#C96464",
        "width": 288,
        "height": 376,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your Google Credentials:\n1. In Google AI Studio, create your API Key.\n2. Open this node and under Credentials, click on Create New Credentials and update the Host and the API Key"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "shared": [
    {
      "role": "workflow:owner",
      "project": {
        "id": "gWkPS3Yo6L03U87I",
        "icon": null,
        "name": "Navneet Singh Arora <navneetsingh790@gmail.com>",
        "type": "personal",
        "createdAt": "2026-04-10T15:01:49.389Z",
        "creatorId": "fd932e6f-0271-41b5-9363-6f2454ac13dc",
        "updatedAt": "2026-04-10T15:07:46.566Z",
        "description": null
      },
      "createdAt": "2026-04-10T15:14:31.924Z",
      "projectId": "gWkPS3Yo6L03U87I",
      "updatedAt": "2026-04-10T15:14:31.924Z",
      "workflowId": "resume-analyser-workflow"
    }
  ],
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "createdAt": "2026-04-10T15:14:31.924Z",
  "updatedAt": "2026-04-15T22:00:28.793Z",
  "versionId": "b377fe59-bd35-4ee9-b1ec-c83bd14a973a",
  "isArchived": false,
  "staticData": null,
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Read/Write Files from Disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Return",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read/Write Files from Disk": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "description": null,
  "triggerCount": 0,
  "versionCounter": 134,
  "activeVersionId": null,
  "versionMetadata": {
    "name": null,
    "description": null
  }
}

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

AI Resume Job Title Extractor with Google Gemini

Source: https://n8n.io/workflows/14983/ — 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 workflow transforms hours of manual video editing into an automated AI-powered pipeline. Perfect for anyone looking to repurpose long-form content into viral short-form clips.

Form Trigger, Execute Workflow Trigger, Gmail +3
AI & RAG

TEST_Child. Uses executeWorkflowTrigger, openAi, readWriteFile, agent. Event-driven trigger; 15 nodes.

Execute Workflow Trigger, OpenAI, Read Write File +4
AI & RAG

&gt; AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration.

Telegram, Google Gemini, Google Gemini Chat +7
AI & RAG

This workflow helps to automatically discover undocumented API endpoints by analysing JavaScript files from the website's HTML code.

Output Parser Autofixing, HTTP Request, Read Write File +5
AI & RAG

🤖🧑‍💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.

HTTP Request, OpenAI Chat, Execute Workflow Trigger +8