{
  "name": "Personalize candidate feedback with GPT-4o, Google Sheets & Gmail for HR teams",
  "nodes": [
    {
      "id": "be44de54-9c31-45da-aac1-fae1dabef3bb",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        160,
        -112
      ]
    },
    {
      "id": "b814bb56-45a5-470b-99c6-d86eee0a9c7b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2160,
        336
      ],
      "parameters": {
        "width": 352,
        "height": 400,
        "content": "## 🙏 Polite Rejection + Learning Plan  \n\n**Action:**  \n- Generates a professional HTML email for candidates who are not shortlisted.  \n\n**Description:**  \n- Politely communicates that the candidate wo"
      }
    },
    {
      "id": "d725ed44-7c21-4d2b-9438-7cdbfc72c4f6",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2720,
        -544
      ],
      "parameters": {
        "width": 304,
        "height": 368,
        "content": "## 📧 Candidate Mailer – Shortlisted  \n\n**Action:**  \n- Sends the congratulatory onboarding email created by the AI to the candidate’s email address.  \n\n**Description:**  \n- Delivers positive news alon"
      }
    },
    {
      "id": "8dce4943-50d5-4e04-a087-3d137c12263b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        -768
      ],
      "parameters": {
        "width": 400,
        "height": 352,
        "content": "## 🎉 Congrats + Onboarding Plan  \n\n**Action:**  \n- Generates a warm, congratulatory HTML email for shortlisted candidates.  \n\n**Description:**  \n- Uses an encouraging and celebratory tone while provid"
      }
    },
    {
      "id": "e7449bde-b1ca-4962-a2b7-c67a82e05342",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2176,
        -176
      ],
      "parameters": {
        "width": 480,
        "height": 272,
        "content": "## 🤖 LLM Backend  \n\n**Action:**  \n- Provides access to the GPT-4o-mini model hosted on Azure OpenAI.  \n\n**Description:**  \n- Acts as the foundation for downstream LLM Chains.  \n- Powers both shortlist"
      }
    },
    {
      "id": "5570e85e-58b1-464e-a901-17ddb6870441",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -576
      ],
      "parameters": {
        "width": 272,
        "height": 416,
        "content": "## 📄 PDF → Text Extractor  \n\n**Action:**  \n- Extracts raw text content from the candidate’s resume PDF.  \n\n**Description:**  \n- Unlocks crucial details such as education, skills, projects, and work hi"
      }
    },
    {
      "id": "13bd06cb-af9f-43cc-b953-c197828c446d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        320
      ],
      "parameters": {
        "width": null,
        "height": 464,
        "content": "## ⚠️ Error Logging  \n\n**Action:**  \n- Logs failed or empty resume downloads into a designated “Error Log” Google Sheet.  \n\n**Description:**  \n- Provides visibility when resumes cannot be processed.  "
      }
    },
    {
      "id": "00e5b685-e037-4fe6-88fb-e09ddea4bfa0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        48
      ],
      "parameters": {
        "width": 272,
        "height": 432,
        "content": "## ✅/❌ Resume File Check  \n\n**Action:**  \n- Validates whether the resume file was downloaded successfully.  \n\n**Description:**  \n- Prevents the workflow from breaking when the resume link is broken or"
      }
    },
    {
      "id": "10876e91-a0bf-4281-9d10-dbf1a71c187d",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        -544
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## 📥 Resume Downloader  \n\n**Action:**  \n- Downloads the candidate’s resume PDF using the link provided in the Google Sheet.  \n\n**Description:**  \n- Makes the candidate’s raw resume accessible to the w"
      }
    },
    {
      "id": "054d2b9a-627a-46bc-a7e8-99a6f2080db6",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        64
      ],
      "parameters": {
        "width": 288,
        "height": 432,
        "content": "## 📑 Candidate Data Fetch  \n\n**Action:**  \n- Retrieves the candidate’s details from the designated Google Sheet.  \n\n**Description:**  \n- Pulls structured information such as name, email, resume link, "
      }
    },
    {
      "id": "56d51999-418d-4df5-bf74-c7395a07aa7e",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2672,
        112
      ],
      "parameters": {
        "width": 272,
        "height": 400,
        "content": "## 📧 Candidate Mailer – Rejected  \n\n**Action:**  \n- Sends the polite rejection + training recommendation email generated by the AI.  \n\n**Description:**  \n- Ensures rejected candidates leave with a pos"
      }
    },
    {
      "id": "4a8d8604-b798-432c-8df5-f9bcbfe13816",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        -592
      ],
      "parameters": {
        "width": 304,
        "height": 432,
        "content": "## 🎯 Shortlisted vs Rejected  \n\n**Action:**  \n- Compares the candidate’s status field to “Shortlisted” and splits the workflow into two paths.  \n\n**Description:**  \n- Creates a personalized communicat"
      }
    },
    {
      "id": "c66a244d-b7ec-4fcf-a8b6-867f6ea86df5",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        16
      ],
      "parameters": {
        "width": 272,
        "height": 464,
        "content": "## 🧩 Candidate Data Builder  \n\n**Action:**  \n- Combines structured data from Google Sheets with unstructured text extracted from the PDF.  \n\n**Description:**  \n- Produces a single, enriched JSON objec"
      }
    },
    {
      "id": "b5e9d9e8-54f7-4068-9be8-6c57f64c5992",
      "name": "📑 Candidate Data Fetch",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        416,
        -112
      ]
    },
    {
      "id": "c7437cf6-5813-408f-9c3e-5026ad1d8ef6",
      "name": "📥 Resume Downloader",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        672,
        -112
      ]
    },
    {
      "id": "ebf66f0f-2b52-4c19-946d-ffb37ed62476",
      "name": "Resume File Check",
      "type": "n8n-nodes-base.if",
      "position": [
        880,
        -112
      ]
    },
    {
      "id": "d2097c78-69ea-426f-a325-d6eaea9011ed",
      "name": "Error Logging",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1168,
        160
      ]
    },
    {
      "id": "034504d1-bdcc-49e0-a88f-a3905001eab3",
      "name": "PDF → Text Extractor",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1184,
        -128
      ]
    },
    {
      "id": "aac37887-0a3e-4d4d-ad84-878833ec4ad9",
      "name": "Candidate Data Builder",
      "type": "n8n-nodes-base.code",
      "position": [
        1424,
        -128
      ]
    },
    {
      "id": "643e3a82-f587-494e-a744-9ca92c06e876",
      "name": "Shortlisted vs Rejected",
      "type": "n8n-nodes-base.if",
      "position": [
        1632,
        -128
      ]
    },
    {
      "id": "e35e2e2f-ecc0-442e-8731-d4a85caf9129",
      "name": "LLM Backend",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        2064,
        -112
      ]
    },
    {
      "id": "4d81897f-89cd-4f7f-9c85-17dd8f153675",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        496
      ],
      "parameters": {
        "width": 368,
        "height": 320,
        "content": "## 🤖 LLM Backend  \n\n**Action:**  \n- Provides access to the GPT-4o-mini model hosted on Azure OpenAI.  \n\n**Description:**  \n- Acts as the foundation for downstream LLM Chains.  \n- Powers both shortlist"
      }
    },
    {
      "id": "652033a3-0bb9-4eaa-8126-60d8bfe5c963",
      "name": "LLM Backend1",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        1920,
        368
      ]
    },
    {
      "id": "2596cbb6-bb80-43bc-bce1-477021f2c997",
      "name": "Congrats + Onboarding Plan",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2176,
        -384
      ]
    },
    {
      "id": "2212e77e-f9d1-4bd3-9aa5-4f35ab849e27",
      "name": "Polite Rejection + Learning Plan",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2128,
        176
      ]
    },
    {
      "id": "30e10fc2-8e1c-4cae-ba9d-88d38f364d03",
      "name": "Candidate Mailer – Shortlisted",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2528,
        -384
      ]
    },
    {
      "id": "9d63e1fd-a697-4bf5-aff5-e29588675413",
      "name": "Candidate Mailer – Rejected",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2480,
        176
      ]
    }
  ],
  "connections": {
    "LLM Backend": {
      "ai_languageModel": [
        [
          {
            "node": "Congrats + Onboarding Plan",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "LLM Backend1": {
      "ai_languageModel": [
        [
          {
            "node": "Polite Rejection + Learning Plan",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Resume File Check": {
      "main": [
        [
          {
            "node": "PDF → Text Extractor",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error Logging",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Candidate Data Builder": {
      "main": [
        [
          {
            "node": "Shortlisted vs Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PDF → Text Extractor": {
      "main": [
        [
          {
            "node": "Candidate Data Builder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📥 Resume Downloader": {
      "main": [
        [
          {
            "node": "Resume File Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Shortlisted vs Rejected": {
      "main": [
        [
          {
            "node": "Congrats + Onboarding Plan",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Polite Rejection + Learning Plan",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📑 Candidate Data Fetch": {
      "main": [
        [
          {
            "node": "📥 Resume Downloader",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Congrats + Onboarding Plan": {
      "main": [
        [
          {
            "node": "Candidate Mailer – Shortlisted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Polite Rejection + Learning Plan": {
      "main": [
        [
          {
            "node": "Candidate Mailer – Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "📑 Candidate Data Fetch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}