AutomationFlowsAI & RAG › Automate Resume Analysis & Candidate Screening with Jotform, Azure Ocr,…

Automate Resume Analysis & Candidate Screening with Jotform, Azure Ocr,…

Original n8n title: Automate Resume Analysis & Candidate Screening with Jotform, Azure Ocr, Gpt-4.1, Zoho CRM

Bymoosa @moosa on n8n.io

This workflow is ideal for HR professionals, recruiters, and small businesses looking to streamline resume screening with AI-powered analysis and CRM integration.

Event trigger★★★★☆ complexityAI-powered25 nodesJot Form TriggerPostgresOpenAIOpenAI ChatHTTP RequestN8N Nodes PdfcoInformation ExtractorGmail
AI & RAG Trigger: Event Nodes: 25 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Gmail → HTTP Request 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "1cb26fad-69c7-4035-86de-e52c3950698c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6576,
        1504
      ],
      "parameters": {
        "width": 1280,
        "height": 512,
        "content": "## Convert PDF to JPG (PDF.co API). Extract text via Azure OCR. Check status and retry if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "04c50980-0226-4acf-8a3f-158e139ed949",
      "name": "JotForm Trigger1",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        6144,
        1696
      ],
      "parameters": {
        "form": "252434958811059",
        "onlyAnswers": false,
        "resolveData": false
      },
      "credentials": {
        "jotFormApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3f88c2fd-93b8-4cb6-9b12-df65daea222a",
      "name": "create leads table1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        8096,
        1152
      ],
      "parameters": {
        "query": "CREATE TABLE resume (\n    id SERIAL PRIMARY KEY,\n\n\n    given_name VARCHAR(10000),\n    given_email VARCHAR(10000),\n    resume_loc VARCHAR(10000)\n\n  \n    \n);\n",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "9879c828-791d-495f-8ce2-c7a748b5815f",
      "name": "Create an assistant1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        7648,
        1168
      ],
      "parameters": {
        "name": "Resume Analyzer 101",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "GPT-4.1"
        },
        "options": {},
        "resource": "assistant",
        "operation": "create",
        "description": "=Assistant to Analyze resume and give feedback",
        "instructions": "=You are a professional career coach and HR expert with 10+ years of experience in recruitment and resume review. \nYou help users improve their resumes by providing clear, structured, and helpful feedback.\n\nYou will receive the extracted text of a resume. \nAnalyze it carefully and provide feedback in the following structured format:\n\n---\n\n**Overall Impression**\nBriefly summarize how well this resume presents the candidate overall.\n\n**Strengths**\nList 3\u20135 things that are good about this resume (e.g., clarity, strong skills, measurable achievements, formatting).\n\n**Areas for Improvement**\nList 3\u20135 specific improvements the user can make (e.g., weak summary, missing keywords, lack of achievements, too long, inconsistent formatting).\n\n**Keyword & Skills Analysis**\nIdentify relevant skills, tools, and keywords that appear in the text.\nIf it\u2019s missing important ones for the likely job type, suggest which to add.\n\n**Professional Summary (Optional Rewrite)**\nIf a summary section is missing or weak, write a short, improved professional summary (2\u20133 sentences).\n\n**score**\nAdd strict score on resume between 1 and 100 \n---\n\nKeep the tone positive and constructive. \nMake the feedback easy for a non-technical person to understand.\nDo not restate the entire resume text in your output.\n"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5896a7e8-916d-4539-9249-d8f31b7c0b7d",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        8768,
        1808
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "26cd265b-652b-4fcb-b06e-ac02d220c2b4",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7968,
        1088
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 224,
        "content": "## create table for submitted results\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0c52f405-074c-4e31-8be8-93abb52a8d60",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7424,
        1088
      ],
      "parameters": {
        "color": 7,
        "width": 384,
        "height": 224,
        "content": "## create assistant to analyze results"
      },
      "typeVersion": 1
    },
    {
      "id": "17f4b3b9-79c0-49ec-a726-8dddce4e5ec1",
      "name": "add qualified to zoho crm1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        9488,
        1488
      ],
      "parameters": {
        "url": "https://www.zohoapis.com/crm/v6/qualified_resume",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"data\": [\n    {\n      \"Name\": \"{{ $item(\"0\").$node[\"JotForm Trigger1\"].json[\"rawRequest\"][\"q4_name\"][\"first\"] }} {{ $item(\"0\").$node[\"JotForm Trigger1\"].json[\"rawRequest\"][\"q4_name\"][\"last\"] }}\",\n      \"Email\": \"{{ $item(\"0\").$node[\"JotForm Trigger1\"].json[\"rawRequest\"][\"q5_email\"] }}\",\n      \"resume_Score\": \"{{ $item(\"0\").$node[\"Information Extractor\"].json[\"output\"][\"Score\"] }}\",\n      \"qualified\": \"True\",\n      \"Key_Strength\": \"{{ $item(\"0\").$node[\"Information Extractor\"].json[\"output\"][\"good_side\"] }}\",\n      \"Recommended_Action\": \"followup\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "zohoOAuth2Api"
      },
      "credentials": {
        "zohoOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f47afb8b-8ddc-4938-93c0-58ae2b7252e0",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6064,
        1616
      ],
      "parameters": {
        "width": 272,
        "height": 240,
        "content": "## JotForm \nCaptures resume submissions (name, email, PDF URL). Stores data in PostgreSQL `resume` table.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "68af3da1-5c6d-47ae-8d53-481fac97a7c9",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6336,
        1488
      ],
      "parameters": {
        "width": 176,
        "height": 384,
        "content": "## postgress\nstore all submissions in postgress"
      },
      "typeVersion": 1
    },
    {
      "id": "781a660e-c780-4315-b735-c8b5864c8afe",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7968,
        1392
      ],
      "parameters": {
        "width": 2128,
        "height": 624,
        "content": "## Analyze resume text (OpenAI). Extract strengths, improvements, score. If score > 85: add to Zoho CRM, send congratulatory email. Else: send feedback email."
      },
      "typeVersion": 1
    },
    {
      "id": "a633d94f-90b9-4b7e-8a95-96e4a79cd4bf",
      "name": "if extraction completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        7488,
        1632
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5f85c76d-3899-48c9-ae2e-4810dcdca8d7",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "succeeded"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e67fecb2-5097-4236-a7f5-dbfbfe60c3df",
      "name": "send images to azure ocr",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        6816,
        1696
      ],
      "parameters": {
        "url": "=https://test-app-image.cognitiveservices.azure.com/vision/v3.2/read/analyze\n",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "jsonBody": "={\n  \"url\": \"{{ $json.body }}\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "43dce5be-bef3-45f0-8e27-cb8911c4378e",
      "name": "convert pdf to image",
      "type": "n8n-nodes-pdfco.PDFco Api",
      "position": [
        6592,
        1696
      ],
      "parameters": {
        "url": "={{ $json.resume_loc }}",
        "operation": "Convert from PDF",
        "convertType": "toJpg",
        "advancedOptions_Image": {
          "pages": "0"
        }
      },
      "credentials": {
        "pdfcoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5d416b9d-cfc8-4bc7-a226-6d44ddd8c41a",
      "name": "record data for submission",
      "type": "n8n-nodes-base.postgres",
      "position": [
        6368,
        1696
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "resume",
          "cachedResultName": "resume"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "columns": {
          "value": {
            "given_name": "={{ $json.rawRequest.q4_name.first }} {{ $json.rawRequest.q4_name.last }}",
            "resume_loc": "={{ $json.rawRequest.fileUpload[0] }}",
            "given_email": "={{ $json.rawRequest.q5_email }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "given_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "given_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "given_email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "given_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "resume_loc",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "resume_loc",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "4c383e64-2247-4643-8037-f50db972bc94",
      "name": "extract operation id",
      "type": "n8n-nodes-base.code",
      "position": [
        7040,
        1696
      ],
      "parameters": {
        "jsCode": "const url = $json.headers[\"operation-location\"];\nreturn [{\n  operationLocation: url,\n  operationId: url.split(\"/\").pop()\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c5980c58-edee-4eb9-87ae-2ca8c517f2e8",
      "name": "get extracted results",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        7264,
        1696
      ],
      "parameters": {
        "url": "=https://test-app-image.cognitiveservices.azure.com/vision/v3.2/read/analyzeResults/{{ $json.operationId }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1ce7a80e-3294-4ba4-b75f-70cf29a7e233",
      "name": "wait extraction to be completed",
      "type": "n8n-nodes-base.wait",
      "position": [
        7712,
        1792
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "b44563d8-8f57-4482-80f2-5592be844682",
      "name": "Combine OCR text",
      "type": "n8n-nodes-base.code",
      "position": [
        8048,
        1584
      ],
      "parameters": {
        "jsCode": "return [{\n  text: $json[\"analyzeResult\"][\"readResults\"]\n    .flatMap(p => p.lines.map(l => l.text))\n    .join(\"\\n\")\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f0eb164d-9d0c-4f87-a293-1b6304a50987",
      "name": "Resume Analyzer",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        8272,
        1584
      ],
      "parameters": {
        "text": "=resume: {{ $json.text }}",
        "prompt": "define",
        "options": {},
        "resource": "assistant",
        "assistantId": {
          "__rl": true,
          "mode": "list",
          "value": "asst_AeQ1UFeRM8SW9EYD2oHLDt7r",
          "cachedResultName": "Resume Analyzer 101"
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "dad8f0dd-4dea-4912-950d-bee352e8f9bb",
      "name": "Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        8688,
        1584
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "good_side",
              "description": "=extract what is good in resume from analyzed data\nmake it short and use bulletpoints"
            },
            {
              "name": "to_improve",
              "description": "=extract what to improve in resume from analyzed data\nmake it short and use bulletpoints"
            },
            {
              "name": "Score",
              "description": "score of resume only score not out of 100 or /100"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a8528225-a4cb-4e93-97bf-aa0e682d1e0d",
      "name": "convert score to number",
      "type": "n8n-nodes-base.set",
      "position": [
        9040,
        1584
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0122ead3-a743-4253-891a-71a0bbe7b05d",
              "name": "output.Score",
              "type": "number",
              "value": "={{ $json.output.Score }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d4c94436-b021-41be-aaeb-9656bb8aa687",
      "name": "if score > 58?",
      "type": "n8n-nodes-base.if",
      "position": [
        9264,
        1584
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9f5092e4-3bd7-4b2c-8490-770b281c4ce1",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.output.Score }}",
              "rightValue": 85
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "9b03c662-3314-451b-ae89-b2723915f912",
      "name": "send feedback for changes",
      "type": "n8n-nodes-base.gmail",
      "position": [
        9488,
        1680
      ],
      "parameters": {
        "sendTo": "={{ $item(\"0\").$node[\"JotForm Trigger1\"].json[\"rawRequest\"][\"q5_email\"] }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Resume Feedback Report</title>\n  <style>\n    body {\n      font-family: 'Segoe UI', Arial, sans-serif;\n      background-color: #f7f9fc;\n      padding: 30px;\n      color: #333;\n      line-height: 1.6;\n    }\n    .container {\n      background-color: #ffffff;\n      border-radius: 10px;\n      padding: 25px 30px;\n      box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n      max-width: 600px;\n      margin: 0 auto;\n    }\n    h2 {\n      color: #0078d7;\n      margin-bottom: 10px;\n    }\n    ul {\n      margin-top: 5px;\n      padding-left: 20px;\n    }\n    .section {\n      margin-top: 25px;\n    }\n    .footer {\n      margin-top: 40px;\n      font-size: 13px;\n      color: #666;\n      text-align: center;\n    }\n    li { margin-bottom: 8px; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <h2>\u2705 Your Resume Feedback Report</h2>\n    <p>Hello,</p>\n    <p>Thank you for submitting your resume. Our AI-powered assistant has analyzed it and here\u2019s your personalized feedback:</p>\n\n    <div class=\"section\">\n      <h3>\ud83c\udf1f Strengths</h3>\n      <ul>\n        {{$json[\"output\"][\"good_side\"]\n           .split(\"\\n\")\n           .filter(s => s.trim() !== '')\n           .map(item => \"<li>\" + item.replace(/^- /,'').trim() + \"</li>\")\n           .join(\"\")}}\n      </ul>\n    </div>\n\n    <div class=\"section\">\n      <h3>\ud83d\udd27 Areas to Improve</h3>\n      <ul>\n        {{$json[\"output\"][\"to_improve\"]\n           .split(\"\\n\")\n           .filter(s => s.trim() !== '')\n           .map(item => \"<li>\" + item.replace(/^- /,'').trim() + \"</li>\")\n           .join(\"\")}}\n      </ul>\n    </div>\n\n    <p>We hope this helps you refine your resume and make it stand out even more!</p>\n\n    <div class=\"footer\">\n      <p>Best regards,<br><strong>The Resume Analyzer Team</strong></p>\n    </div>\n  </div>\n</body>\n</html>\n",
        "options": {},
        "subject": "Resume Analyzed Results"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "303e1cdf-aae9-43ef-922b-4f6c6712ceb6",
      "name": "send congratulations",
      "type": "n8n-nodes-base.gmail",
      "position": [
        9712,
        1488
      ],
      "parameters": {
        "sendTo": "={{ $item(\"0\").$node[\"JotForm Trigger1\"].json[\"rawRequest\"][\"q5_email\"] }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Congratulations on Your Resume Review!</title>\n  <style>\n    body {\n      font-family: 'Segoe UI', Arial, sans-serif;\n      background-color: #f7f9fc;\n      padding: 30px;\n      color: #333;\n      line-height: 1.6;\n    }\n    .container {\n      background-color: #ffffff;\n      border-radius: 10px;\n      padding: 25px 30px;\n      box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n      max-width: 600px;\n      margin: 0 auto;\n    }\n    h2 {\n      color: #0078d7;\n      margin-bottom: 10px;\n    }\n    ul {\n      margin-top: 5px;\n      padding-left: 20px;\n    }\n    .section {\n      margin-top: 25px;\n    }\n    .footer {\n      margin-top: 40px;\n      font-size: 13px;\n      color: #666;\n      text-align: center;\n    }\n    li { margin-bottom: 8px; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <h2>\ud83c\udf89 Congratulations!</h2>\n    <p>Hello,</p>\n    <p>We\u2019re excited to inform you that your resume has been successfully reviewed by our AI-powered assistant, and the results are impressive! Great job putting together a strong profile.</p>\n\n    <div class=\"section\">\n      <h3>\ud83c\udf1f Your Strengths</h3>\n      <ul>\n        {{ $item(\"0\").$node[\"Information Extractor\"].json[\"output\"][\"good_side\"] }}\n      </ul>\n    </div>\n\n    <p>We\u2019re thrilled to see your potential and will be following up soon with the next steps. Keep up the great work!</p>\n\n    <div class=\"footer\">\n      <p>Warm regards,<br><strong>The Resume Analyzer Team</strong></p>\n    </div>\n  </div>\n</body>\n</html>\n",
        "options": {},
        "subject": "Resume Analyzed Results"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "connections": {
    "if score > 58?": {
      "main": [
        [
          {
            "node": "add qualified to zoho crm1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "send feedback for changes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resume Analyzer": {
      "main": [
        [
          {
            "node": "Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine OCR text": {
      "main": [
        [
          {
            "node": "Resume Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JotForm Trigger1": {
      "main": [
        [
          {
            "node": "record data for submission",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "convert pdf to image": {
      "main": [
        [
          {
            "node": "send images to azure ocr",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "extract operation id": {
      "main": [
        [
          {
            "node": "get extracted results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor": {
      "main": [
        [
          {
            "node": "convert score to number",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get extracted results": {
      "main": [
        [
          {
            "node": "if extraction completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "convert score to number": {
      "main": [
        [
          {
            "node": "if score > 58?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "if extraction completed?": {
      "main": [
        [
          {
            "node": "Combine OCR text",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "wait extraction to be completed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send images to azure ocr": {
      "main": [
        [
          {
            "node": "extract operation id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "add qualified to zoho crm1": {
      "main": [
        [
          {
            "node": "send congratulations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "record data for submission": {
      "main": [
        [
          {
            "node": "convert pdf to image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "wait extraction to be completed": {
      "main": [
        [
          {
            "node": "get extracted results",
            "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

This workflow is ideal for HR professionals, recruiters, and small businesses looking to streamline resume screening with AI-powered analysis and CRM integration.

Source: https://n8n.io/workflows/9540/ — 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

Transform your Gmail sent folder into a comprehensive, enriched contact database automatically. This workflow processes hundreds or thousands of sent emails, extracting and enriching contact informati

HTTP Request, @Brave/N8N Nodes Brave Search, Gmail +3
AI & RAG

Author: CSChin Example Source: https://www.ncl.ac.uk/singapore/staff/profile/chengchin.html#publications

HTTP Request, OpenAI Chat, Form Trigger +3
AI & RAG

Detects new unread Gmail messages Extracts sender name for personalized replies Classifies the email into one of four categories Applies the correct Gmail label and either sends an auto-reply, creates

Gmail Trigger, OpenAI Chat, Gmail +4
AI & RAG

Sending a plain PDF resume doesn’t stand out anymore. This workflow allows candidates to convert their resume and photo into a personalized video resume. Recruiters get a more engaging first impressio

OpenAI Chat, HTTP Request, Information Extractor +3
AI & RAG

This workflow automates the end-to-end process of extracting and summarizing information from PDFs stored in a specific Google Drive folder. When a new PDF or any binary data is added, the workflow is

Google Drive Trigger, Information Extractor, OpenAI Chat +4