AutomationFlowsAI & RAG › AI Resume Analysis System

AI Resume Analysis System

AI Resume Analysis System. Uses gmailTrigger, googleDrive, httpRequest, lmChatOpenAi. Event-driven trigger; 29 nodes.

Event trigger★★★★☆ complexityAI-powered29 nodesGmail TriggerGoogle DriveHTTP RequestOpenAI ChatAgentInformation ExtractorGoogle SheetsOutput Parser Structured
AI & RAG Trigger: Event Nodes: 29 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Gmail 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
{
  "name": "AI Resume Analysis System",
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "simple": false,
        "filters": {},
        "options": {
          "downloadAttachments": true
        }
      },
      "type": "n8n-nodes-base.gmailTrigger",
      "typeVersion": 1.2,
      "position": [
        780,
        220
      ],
      "id": "953ccdf9-08a3-4fbf-9e71-becca68ce4c9",
      "name": "Receive Resume",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.mimeType }}",
                    "rightValue": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "169a0bf3-73b7-4e07-9080-92fd7fc4e1e0"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Word Doc"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "dbb700a9-4c6a-4e60-8615-0a48d0556eba",
                    "leftValue": "={{ $json.mimeType }}",
                    "rightValue": "application/pdf",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "PDF"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "d0f51929-55da-414e-8b00-fa40da22d86e",
                    "leftValue": "={{ $json.mimeType }}",
                    "rightValue": "text/plain",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Text"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        1220,
        220
      ],
      "id": "02d470a9-4c9c-4c20-87fa-62ef1d508086",
      "name": "File Type"
    },
    {
      "parameters": {
        "operation": "pdf",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1840,
        -20
      ],
      "id": "edb1e394-8b6e-4b00-8d38-d542712daab3",
      "name": "Extract from File"
    },
    {
      "parameters": {
        "inputDataFieldName": "attachment_0",
        "name": "={{ $json.subject }} Resume",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "value": "1i13SULcHQgsUZXu7vX53x5R83u_3bveh",
          "mode": "list",
          "cachedResultName": "Resumes",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1i13SULcHQgsUZXu7vX53x5R83u_3bveh"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        960,
        220
      ],
      "id": "6f3fad7f-13b3-469b-a5cb-348fb09cc6ef",
      "name": "Upload to Drive",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://www.googleapis.com/drive/v2/files/{{ $json.id }}/copy?convert=true&supportsAllDrives=true",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleDriveOAuth2Api",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1520,
        -20
      ],
      "id": "00a34aff-95ea-4110-822d-e15619fa0a1f",
      "name": "Convert Word to Docs",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.id }}",
          "mode": "id"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "application/pdf"
            }
          }
        }
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1680,
        -20
      ],
      "id": "01634835-6b26-4a9e-94cd-e06ffdfa79ce",
      "name": "Get Doc",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "0f9e36f9-60cb-4593-a586-723124d69ff8",
              "name": "resume",
              "value": "={{ $json.text }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        2140,
        -20
      ],
      "id": "13e9c38b-f8d3-47ba-a801-9c62811a4249",
      "name": "Set Resume"
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "https://docs.google.com/document/d/1--tu0fPRFxuow9d2tVWS5AP6y8wPN-6LwHGCWzKdcdo/edit?usp=sharing",
          "mode": "url"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "application/pdf"
            }
          }
        }
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        2400,
        -20
      ],
      "id": "fb12a1f4-1510-4dbf-a730-96fe0f33c11c",
      "name": "Get Job Description",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "pdf",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        2560,
        -20
      ],
      "id": "5f1d6262-738c-4da1-b261-6c46df4bce6e",
      "name": "Extract from File1"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "o4-mini",
          "mode": "list",
          "cachedResultName": "o4-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        2160,
        480
      ],
      "id": "11dd06a4-722b-40ae-921c-cc1fb77549e5",
      "name": "o4-mini",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "pdf",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1680,
        220
      ],
      "id": "3d24ba90-2429-4a5c-b199-f0c6ac86049c",
      "name": "Extract from File2"
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.id }}",
          "mode": "id"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1520,
        220
      ],
      "id": "fef5b55a-0fc6-4a32-a211-d91385f91ba2",
      "name": "Get PDF",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.id }}",
          "mode": "id"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1520,
        460
      ],
      "id": "12c20555-68fd-4386-abd4-35d0f35e07f3",
      "name": "Get TXT",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "text",
        "destinationKey": "text",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1680,
        460
      ],
      "id": "bdaffc8d-604f-4d0e-8b49-403bafd82e56",
      "name": "Extract from File3"
    },
    {
      "parameters": {
        "content": "## Resume Collection",
        "height": 220,
        "width": 420,
        "color": 2
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        720,
        160
      ],
      "id": "bc32d32f-7e03-4d31-a59d-8d8ce5fc9f08",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## File Type",
        "height": 220,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1160,
        160
      ],
      "id": "e14c6ce4-7e1d-49c0-9353-c7414e3066b2",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## Word Doc",
        "height": 220,
        "width": 640,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1420,
        -80
      ],
      "id": "a9894d80-8df5-4591-84cd-e55bf7fd2d71",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## PDF",
        "height": 220,
        "width": 440,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1420,
        160
      ],
      "id": "648ca061-7496-409a-902f-230014131ffa",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## Text File",
        "height": 220,
        "width": 440,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1420,
        400
      ],
      "id": "d94ce0eb-4279-4a78-b8bd-5f5cbedcfd4e",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "## Standardize Input\n",
        "height": 220,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2080,
        -80
      ],
      "id": "6c4f579c-f403-4d2a-9bcd-975b46699795",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "content": "## Get Job Description",
        "height": 220,
        "width": 420
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2340,
        -80
      ],
      "id": "8bcccad5-5337-477b-836b-2afda8507e99",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "content": "## Analysis & Information Extract",
        "height": 220,
        "width": 880,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1880,
        160
      ],
      "id": "15279a7d-f11e-4dc5-adbf-3d4426e01ece",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "content": "## Model & Parser",
        "height": 220,
        "width": 420,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1880,
        400
      ],
      "id": "badd3d00-08d1-4d15-89f6-3117362c357e",
      "name": "Sticky Note8"
    },
    {
      "parameters": {
        "content": "# \ud83d\udee0\ufe0f Setup Guide\nFollow the steps below to get this workflow up and running:\n\n### \u2705 Step 1: Choose Your Trigger  \nDetermine what will kick off this workflow. In this example, we\u2019re using **Gmail** as the trigger node.\n\n### \u2705 Step 2: Connect Google Drive Credentials  \nMake sure your Google credentials are connected for both:\n- The **Google Drive nodes**\n- The **HTTP Request node** (used to convert a Word doc to a Google Doc)\n\n### \u2705 Step 3: Add a Chat Model  \nConnect your favorite AI provider (like OpenAI or Anthropic) to power the **AI nodes** in this workflow.\n\n### \u2705 Step 4: Pull In Your Job Description  \nMake sure the job description you want to analyze is accessible and properly pulled into the workflow (from Drive, HTTP, or direct text).\n\n### \u2705 Step 5: Copy the [Google Sheet Template](https://docs.google.com/spreadsheets/d/1j6xAwY3lI8jDAz3EP0mboSmpz0d9ycD7y_DY2y6KJYM/edit?usp=sharing)  \nMake a copy of the sheet in your own Google Drive. This is where the workflow will write the parsed data back.\n\n### \ud83d\udca1 Final Step: Test It Out  \nTrigger the workflow with a test email and ensure the data flows correctly from source to sheet.\n",
        "height": 700,
        "width": 700
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -20,
        -80
      ],
      "id": "50099fb2-ff58-4bc4-bf5e-5a12fe29fbb1",
      "name": "Sticky Note9"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Candidate's Resume:\n{{ $('Set Resume').item.json.resume }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=# Overview\n\nYou are an expert technical recruiter specializing in AI, automation, and software roles. You have been given a job description and a candidate resume. Your task is to analyze the resume in relation to the job description and provide a detailed screening report.\n\nFocus specifically on how well the candidate matches the core requirements and ideal profile outlined in the job description. Evaluate both technical skill alignment and business-context understanding. Use reasoning grounded in the actual content of the resume and job post - avoid making assumptions.\n\n## Output\n\nYour output should follow this exact format:\n\nCandidate Strengths:\n\nList the top strengths or relevant qualifications the candidate brings to the table. Be specific.\n\nCandidate Weaknesses:\n\nList areas where the candidate is lacking or mismatched based on the job description.\n\nRisk Factor:\n\n- Assign a risk score (Low / Medium / High)\n\n- Explain the worst-case scenario if this candidate is hired.\n\nReward Factor:\n\n- Assign a reward score (Low / Medium / High)\n\n-Describe the best-case scenario could this candidate unlock? - what value\n\n-Does the candidate appear to be a short-term or long-term fit?\n\nOverall Fit Rating (0-10):\n\nAssign a number between 0 (terrible match) and 10 (perfect match). Do not give decimals.\n\nJustification for Rating:\n\nExplain clearly why this candidate received that score. Reference specific resume content and how it aligns or doesn't with the job description.\n\n## Job Description\n\n{{ $json.text }}\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [
        1920,
        220
      ],
      "id": "bfa3f4b9-4034-42f0-9e1f-61dd672c55e2",
      "name": "Recruiter Agent"
    },
    {
      "parameters": {
        "text": "={{ $('Set Resume').item.json.resume }}",
        "attributes": {
          "attributes": [
            {
              "name": "first name",
              "description": "the first name of the candidate",
              "required": true
            },
            {
              "name": "last name",
              "description": "the last name of the candidate",
              "required": true
            },
            {
              "name": "email",
              "description": "the email address of the candidate",
              "required": true
            }
          ]
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "typeVersion": 1,
      "position": [
        2240,
        220
      ],
      "id": "9a1d03b9-d9d6-4357-bbba-2af3848bd0f5",
      "name": "Information Extractor"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1nT446qfSueLqL-BtCSTmtqY2X91CNS0Cq5G-n7tv9Qk",
          "mode": "list",
          "cachedResultName": "N8N Agents Database",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nT446qfSueLqL-BtCSTmtqY2X91CNS0Cq5G-n7tv9Qk/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Record of Resume Screener",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nT446qfSueLqL-BtCSTmtqY2X91CNS0Cq5G-n7tv9Qk/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $now\n   .setZone('Asia/Kolkata')\n   .toFormat('yyyy-MM-dd hh:mm a')\n}}\n",
            "Resume": "={{ $('Upload to Drive').item.json.webViewLink }}",
            "First Name": "={{ $json.output['first name'] }}",
            "Last Name": "={{ $json.output['last name'] }}",
            "Email": "={{ $json.output.email }}",
            "Strengths": "={{ $('Recruiter Agent').item.json.output.candidate_strengths.join(\"\\n\\n\") }}",
            "Weaknesses": "={{ $('Recruiter Agent').item.json.output.candidate_weaknesses.join(\"\\n\\n\") }}",
            "Risk Factor": "={{ $('Recruiter Agent').item.json.output.risk_factor.score }}\n\n{{ $('Recruiter Agent').item.json.output.risk_factor.explanation }}",
            "Reward Factor": "={{ $('Recruiter Agent').item.json.output.reward_factor.score }}\n\n{{ $('Recruiter Agent').item.json.output.reward_factor.explanation }}",
            "Overall Fit": "={{ $('Recruiter Agent').item.json.output.overall_fit_rating }}",
            "Justification": "={{ $('Recruiter Agent').item.json.output.justification_for_rating }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Resume",
              "displayName": "Resume",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "displayName": "First Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "displayName": "Last Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "displayName": "Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Strengths",
              "displayName": "Strengths",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Weaknesses",
              "displayName": "Weaknesses",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Risk Factor",
              "displayName": "Risk Factor",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Reward Factor",
              "displayName": "Reward Factor",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Overall Fit",
              "displayName": "Overall Fit",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Justification",
              "displayName": "Justification",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        2560,
        220
      ],
      "id": "81d60dc4-a227-48da-b068-d93b46a8ef52",
      "name": "Google Sheets",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"name\": \"resume_screening_evaluation\",\n  \"description\": \"Analyzes a candidate\u2019s resume against a job description and outputs strengths, weaknesses, risk/reward assessment, and an overall fit score.\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"candidate_strengths\": {\n      \"type\": \"array\",\n      \"description\": \"A list of specific strengths or qualifications that match the job description.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"candidate_weaknesses\": {\n      \"type\": \"array\",\n      \"description\": \"A list of areas where the candidate falls short or lacks alignment with the job requirements.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"risk_factor\": {\n      \"type\": \"object\",\n      \"description\": \"An evaluation of the potential risks of hiring this candidate.\",\n      \"properties\": {\n        \"score\": {\n          \"type\": \"string\",\n          \"enum\": [\"Low\", \"Medium\", \"High\"],\n          \"description\": \"The risk level associated with hiring this candidate.\"\n        },\n        \"explanation\": {\n          \"type\": \"string\",\n          \"description\": \"A brief explanation of the worst\u2011case scenario if the candidate is hired.\"\n        }\n      },\n      \"required\": [\"score\", \"explanation\"]\n    },\n    \"reward_factor\": {\n      \"type\": \"object\",\n      \"description\": \"An evaluation of the potential upside of hiring this candidate.\",\n      \"properties\": {\n        \"score\": {\n          \"type\": \"string\",\n          \"enum\": [\"Low\", \"Medium\", \"High\"],\n          \"description\": \"The reward level associated with hiring this candidate.\"\n        },\n        \"explanation\": {\n          \"type\": \"string\",\n          \"description\": \"A description of the best\u2011case scenario and whether the candidate is a short\u2011term or long\u2011term fit.\"\n        }\n      },\n      \"required\": [\"score\", \"explanation\"]\n    },\n    \"overall_fit_rating\": {\n      \"type\": \"integer\",\n      \"description\": \"A rating from 0 to 10 indicating how well the candidate matches the job description.\",\n      \"minimum\": 0,\n      \"maximum\": 10\n    },\n    \"justification_for_rating\": {\n      \"type\": \"string\",\n      \"description\": \"A summary explaining why the candidate received this fit rating, referencing alignment between the resume and the job description.\"\n    }\n  },\n  \"required\": [\n    \"candidate_strengths\",\n    \"candidate_weaknesses\",\n    \"risk_factor\",\n    \"reward_factor\",\n    \"overall_fit_rating\",\n    \"justification_for_rating\"\n  ]\n}\n"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        1960,
        480
      ],
      "id": "d95764a1-0335-410a-bc4e-367b58a403bf",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "content": "## AI Resume Analysis System\n- \u201cTransform Resumes into Insights\u201d\n\n- \u201cSmart Screening, Instant Clarity\u201d\n\n- \u201cYour AI Recruiter: Faster, Fairer, Smarter\u201d",
        "width": 340
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        -80
      ],
      "typeVersion": 1,
      "id": "0e85f52f-30f2-4af6-9819-7ab3097e739d",
      "name": "Sticky Note10"
    }
  ],
  "connections": {
    "Receive Resume": {
      "main": [
        [
          {
            "node": "Upload to Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "File Type": {
      "main": [
        [
          {
            "node": "Convert Word to Docs",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get PDF",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get TXT",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Drive": {
      "main": [
        [
          {
            "node": "File Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Word to Docs": {
      "main": [
        [
          {
            "node": "Get Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Doc": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Set Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Resume": {
      "main": [
        [
          {
            "node": "Get Job Description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Job Description": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get PDF": {
      "main": [
        [
          {
            "node": "Extract from File2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File2": {
      "main": [
        [
          {
            "node": "Set Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get TXT": {
      "main": [
        [
          {
            "node": "Extract from File3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File3": {
      "main": [
        [
          {
            "node": "Set Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "Recruiter Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "o4-mini": {
      "ai_languageModel": [
        [
          {
            "node": "Recruiter Agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Recruiter Agent": {
      "main": [
        [
          {
            "node": "Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Recruiter Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7ff995c2-75b2-4164-8475-5010cba55d99",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "5Xy4lDT9ICQ2kPbw",
  "tags": [
    {
      "createdAt": "2025-06-05T06:58:59.412Z",
      "updatedAt": "2025-06-05T06:58:59.412Z",
      "id": "Ba1Vyb7BJb8L5WK7",
      "name": "ET"
    },
    {
      "createdAt": "2025-06-05T06:58:59.444Z",
      "updatedAt": "2025-06-05T06:58:59.444Z",
      "id": "IkoJWBxO2KOLpNNX",
      "name": "From POC sheet"
    },
    {
      "createdAt": "2025-10-27T08:56:35.862Z",
      "updatedAt": "2025-10-27T08:56:35.862Z",
      "id": "4VGoJKQCTJHU7PTY",
      "name": "viraj-n8n"
    }
  ]
}

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 Analysis System. Uses gmailTrigger, googleDrive, httpRequest, lmChatOpenAi. Event-driven trigger; 29 nodes.

Source: https://github.com/Virajgosavi1810/n8n-ai-resume-analyzer-system/blob/main/AI_Resume_Analysis_System.json — 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

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

Inbox Guardian. Uses gmailTrigger, lmChatOpenAi, agent, textClassifier. Event-driven trigger; 66 nodes.

Gmail Trigger, OpenAI Chat, Agent +12
AI & RAG

&gt; Note: This workflow uses sticky notes extensively to document each logical section of the automation. Sticky notes are mandatory and already included to explain OCR, AI parsing, folder logic, dup

QuickBooks, Google Sheets, Google Drive +5
AI & RAG

This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8