{
  "name": "Score resumes against JDs with Google Drive, Google Sheets, and GPT-4o",
  "nodes": [
    {
      "id": "b30ed071-9118-4b6c-9645-7f675c7f003a",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -432,
        -112
      ]
    },
    {
      "id": "f9c22328-7675-4161-a984-a7704ad41e05",
      "name": "Download file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        16,
        -112
      ]
    },
    {
      "id": "7f63f5cf-8b71-4235-9a38-5fe3b2d01467",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        240,
        -112
      ]
    },
    {
      "id": "73d898cf-26f3-468a-adc1-bd18589bea19",
      "name": "Download file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        688,
        -112
      ]
    },
    {
      "id": "7ec0bfc6-497e-4121-bb5a-420067a9d63a",
      "name": "Extract from File1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        912,
        -112
      ]
    },
    {
      "id": "4958145c-c824-4606-b483-bad0f7a0ef4d",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1136,
        -112
      ]
    },
    {
      "id": "2c36bdc0-ec36-4b8c-bd1e-54e40fdb87a1",
      "name": "Azure OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        1232,
        112
      ]
    },
    {
      "id": "4cf138e8-9c52-4f5e-89cf-67e1d6b49f14",
      "name": "Search JD",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -208,
        -112
      ]
    },
    {
      "id": "22daae51-9cb8-4584-8e1a-e8abcea3369f",
      "name": "Search Resume",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        464,
        -112
      ]
    },
    {
      "id": "274e9346-1bbc-413b-8a29-0ba32a37f7df",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        1536,
        -112
      ]
    },
    {
      "id": "e812463c-3796-4f43-9586-efbbf04f1930",
      "name": "Create file from text",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1760,
        -112
      ]
    },
    {
      "id": "6403b230-16ca-4e09-83e4-eadfe14d0fb2",
      "name": "Append or update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1984,
        -112
      ]
    },
    {
      "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 descripti"
      }
    },
    {
      "id": "fbba0640-0175-437d-9760-cdbbdcc75ef8",
      "name": "Download Job Description PDF",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2032,
        1584
      ]
    },
    {
      "id": "27e2a0af-070e-424a-beef-864ac39eae1a",
      "name": "Extract JD Text Content",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2256,
        1584
      ]
    },
    {
      "id": "451af1bb-e02f-4964-afb2-6d7793954ec8",
      "name": "Download Candidate Resume PDF",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2704,
        1584
      ]
    },
    {
      "id": "7f27b30a-b264-48a9-b42f-54ebca30becc",
      "name": "Extract Resume Text Content",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2928,
        1584
      ]
    },
    {
      "id": "db811ef4-01ad-4c2f-95f8-5513af29fa57",
      "name": "AI Resume Evaluator Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3152,
        1584
      ]
    },
    {
      "id": "ca6036ea-5fb9-4ca2-aa02-ef53dd890bec",
      "name": "Azure OpenAI GPT-4 Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        3248,
        1808
      ]
    },
    {
      "id": "92b8dec7-6906-40fc-978a-864a2b3c693a",
      "name": "Find Job Descriptions in Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1808,
        1584
      ]
    },
    {
      "id": "ab51acb4-d1b4-456b-8570-e792678a0fdf",
      "name": "Find Candidate Resumes in Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2480,
        1584
      ]
    },
    {
      "id": "1ea350f8-a3f2-4570-ac74-21cea7088082",
      "name": "Parse AI Response to JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        3552,
        1584
      ]
    },
    {
      "id": "96787a98-f91a-40a1-89b9-baceff8249ee",
      "name": "Save Evaluation Report to Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3776,
        1584
      ]
    },
    {
      "id": "dc9cb8cc-34f6-4ce2-ae33-d929126a7370",
      "name": "Update Candidate Database",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4000,
        1584
      ]
    },
    {
      "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 desc"
      }
    },
    {
      "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' fold"
      }
    },
    {
      "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**: Re"
      }
    },
    {
      "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 parsi"
      }
    },
    {
      "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**: "
      }
    },
    {
      "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 fil"
      }
    },
    {
      "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 t"
      }
    },
    {
      "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"
      }
    },
    {
      "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 understan"
      }
    },
    {
      "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**: Man"
      }
    },
    {
      "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 candi"
      }
    },
    {
      "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"
      }
    },
    {
      "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 & Dow"
      }
    }
  ],
  "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
          }
        ]
      ]
    }
  }
}