{
  "name": "Screen job applications from Google Forms with Google Gemini and email results",
  "nodes": [
    {
      "id": "433bbc96-565d-47da-811f-4936022a9861",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        1216
      ],
      "parameters": {
        "width": 1400,
        "height": 280,
        "content": "## 🤖 AI Resume Screener & Automated HR Notifier\n\nAutomatically scores job applicants using Google Gemini and routes personalised emails to HR and candidates.\n\n**How it works:** Polls a Google Sheet ev"
      }
    },
    {
      "id": "e6176f2d-8b14-4512-9189-d28c6049a258",
      "name": "Step 1 — Trigger & Filter",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        1504
      ],
      "parameters": {
        "width": 640,
        "height": 524,
        "content": "### 📥 Step 1 — Trigger & Filter\n\n**Google Sheets Trigger** polls every minute and fires when a new row is added.\n\n**Read All Rows** re-fetches the full sheet so the filter has the latest state of ever"
      }
    },
    {
      "id": "027c71cd-96ce-4291-a11c-971d4023d1f5",
      "name": "Step 2 — AI Assessment",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        1504
      ],
      "parameters": {
        "width": 640,
        "height": 528,
        "content": "### 🧠 Step 2 — AI Assessment\n\n**Extract Fields & Load JD** pulls the candidate's name, email, position, experience, and skills. It then looks up the matching Job Description from the built-in `JD_MAP`"
      }
    },
    {
      "id": "158a24a4-956f-4120-a7e1-29fda0123fb6",
      "name": "Step 3 — Sheet Update",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        1520
      ],
      "parameters": {
        "width": 420,
        "height": 508,
        "content": "### 📊 Step 3 — Sheet Update\n\n**Build Sheet Request** constructs the Sheets API PUT URL and body, targeting columns J–R on the exact row number of the applicant.\n\n**Update Sheet Row** calls the Google "
      }
    },
    {
      "id": "4701a168-c9fd-40c1-a366-2cf87dbdf604",
      "name": "Step 4 — Routing & Emails",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        1392
      ],
      "parameters": {
        "width": 720,
        "height": 736,
        "content": "### 📧 Step 4 — Score Routing & Emails\n\n**Check Score ≥ 7** branches the flow:\n\n**✅ True (shortlist path)**\n- **Alert HR Team** — notifies the HR inbox with the candidate's score and strengths.\n- **Wai"
      }
    },
    {
      "id": "2e51960c-5ff0-4211-979a-5f19ac271124",
      "name": "Filter Unprocessed Rows",
      "type": "n8n-nodes-base.code",
      "position": [
        800,
        1760
      ]
    },
    {
      "id": "3eaf0b93-cb68-4513-b495-e78fb4e1685d",
      "name": "Wait 5s",
      "type": "n8n-nodes-base.wait",
      "position": [
        2368,
        1760
      ]
    },
    {
      "id": "4f3b8291-cc37-4ec0-893c-0792c0462c25",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        352,
        1760
      ]
    },
    {
      "id": "091927be-bdd9-426a-97f6-16029726c5fd",
      "name": "Read All Rows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        576,
        1760
      ]
    },
    {
      "id": "255e4cc8-2c04-4e80-aadc-99337b04420a",
      "name": "Extract Fields & Load JD",
      "type": "n8n-nodes-base.code",
      "position": [
        1024,
        1760
      ]
    },
    {
      "id": "e5b40133-c73c-4f69-b178-198c10514287",
      "name": "AI Resume Scorer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1248,
        1760
      ]
    },
    {
      "id": "e829e12d-c659-40ed-85dc-179b0f1b55c6",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1168,
        1952
      ]
    },
    {
      "id": "4d8ab33b-160d-42bb-88fb-243b0b284168",
      "name": "Parse AI Output",
      "type": "n8n-nodes-base.code",
      "position": [
        1472,
        1760
      ]
    },
    {
      "id": "6270c4e8-eb44-4407-9b74-e760e8ddb88c",
      "name": "Build Sheet Request",
      "type": "n8n-nodes-base.code",
      "position": [
        1696,
        1760
      ]
    },
    {
      "id": "aebf1e28-2ea8-4fcc-b153-9be1bcbc32d5",
      "name": "Update Sheet Row",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1920,
        1760
      ]
    },
    {
      "id": "99f3237d-7403-47d5-9c2c-21358c9fc6eb",
      "name": "Check Score ≥ 7",
      "type": "n8n-nodes-base.if",
      "position": [
        2144,
        1760
      ]
    },
    {
      "id": "7dafc992-096f-4a77-932c-e2d24e465ada",
      "name": "Alert HR Team",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2368,
        1584
      ]
    },
    {
      "id": "b66f1229-c0ee-4a5f-ad5a-aa99138e012d",
      "name": "Notify Shortlisted Candidate",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2592,
        1760
      ]
    },
    {
      "id": "eded8fe9-3fc2-4e85-98b7-7d4688c31da5",
      "name": "Notify Rejected Candidate",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2368,
        1952
      ]
    }
  ],
  "connections": {
    "Wait 5s": {
      "main": [
        [
          {
            "node": "Notify Shortlisted Candidate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read All Rows": {
      "main": [
        [
          {
            "node": "Filter Unprocessed Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Output": {
      "main": [
        [
          {
            "node": "Build Sheet Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Resume Scorer": {
      "main": [
        [
          {
            "node": "Parse AI Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Sheet Row": {
      "main": [
        [
          {
            "node": "Check Score ≥ 7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Score ≥ 7": {
      "main": [
        [
          {
            "node": "Alert HR Team",
            "type": "main",
            "index": 0
          },
          {
            "node": "Wait 5s",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Notify Rejected Candidate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Sheet Request": {
      "main": [
        [
          {
            "node": "Update Sheet Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Read All Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Unprocessed Rows": {
      "main": [
        [
          {
            "node": "Extract Fields & Load JD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Fields & Load JD": {
      "main": [
        [
          {
            "node": "AI Resume Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Resume Scorer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}