{
  "workflow": {
    "id": 8531,
    "name": "Score resumes against JDs with Google Drive, Google Sheets, and GPT-4o",
    "views": 147,
    "recentViews": 0,
    "totalViews": 147,
    "createdAt": "2025-09-12T15:04:32.393Z",
    "description": "## Description\nAutomatically compare candidate resumes to job descriptions (PDFs) from Google Drive, generate a 0–100 fit score with gap analysis, and update Google Sheets—powered by Azure OpenAI (GPT-4o-mini). Fast, consistent screening with saved reports in Drive. 📈📄\n\n## What This Template Does\n- Fetches job descriptions and resumes (PDF) from Google Drive. 📥\n- Extracts clean text from both PDFs for analysis. 🧼\n- Generates an AI evaluation (score, must-have gaps, nice-to-have bonuses, summary). 🤝\n- Parses the AI output to structured JSON. 🧩\n- Delivers a saved text report in Drive and updates a Google Sheet. 🗂️\n\n## Key Benefits\n- Saves time with automated, consistent scoring. ⏱️\n- Clear gap analysis for quick decisions. 🔍\n- Audit-ready reports stored in Drive. 🧾\n- Centralized tracking in Google Sheets. 📊\n- No-code operation after initial setup. 🧑‍💻\n\n## Features\n- Google Drive search and download for JDs and resumes. 📂\n- PDF-to-text extraction for reliable parsing. 📝\n- Azure OpenAI (GPT-4o-mini) comparison and scoring. 🤖\n- Robust JSON parsing and error handling. 🛡️\n- Automatic report creation in Drive. 💾\n- Append or update candidate data in Google Sheets. 📑\n\n## Requirements\n- n8n instance (cloud or self-hosted).\n- Google Drive credentials in n8n with access to JD and resume folders (e.g., “JD store”, “Resume_store”).\n- Azure OpenAI access with a deployed GPT-4o-mini model and credentials in n8n.\n- Google Sheets credentials in n8n to append or update candidate rows.\n- PDFs for job descriptions and resumes stored in the designated Drive folders.\n\n## Target Audience\n- Talent acquisition and HR operations teams. 🧠\n- Recruiters (in-house and agencies). 🧑‍💼\n- Hiring managers seeking consistent shortlisting. 🧭\n- Ops teams standardizing candidate evaluation records. 🗃️\n\n## Step-by-Step Setup Instructions\n- Connect Google Drive and Google Sheets in n8n Credentials and verify folder access. 🔑\n- Add Azure OpenAI credentials and select GPT-4o-mini in the AI node. 🧠\n- Import the workflow and assign credentials to all nodes (Drive, AI, Sheets). 📦\n- Set folder references for JDs (“JD store”) and resumes (“Resume_store”). 📁\n- Run once to validate extraction, scoring, report creation, and sheet updates. ✅",
    "workflow": {
      "id": "7Pytou63ro4Ht10d",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "JD match score",
      "tags": [],
      "nodes": [
        {
          "id": "b30ed071-9118-4b6c-9645-7f675c7f003a",
          "name": "When clicking ‘Execute workflow’",
          "type": "n8n-nodes-base.manualTrigger",
          "position": [
            -432,
            -112
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "f9c22328-7675-4161-a984-a7704ad41e05",
          "name": "Download file",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            16,
            -112
          ],
          "parameters": {
            "fileId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $json.id }}"
            },
            "options": {},
            "operation": "download"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "7f63f5cf-8b71-4235-9a38-5fe3b2d01467",
          "name": "Extract from File",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            240,
            -112
          ],
          "parameters": {
            "options": {},
            "operation": "pdf"
          },
          "typeVersion": 1
        },
        {
          "id": "73d898cf-26f3-468a-adc1-bd18589bea19",
          "name": "Download file1",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            688,
            -112
          ],
          "parameters": {
            "fileId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $json.id }}"
            },
            "options": {},
            "operation": "download"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "7ec0bfc6-497e-4121-bb5a-420067a9d63a",
          "name": "Extract from File1",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            912,
            -112
          ],
          "parameters": {
            "options": {},
            "operation": "pdf"
          },
          "typeVersion": 1
        },
        {
          "id": "4958145c-c824-4606-b483-bad0f7a0ef4d",
          "name": "AI Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            1136,
            -112
          ],
          "parameters": {
            "text": "=Compare the following job description and resume, then score and evaluate according to the instructions.\n\nJob Description (JD):\n{{ $('Extract from File').item.json.text }}\n\nCandidate Resume:\n{{ $json.text }}\n\nReturn the evaluation in the required JSON format.",
            "options": {
              "systemMessage": "You are an AI resume evaluator.\nYour task is to compare a candidate’s resume against a provided job description and return a structured JSON evaluation.\nFollow these rules:\n\nEvaluate alignment between the job description (JD) and the resume.\n\nAssign a score (0–100) where:\n\n90–100 = Excellent fit\n\n70–89 = Good fit with some gaps\n\n50–69 = Moderate fit with significant gaps\n\nBelow 50 = Poor fit\n\nIdentify must_have_gaps → missing critical skills, experience, or qualifications explicitly required in the JD.\n\nIdentify nice_to_have_bonus → additional desirable skills, certifications, or achievements mentioned in the JD but not mandatory.\n\nProvide a summary (3–5 sentences) describing the overall fit and candidate potential.\n\nAlways return output in the following JSON format (no extra text, no markdown):"
            },
            "promptType": "define"
          },
          "typeVersion": 2.1
        },
        {
          "id": "2c36bdc0-ec36-4b8c-bd1e-54e40fdb87a1",
          "name": "Azure OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
          "position": [
            1232,
            112
          ],
          "parameters": {
            "model": "gpt-4o-mini",
            "options": {}
          },
          "credentials": {
            "azureOpenAiApi": {
              "id": "credential-id",
              "name": "azureOpenAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "4cf138e8-9c52-4f5e-89cf-67e1d6b49f14",
          "name": "Search JD",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            -208,
            -112
          ],
          "parameters": {
            "filter": {
              "folderId": {
                "__rl": true,
                "mode": "list",
                "value": "1KnopVQ7CIdUl5j9ICwijk1RG5w7050nW",
                "cachedResultUrl": "https://drive.google.com/drive/folders/1KnopVQ7CIdUl5j9ICwijk1RG5w7050nW",
                "cachedResultName": "JD store"
              }
            },
            "options": {},
            "resource": "fileFolder",
            "returnAll": true
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "22daae51-9cb8-4584-8e1a-e8abcea3369f",
          "name": "Search Resume",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            464,
            -112
          ],
          "parameters": {
            "filter": {
              "folderId": {
                "__rl": true,
                "mode": "list",
                "value": "1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
                "cachedResultUrl": "https://drive.google.com/drive/folders/1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
                "cachedResultName": "Resume_store"
              }
            },
            "options": {},
            "resource": "fileFolder",
            "returnAll": true
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "274e9346-1bbc-413b-8a29-0ba32a37f7df",
          "name": "Code",
          "type": "n8n-nodes-base.code",
          "position": [
            1536,
            -112
          ],
          "parameters": {
            "jsCode": "return items.map(item => {\n  let text = item.json.output;\n\n  // Remove code fences like ```json ... ```\n  text = text.replace(/```json|```/g, \"\").trim();\n\n  let parsed = {};\n  try {\n    parsed = JSON.parse(text);\n  } catch (err) {\n    parsed = { error: \"Failed to parse JSON\", raw: text };\n  }\n\n  return { json: parsed };\n});"
          },
          "typeVersion": 2
        },
        {
          "id": "e812463c-3796-4f43-9586-efbbf04f1930",
          "name": "Create file from text",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            1760,
            -112
          ],
          "parameters": {
            "name": "={{ $('Search Resume').item.json.name }}_result-summary",
            "content": "=Score: {{ $json.score }}\nmust have gaps: {{ $json.must_have_gaps }}\nnice to have bonus: {{ $json.nice_to_have_bonus }}\nsummary: {{ $json.summary }}",
            "driveId": {
              "__rl": true,
              "mode": "list",
              "value": "My Drive"
            },
            "options": {},
            "folderId": {
              "__rl": true,
              "mode": "list",
              "value": "1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
              "cachedResultUrl": "https://drive.google.com/drive/folders/1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
              "cachedResultName": "Resume_store"
            },
            "operation": "createFromText"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "6403b230-16ca-4e09-83e4-eadfe14d0fb2",
          "name": "Append or update row in sheet",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1984,
            -112
          ],
          "parameters": {
            "columns": {
              "value": {
                "Name": "John Doe",
                "Score": "={{ $('Code').item.json.score }}",
                "Summary": "={{ $('Code').item.json.summary }}"
              },
              "schema": [
                {
                  "id": "Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Email",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Phone ",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Phone ",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Years of experience",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Years of experience",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "skills",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "skills",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "curent role",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "curent role",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "education",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "education",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Score",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Score",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Name"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1424038785,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit#gid=1424038785",
              "cachedResultName": "Sheet2"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit?usp=drivesdk",
              "cachedResultName": "Resume store"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "156e51d2-5eb1-4db4-a108-58845354ef06",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1024,
            -528
          ],
          "parameters": {
            "width": 464,
            "height": 1104,
            "content": "## JD Match Score Workflow\n**Purpose:** Compares candidate resumes against job descriptions and calculates compatibility scores.\n\n**Node Descriptions:**\n\n**Manual Trigger**\nInitiates the job description matching process\nUsed for resume evaluation against specific roles\n\n**Search JD (Google Drive)**\nSearches for job description files in designated Google Drive folder\nRetrieves JD documents for comparison\n\n**Download File (JD)**\nDownloads job description PDF files from Google Drive\nPrepares files for content extraction\n\n**Extract from File (JD)**\nExtracts text content from job description PDFs\nConverts documents to readable text format\n\n**Search Resume (Google Drive)**\nLocates candidate resume files in resume storage folder\nRetrieves resume documents for analysis\n\n**Download File (Resume)**\nDownloads candidate resume PDF files\nPrepares resume files for processing\n\n**Extract from File (Resume)**\nExtracts text content from resume PDFs\nConverts resume documents to analyzable text\n\n**AI Agent**\nCompares job description against candidate resume using Azure OpenAI\nEvaluates alignment and compatibility (0-100 score)\nIdentifies must-have gaps and nice-to-have bonuses\nGenerates detailed summary of candidate fit\n\n**Code Node**\nParses AI evaluation results into structured JSON\nHandles JSON parsing and error management\nCleans evaluation output for database storage\n\n**Create File from Text**\nGenerates evaluation summary reports\nSaves detailed results as text files in Google Drive\nCreates audit trail of evaluations\n\n**Append or Update Row in Sheet**\nUpdates candidate database with JD match scores\nStores evaluation summaries and scores\nMaintains comprehensive candidate profiles"
          },
          "typeVersion": 1
        },
        {
          "id": "fbba0640-0175-437d-9760-cdbbdcc75ef8",
          "name": "Download Job Description PDF",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            2032,
            1584
          ],
          "parameters": {
            "fileId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $json.id }}"
            },
            "options": {},
            "operation": "download"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "27e2a0af-070e-424a-beef-864ac39eae1a",
          "name": "Extract JD Text Content",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            2256,
            1584
          ],
          "parameters": {
            "options": {},
            "operation": "pdf"
          },
          "typeVersion": 1
        },
        {
          "id": "451af1bb-e02f-4964-afb2-6d7793954ec8",
          "name": "Download Candidate Resume PDF",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            2704,
            1584
          ],
          "parameters": {
            "fileId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $json.id }}"
            },
            "options": {},
            "operation": "download"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "7f27b30a-b264-48a9-b42f-54ebca30becc",
          "name": "Extract Resume Text Content",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            2928,
            1584
          ],
          "parameters": {
            "options": {},
            "operation": "pdf"
          },
          "typeVersion": 1
        },
        {
          "id": "db811ef4-01ad-4c2f-95f8-5513af29fa57",
          "name": "AI Resume Evaluator Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            3152,
            1584
          ],
          "parameters": {
            "text": "=Compare the following job description and resume, then score and evaluate according to the instructions.\n\nJob Description (JD):\n{{ $('Extract JD Text Content').item.json.text }}\n\nCandidate Resume:\n{{ $json.text }}\n\nReturn the evaluation in the required JSON format.",
            "options": {
              "systemMessage": "You are an AI resume evaluator.\nYour task is to compare a candidate's resume against a provided job description and return a structured JSON evaluation.\nFollow these rules:\n\nEvaluate alignment between the job description (JD) and the resume.\n\nAssign a score (0–100) where:\n\n90–100 = Excellent fit\n\n70–89 = Good fit with some gaps\n\n50–69 = Moderate fit with significant gaps\n\nBelow 50 = Poor fit\n\nIdentify must_have_gaps → missing critical skills, experience, or qualifications explicitly required in the JD.\n\nIdentify nice_to_have_bonus → additional desirable skills, certifications, or achievements mentioned in the JD but not mandatory.\n\nProvide a summary (3–5 sentences) describing the overall fit and candidate potential.\n\nAlways return output in the following JSON format (no extra text, no markdown):"
            },
            "promptType": "define"
          },
          "typeVersion": 2.1
        },
        {
          "id": "ca6036ea-5fb9-4ca2-aa02-ef53dd890bec",
          "name": "Azure OpenAI GPT-4 Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
          "position": [
            3248,
            1808
          ],
          "parameters": {
            "model": "gpt-4o-mini",
            "options": {}
          },
          "credentials": {
            "azureOpenAiApi": {
              "id": "credential-id",
              "name": "azureOpenAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "92b8dec7-6906-40fc-978a-864a2b3c693a",
          "name": "Find Job Descriptions in Drive",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            1808,
            1584
          ],
          "parameters": {
            "filter": {
              "folderId": {
                "__rl": true,
                "mode": "list",
                "value": "1KnopVQ7CIdUl5j9ICwijk1RG5w7050nW",
                "cachedResultUrl": "https://drive.google.com/drive/folders/1KnopVQ7CIdUl5j9ICwijk1RG5w7050nW",
                "cachedResultName": "JD store"
              }
            },
            "options": {},
            "resource": "fileFolder",
            "returnAll": true
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "ab51acb4-d1b4-456b-8570-e792678a0fdf",
          "name": "Find Candidate Resumes in Drive",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            2480,
            1584
          ],
          "parameters": {
            "filter": {
              "folderId": {
                "__rl": true,
                "mode": "list",
                "value": "1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
                "cachedResultUrl": "https://drive.google.com/drive/folders/1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
                "cachedResultName": "Resume_store"
              }
            },
            "options": {},
            "resource": "fileFolder",
            "returnAll": true
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "1ea350f8-a3f2-4570-ac74-21cea7088082",
          "name": "Parse AI Response to JSON",
          "type": "n8n-nodes-base.code",
          "position": [
            3552,
            1584
          ],
          "parameters": {
            "jsCode": "return items.map(item => {\n  let text = item.json.output;\n\n  // Remove code fences like ```json ... ```\n  text = text.replace(/```json|```/g, \"\").trim();\n\n  let parsed = {};\n  try {\n    parsed = JSON.parse(text);\n  } catch (err) {\n    parsed = { error: \"Failed to parse JSON\", raw: text };\n  }\n\n  return { json: parsed };\n});"
          },
          "typeVersion": 2
        },
        {
          "id": "96787a98-f91a-40a1-89b9-baceff8249ee",
          "name": "Save Evaluation Report to Drive",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            3776,
            1584
          ],
          "parameters": {
            "name": "={{ $('Find Candidate Resumes in Drive').item.json.name }}_result-summary",
            "content": "=Score: {{ $json.score }}\nmust have gaps: {{ $json.must_have_gaps }}\nnice to have bonus: {{ $json.nice_to_have_bonus }}\nsummary: {{ $json.summary }}",
            "driveId": {
              "__rl": true,
              "mode": "list",
              "value": "My Drive"
            },
            "options": {},
            "folderId": {
              "__rl": true,
              "mode": "list",
              "value": "1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
              "cachedResultUrl": "https://drive.google.com/drive/folders/1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
              "cachedResultName": "Resume_store"
            },
            "operation": "createFromText"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "dc9cb8cc-34f6-4ce2-ae33-d929126a7370",
          "name": "Update Candidate Database",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            4000,
            1584
          ],
          "parameters": {
            "columns": {
              "value": {
                "Name": "John Doe",
                "Score": "={{ $('Parse AI Response to JSON').item.json.score }}",
                "Summary": "={{ $('Parse AI Response to JSON').item.json.summary }}"
              },
              "schema": [
                {
                  "id": "Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Email",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Phone ",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Phone ",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Years of experience",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Years of experience",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "skills",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "skills",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "curent role",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "curent role",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "education",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "education",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Score",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Score",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Name"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1424038785,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit#gid=1424038785",
              "cachedResultName": "Sheet2"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit?usp=drivesdk",
              "cachedResultName": "Resume store"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "bb89e2d9-4f18-468f-8b28-a0aa8506b92b",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1072,
            1728
          ],
          "parameters": {
            "width": 320,
            "height": 240,
            "content": "## 🚀 START PROCESS\n\n**Start Resume Evaluation Process**\n\n• **Purpose**: Manually trigger the entire resume evaluation workflow\n• **Action**: Click to begin comparing candidate resumes against job descriptions\n• **Output**: Initiates the sequential processing of all workflow steps\n• **Best Practice**: Use this when you have new resumes to evaluate or want to re-run evaluations"
          },
          "typeVersion": 1
        },
        {
          "id": "0343be16-153b-46f2-8675-b7928b289fb2",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1584,
            1280
          ],
          "parameters": {
            "width": 320,
            "height": 280,
            "content": "## 📁 JOB DESCRIPTION SEARCH\n\n**Find Job Descriptions in Drive**\n\n• **Purpose**: Locates all job description files stored in the designated Google Drive folder\n• **Folder**: Searches in 'JD store' folder\n• **File Types**: Looks for PDF job description documents\n• **Output**: Returns list of available JD files with their IDs and metadata\n• **Note**: Ensure JD files are properly uploaded to the correct folder"
          },
          "typeVersion": 1
        },
        {
          "id": "2fe90bdf-4305-40a1-875c-1f773a4e0afb",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1904,
            1792
          ],
          "parameters": {
            "width": 320,
            "height": 260,
            "content": "## 📥 DOWNLOAD JD FILE\n\n**Download Job Description PDF**\n\n• **Purpose**: Downloads the selected job description PDF file from Google Drive\n• **Input**: File ID from the search results\n• **Process**: Retrieves the actual PDF file content for processing\n• **Output**: Binary PDF data ready for text extraction\n• **Credentials**: Uses Google Drive OAuth2 API connection"
          },
          "typeVersion": 1
        },
        {
          "id": "efca102d-d66d-4d66-b314-45ed34287b69",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2144,
            1280
          ],
          "parameters": {
            "width": 320,
            "height": 260,
            "content": "## 📄 EXTRACT JD TEXT\n\n**Extract JD Text Content**\n\n• **Purpose**: Converts PDF job description into readable text format\n• **Input**: Binary PDF data from downloaded file\n• **Process**: Uses PDF parsing to extract all text content\n• **Output**: Plain text version of the job description\n• **Quality**: Maintains formatting and structure of original document"
          },
          "typeVersion": 1
        },
        {
          "id": "02c627d4-877e-4d65-8e1d-7ccfbd0b5804",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2352,
            1792
          ],
          "parameters": {
            "width": 320,
            "height": 280,
            "content": "## 🔍 RESUME SEARCH\n\n**Find Candidate Resumes in Drive**\n\n• **Purpose**: Searches for candidate resume files in the resume storage folder\n• **Folder**: Looks in 'Resume_store' folder\n• **File Types**: Identifies PDF resume documents\n• **Process**: Returns all available resume files for batch processing\n• **Organization**: Maintains separate folders for JDs and resumes"
          },
          "typeVersion": 1
        },
        {
          "id": "13d3d43a-f1b0-45fb-8dfb-7b63496102f9",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2576,
            1264
          ],
          "parameters": {
            "width": 320,
            "height": 260,
            "content": "## 📥 DOWNLOAD RESUME\n\n**Download Candidate Resume PDF**\n\n• **Purpose**: Downloads individual candidate resume PDF files\n• **Input**: Resume file ID from search results\n• **Process**: Retrieves PDF file content for text extraction\n• **Output**: Binary resume data ready for processing\n• **Batch Processing**: Handles multiple resumes sequentially"
          },
          "typeVersion": 1
        },
        {
          "id": "610649af-431e-43dd-9278-0b095b194955",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2800,
            1776
          ],
          "parameters": {
            "width": 320,
            "height": 260,
            "content": "## 📄 EXTRACT RESUME TEXT\n\n**Extract Resume Text Content**\n\n• **Purpose**: Converts PDF resume into analyzable text format\n• **Input**: Binary PDF resume data\n• **Process**: Parses PDF to extract all textual information\n• **Output**: Clean text version of candidate resume\n• **Quality**: Preserves resume structure and content integrity"
          },
          "typeVersion": 1
        },
        {
          "id": "0c35ebd4-20fa-4ccc-bf38-65814afbbb5a",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3088,
            1216
          ],
          "parameters": {
            "width": 320,
            "height": 320,
            "content": "## 🤖 AI EVALUATION ENGINE\n\n**AI Resume Evaluator Agent**\n\n• **Purpose**: Intelligently compares resume against job description using AI\n• **Scoring System**: \n  - 90-100: Excellent fit\n  - 70-89: Good fit with minor gaps\n  - 50-69: Moderate fit with gaps\n  - Below 50: Poor fit\n• **Analysis**: Identifies must-have gaps and nice-to-have bonuses\n• **Output**: Structured JSON evaluation with detailed summary"
          },
          "typeVersion": 1
        },
        {
          "id": "32715c21-bd37-4edd-906c-73285919b97c",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3168,
            1968
          ],
          "parameters": {
            "width": 320,
            "height": 260,
            "content": "## ⚙️ AI MODEL CONFIG\n\n**Azure OpenAI GPT-4 Model**\n\n• **Model**: GPT-4o-mini for cost-effective evaluation\n• **Purpose**: Powers the AI evaluation agent\n• **Capabilities**: Natural language understanding and structured output\n• **Connection**: Links to Azure OpenAI service\n• **Performance**: Optimized for resume analysis tasks"
          },
          "typeVersion": 1
        },
        {
          "id": "458a71d5-705e-4107-b827-55188bbba6dc",
          "name": "Sticky Note10",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3472,
            1264
          ],
          "parameters": {
            "width": 320,
            "height": 280,
            "content": "## 🔧 JSON PARSER\n\n**Parse AI Response to JSON**\n\n• **Purpose**: Converts AI text output into structured JSON format\n• **Process**: Removes markdown formatting and parses JSON\n• **Error Handling**: Manages parsing failures gracefully\n• **Output**: Clean JSON object with score, gaps, bonuses, and summary\n• **Data Quality**: Ensures consistent data structure for downstream processing"
          },
          "typeVersion": 1
        },
        {
          "id": "3c10aefc-1be1-415e-8707-8e5d44853dcf",
          "name": "Sticky Note11",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3680,
            1824
          ],
          "parameters": {
            "width": 320,
            "height": 280,
            "content": "## 📊 SAVE REPORT\n\n**Save Evaluation Report to Drive**\n\n• **Purpose**: Creates detailed evaluation report as text file\n• **Content**: Includes score, gaps, bonuses, and summary\n• **Naming**: Uses candidate name + '_result-summary' format\n• **Storage**: Saves to Resume_store folder for organization\n• **Audit Trail**: Maintains permanent record of all evaluations"
          },
          "typeVersion": 1
        },
        {
          "id": "a7615e89-8b92-4266-b9b6-95d574b5aca6",
          "name": "Sticky Note12",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3904,
            1280
          ],
          "parameters": {
            "width": 320,
            "height": 280,
            "content": "## 📈 DATABASE UPDATE\n\n**Update Candidate Database**\n\n• **Purpose**: Updates Google Sheets database with evaluation results\n• **Data**: Stores candidate score and summary\n• **Matching**: Uses candidate name to update existing records\n• **Tracking**: Maintains comprehensive candidate evaluation history\n• **Integration**: Enables easy data analysis and reporting"
          },
          "typeVersion": 1
        },
        {
          "id": "9b3d9948-3d7f-4491-abd5-2e7def378c83",
          "name": "Sticky Note13",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1008,
            1056
          ],
          "parameters": {
            "width": 400,
            "height": 600,
            "content": "## 📋 JD MATCH SCORE WORKFLOW OVERVIEW\n\n**🎯 Purpose:** Automated system to evaluate candidate resumes against job descriptions and generate compatibility scores\n\n**🔄 Workflow Steps:**\n1. **Search & Download**: Locate JD and resume files from Google Drive\n2. **Extract Content**: Convert PDF documents to text format\n3. **AI Analysis**: Use GPT-4 to compare and score candidate fit\n4. **Process Results**: Parse AI output and structure data\n5. **Store Results**: Save reports and update candidate database\n\n**📊 Scoring System:**\n• 90-100: Excellent match (hire immediately)\n• 70-89: Good fit with minor training needed\n• 50-69: Moderate fit requiring skill development\n• Below 50: Poor fit for this role\n\n**💡 Benefits:**\n• Objective, consistent evaluation process\n• Detailed gap analysis for each candidate\n• Automated report generation and storage\n• Comprehensive candidate database tracking"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "7e773013-c40d-4eab-b3ed-6f96bc6fe260",
      "connections": {
        "Code": {
          "main": [
            [
              {
                "node": "Create file from text",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Agent": {
          "main": [
            [
              {
                "node": "Code",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Search JD": {
          "main": [
            [
              {
                "node": "Download file",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download file": {
          "main": [
            [
              {
                "node": "Extract from File",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Search Resume": {
          "main": [
            [
              {
                "node": "Download file1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download file1": {
          "main": [
            [
              {
                "node": "Extract from File1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract from File": {
          "main": [
            [
              {
                "node": "Search Resume",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract from File1": {
          "main": [
            [
              {
                "node": "AI Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Create file from text": {
          "main": [
            [
              {
                "node": "Append or update row in sheet",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Azure OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Extract JD Text Content": {
          "main": [
            [
              {
                "node": "Find Candidate Resumes in Drive",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Azure OpenAI GPT-4 Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Resume Evaluator Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "AI Resume Evaluator Agent": {
          "main": [
            [
              {
                "node": "Parse AI Response to JSON",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse AI Response to JSON": {
          "main": [
            [
              {
                "node": "Save Evaluation Report to Drive",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Resume Text Content": {
          "main": [
            [
              {
                "node": "AI Resume Evaluator Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download Job Description PDF": {
          "main": [
            [
              {
                "node": "Extract JD Text Content",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download Candidate Resume PDF": {
          "main": [
            [
              {
                "node": "Extract Resume Text Content",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Find Job Descriptions in Drive": {
          "main": [
            [
              {
                "node": "Download Job Description PDF",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Find Candidate Resumes in Drive": {
          "main": [
            [
              {
                "node": "Download Candidate Resume PDF",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Save Evaluation Report to Drive": {
          "main": [
            [
              {
                "node": "Update Candidate Database",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "When clicking ‘Execute workflow’": {
          "main": [
            [
              {
                "node": "Search JD",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 37,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 14
        },
        "n8n-nodes-base.googleDrive": {
          "count": 10
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "n8n-nodes-base.manualTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 2
        },
        "n8n-nodes-base.extractFromFile": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi": {
          "count": 2
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 58,
        "icon": "file:googleDrive.svg",
        "name": "n8n-nodes-base.googleDrive",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Google Drive"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Google Drive",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 838,
        "icon": "fa:mouse-pointer",
        "name": "n8n-nodes-base.manualTrigger",
        "codex": {
          "data": {
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When clicking ‘Execute workflow’",
          "color": "#909298"
        },
        "iconData": {
          "icon": "mouse-pointer",
          "type": "icon"
        },
        "displayName": "Manual Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1235,
        "icon": "file:extractFromFile.svg",
        "name": "n8n-nodes-base.extractFromFile",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Spreadsheet",
              "Excel",
              "xls",
              "xlsx",
              "ods",
              "tabular",
              "decode",
              "decoding",
              "Move Binary Data",
              "Binary",
              "File",
              "PDF",
              "JSON",
              "HTML",
              "ICS",
              "iCal",
              "txt",
              "Text",
              "RTF",
              "XML",
              "64",
              "Base64",
              "Convert"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Files",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Extract from File"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="
        },
        "displayName": "Extract from File",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1253,
        "icon": "file:azure.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Azure OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjQyIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTguOTcyJSIgeDI9IjM3LjE5MSUiIHkxPSI3LjQxMSUiIHkyPSIxMDMuNzYyJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzExNEE4QiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzA2NjlCQyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iNTkuNzE5JSIgeDI9IjUyLjY5MSUiIHkxPSI1Mi4zMTMlIiB5Mj0iNTQuODY0JSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1vcGFjaXR5PSIuMyIvPjxzdG9wIG9mZnNldD0iNy4xJSIgc3RvcC1vcGFjaXR5PSIuMiIvPjxzdG9wIG9mZnNldD0iMzIuMSUiIHN0b3Atb3BhY2l0eT0iLjEiLz48c3RvcCBvZmZzZXQ9IjYyLjMlIiBzdG9wLW9wYWNpdHk9Ii4wNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSIzNy4yNzklIiB4Mj0iNjIuNDczJSIgeTE9IjQuNiUiIHkyPSI5OS45NzklIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjM0NDQkY0Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMjg5MkRGIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNhKSIgZD0iTTg1LjM0My4wMDNoNzUuNzUzTDgyLjQ1NyAyMzNhMTIuMDggMTIuMDggMCAwIDEtMTEuNDQyIDguMjE2SDEyLjA2QTEyLjA2IDEyLjA2IDAgMCAxIC42MzMgMjI1LjMwM0w3My44OTggOC4yMTlBMTIuMDggMTIuMDggMCAwIDEgODUuMzQzIDB6Ii8+PHBhdGggZmlsbD0iIzAwNzhENCIgZD0iTTE5NS40MjMgMTU2LjI4Mkg3NS4yOTdhNS41NiA1LjU2IDAgMCAwLTMuNzk2IDkuNjI3bDc3LjE5IDcyLjA0N2ExMi4xNCAxMi4xNCAwIDAgMCA4LjI4IDMuMjZoNjguMDJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTg1LjM0My4wMDNhMTEuOTggMTEuOTggMCAwIDAtMTEuNDcxIDguMzc2TC43MjMgMjI1LjEwNWExMi4wNDUgMTIuMDQ1IDAgMCAwIDExLjM3IDE2LjExMmg2MC40NzVhMTIuOTMgMTIuOTMgMCAwIDAgOS45MjEtOC40MzdsMTQuNTg4LTQyLjk5MSA1Mi4xMDUgNDguNmExMi4zMyAxMi4zMyAwIDAgMCA3Ljc1NyAyLjgyOGg2Ny43NjZsLTI5LjcyMS04NC45MzUtODYuNjQzLjAyTDE2MS4zNy4wMDN6Ii8+PHBhdGggZmlsbD0idXJsKCNjKSIgZD0iTTE4Mi4wOTggOC4yMDdBMTIuMDYgMTIuMDYgMCAwIDAgMTcwLjY3LjAwM0g4Ni4yNDVjNS4xNzUgMCA5Ljc3MyAzLjMwMSAxMS40MjggOC4yMDRMMTcwLjk0IDIyNS4zYTEyLjA2MiAxMi4wNjIgMCAwIDEtMTEuNDI4IDE1LjkyaDg0LjQyOWExMi4wNjIgMTIuMDYyIDAgMCAwIDExLjQyNS0xNS45MnoiLz48L3N2Zz4="
        },
        "displayName": "Azure OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 17,
        "name": "HR"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}