{
  "name": "AI candidate screening pipeline: LinkedIn to Telegram with Gemini & Apify",
  "nodes": [
    {
      "id": "9914e5d9-f6dd-4a18-b6c5-02f995ef011f",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        48,
        -80
      ]
    },
    {
      "id": "1bca066f-1627-4351-9a0a-178c359cfb50",
      "name": "Download Selected JD",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -304,
        -256
      ]
    },
    {
      "id": "e39f1a98-9266-4023-a819-878f817d2d98",
      "name": "JD Matching Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1936,
        -272
      ]
    },
    {
      "id": "14c93c36-cdca-4650-846c-77eb9139d6b1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2112,
        -384
      ],
      "parameters": {
        "width": 1536,
        "height": 624,
        "content": "## Job Description (Vacany) Matching with Candidate's LinkedIn Profile"
      }
    },
    {
      "id": "5ab30ebc-fea5-46e1-a0aa-bf29046213a1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2112,
        272
      ],
      "parameters": {
        "width": 1504,
        "height": 592,
        "content": "## LinkedIn Profile Analysis and Feedback"
      }
    },
    {
      "id": "b686e251-6ed4-4984-bbc4-283d52bed4e7",
      "name": "Detailed JD Matching Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -304,
        -48
      ]
    },
    {
      "id": "5487ce4d-0026-455f-9220-e3634e5b6f79",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1072,
        -144
      ]
    },
    {
      "id": "7ea5ec43-29b8-4815-96b1-8fad17f88cf8",
      "name": "Download Selected JD1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -896,
        0
      ]
    },
    {
      "id": "a09b357e-9e1a-4beb-9a5b-f2f4339955e1",
      "name": "Extract from File1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -720,
        0
      ]
    },
    {
      "id": "c5584a89-5766-4a40-ade5-c801c689f5ae",
      "name": "Access JD Files",
      "type": "n8n-nodes-base.googleDriveTool",
      "position": [
        -1840,
        -64
      ]
    },
    {
      "id": "5568dfe0-ef24-4335-8b78-4d189d0cc8a2",
      "name": "Transform for Multiple JDs",
      "type": "n8n-nodes-base.code",
      "position": [
        -1296,
        -176
      ]
    },
    {
      "id": "a6a3f28e-183e-460b-a587-3a89fafa1ca8",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        -384
      ],
      "parameters": {
        "width": 1344,
        "height": 1248,
        "content": ""
      }
    },
    {
      "id": "949885c6-2c82-4be6-92e7-7349faca7d89",
      "name": "Match Selected JD Name with Full Text",
      "type": "n8n-nodes-base.code",
      "position": [
        48,
        208
      ]
    },
    {
      "id": "b36268e4-98f0-4ac2-9e2a-708f5ac0b7eb",
      "name": "Recruiter Scoring Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1968,
        448
      ]
    },
    {
      "id": "6db7839e-719d-44c7-b3b5-17798299933a",
      "name": "Structured Output Parser-1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1664,
        -64
      ]
    },
    {
      "id": "a86fc69f-8052-4474-9d76-ee4988d2f461",
      "name": "Structured Output Parser-3",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1792,
        688
      ]
    },
    {
      "id": "3e195903-7d10-47e3-91b2-17574b8dcacb",
      "name": "Structured Output Parser-2",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -144,
        160
      ]
    },
    {
      "id": "083be177-e9dd-4469-b501-f76b8c498a11",
      "name": "Receive Telegram Msg to Recruiter Bot",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -4064,
        -256
      ]
    },
    {
      "id": "9fab2352-6fe9-4f12-b86a-c6623f716a03",
      "name": "Extract LinkedIn Profile Information",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2592,
        0
      ]
    },
    {
      "id": "148a5324-f33f-4848-a8d0-2568ece924a3",
      "name": "LinkedIn Profile Ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        -3104,
        256
      ]
    },
    {
      "id": "0d3015d5-4f7c-4352-b233-4666733bb816",
      "name": "Wait for LinkedIn Profile",
      "type": "n8n-nodes-base.wait",
      "position": [
        -3568,
        528
      ]
    },
    {
      "id": "97eea42e-0e47-4494-bceb-c0f172456fc6",
      "name": "Reply with Confirmation Msg",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2816,
        -288
      ]
    },
    {
      "id": "ad85be28-c5c8-4a52-98b4-772317740fc0",
      "name": "Increment Loop Counter",
      "type": "n8n-nodes-base.set",
      "position": [
        -3328,
        528
      ]
    },
    {
      "id": "4792c59c-a665-426f-990d-b44155792783",
      "name": "Initialize Loop Counter to Poll for Completion",
      "type": "n8n-nodes-base.set",
      "position": [
        -3936,
        256
      ]
    },
    {
      "id": "7f0e5f13-db43-46ce-a9f2-d5608e0f07d9",
      "name": "Restore Loop Counter",
      "type": "n8n-nodes-base.code",
      "position": [
        -3408,
        256
      ]
    },
    {
      "id": "3e963459-50fd-4326-a2e0-45890e1c10bc",
      "name": "Checked 10x for LinkedIn Profile Data?",
      "type": "n8n-nodes-base.if",
      "position": [
        -3088,
        528
      ]
    },
    {
      "id": "fa9b7243-97ff-41a8-a5fc-50ef75e72ad3",
      "name": "Check LinkedIn Profile Extraction Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3696,
        256
      ]
    },
    {
      "id": "9f93b9f6-b381-4947-8034-dbf37e5ea8d0",
      "name": "Get Fully Extracted LinkedIn Profile Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2832,
        240
      ]
    },
    {
      "id": "4c5e2b97-4c1c-40db-9d4f-89c51c03c939",
      "name": "Reply with Error/Try Again Msg",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -3584,
        -64
      ]
    },
    {
      "id": "9075ffb4-1688-41ed-9e58-f21dd6223dd9",
      "name": "Set Key LinkedIn Profile Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -2384,
        240
      ]
    },
    {
      "id": "3b89d395-f178-4163-8709-96e117c996ac",
      "name": "Set JD Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -560,
        0
      ]
    },
    {
      "id": "21723055-422d-4103-b65a-4811baa34300",
      "name": "Set Selected JD Format",
      "type": "n8n-nodes-base.set",
      "position": [
        528,
        448
      ]
    },
    {
      "id": "87cebfda-e8b8-4e5d-9236-a1db16114fc5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4192,
        -384
      ],
      "parameters": {
        "width": 2048,
        "height": 1248,
        "content": "## Get LinkedIn Profile via Telegram"
      }
    },
    {
      "id": "8903e8c4-5ae9-4d61-a426-7ed450a96c43",
      "name": "Send Msg to Internal Talent Group",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2592,
        -288
      ]
    },
    {
      "id": "0db07b5d-cdce-4020-8d78-77ce2508491b",
      "name": "Send Review Completed Msg to Talent Group",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -880,
        432
      ]
    },
    {
      "id": "de46c695-e870-444e-903d-0efa2d60a94e",
      "name": "Gemini 2.5 Pro-3",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -2000,
        688
      ]
    },
    {
      "id": "77100aff-9497-4915-b803-b55733a0ecb3",
      "name": "Gemini 2.5 Pro-2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -336,
        160
      ]
    },
    {
      "id": "e5af9a04-fa2a-45da-9758-a66b013114e9",
      "name": "Gemini 2.5 Pro-1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -2000,
        -64
      ]
    },
    {
      "id": "2773b269-bddd-4ff2-8eb4-b626ee712698",
      "name": "Gather and Set Final Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -1376,
        432
      ]
    },
    {
      "id": "c38679d4-d14d-4b39-894b-1aaee12d8e78",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1600,
        432
      ]
    },
    {
      "id": "637c9812-3f39-419d-8210-b60b025b92c8",
      "name": "Add Candidate Analysis in GSheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1136,
        432
      ]
    },
    {
      "id": "c3be847a-df8b-4947-ac45-b0b7b7356f1d",
      "name": "Start Msg Sent + Valid LinkedIn Profile URL?",
      "type": "n8n-nodes-base.if",
      "position": [
        -3840,
        -256
      ]
    },
    {
      "id": "90e80421-d74a-40a5-a632-656177579795",
      "name": "Spam Check: Sent  <4 LinkedIn Profiles?",
      "type": "n8n-nodes-base.if",
      "position": [
        -3152,
        -272
      ]
    },
    {
      "id": "0687fa9f-2c46-4858-a4a1-4e1783204719",
      "name": "Reply - Too Many LinkedIn URLs Sent Msg",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -3152,
        -48
      ]
    },
    {
      "id": "d132d927-781d-4bd2-aca1-ff77d4e0f134",
      "name": "Get All Rows Matching Telegram Username",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -3584,
        -272
      ]
    },
    {
      "id": "543325a6-3cf2-42f5-a64b-95be550296c6",
      "name": "Count Rows Matching Telegram Username",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -3360,
        -272
      ]
    },
    {
      "id": "6c09a56b-05c8-4e0d-bc7e-dc485dcdb744",
      "name": "Grab Clean LinkedIn URL",
      "type": "n8n-nodes-base.code",
      "position": [
        -2816,
        -48
      ]
    },
    {
      "id": "8ed28114-ce30-4aab-9847-334a152caac8",
      "name": "JD Match w/Telegram Msg?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1504,
        -272
      ]
    },
    {
      "id": "dfcbb685-4a0b-4592-bbdc-a21edc17e7d8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3376,
        -1328
      ],
      "parameters": {
        "width": 512,
        "height": 912,
        "content": "## Sample Outputs\n### [Google Sheets - LinkedIn AI Candidate Screening - sample](https://docs.google.com/spreadsheets/d/19ZzSG-MyFgdvruWhTozuimYBG-QSvaPhHmqMJqdmJpM/edit?usp=sharing)\n\n\n### Telegram me"
      }
    },
    {
      "id": "9f0beee4-1ee4-4071-8105-caf6a597edd3",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4192,
        -1152
      ],
      "parameters": {
        "width": 784,
        "height": 736,
        "content": "## Troubleshooting\n  * **Telegram bot not responding**: Ensure bot token is correct in \"Receive Telegram Msg to Recruiter Bot\" node, and users have sent `/start` to your bot at least once\n  * **\"Linke"
      }
    },
    {
      "id": "2090e260-0749-4ae7-a74a-2d9773416e37",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5264,
        -1152
      ],
      "parameters": {
        "width": 1040,
        "height": 2544,
        "content": "# **First-Round Telegram + LinkedIn AI Recruiter Assistant**\n  *LinkedIn URL → Scrape → Match → Screen → Decide, all automated*\n\n  This workflow automatically processes candidate LinkedIn profiles sha"
      }
    },
    {
      "id": "72520805-103e-4ad9-a009-f412f850250f",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2864,
        -1184
      ],
      "parameters": {
        "width": 512,
        "height": 768,
        "content": "![](https://i.postimg.cc/rpG2thBv/telegram4.jpg)\n\n"
      }
    },
    {
      "id": "ff7070b9-31cb-434e-9019-6b94b59479d5",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2352,
        -1184
      ],
      "parameters": {
        "width": 512,
        "height": 768,
        "content": "![](https://i.postimg.cc/8Cdgry22/telegram3.jpg)"
      }
    },
    {
      "id": "15541650-4176-4810-94a2-a517760f2f00",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -1232
      ],
      "parameters": {
        "width": 512,
        "height": 816,
        "content": "### Telegram messages from AI recruiter bot in internal group chat\n\n![](https://i.postimg.cc/1z01NWkb/telegram2.jpg)"
      }
    },
    {
      "id": "be19b3fa-1201-4e8a-a100-5283c633f962",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1328,
        -1184
      ],
      "parameters": {
        "width": 512,
        "height": 768,
        "content": "![](https://i.postimg.cc/3wQHNMcz/telegram1.jpg)"
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Gather and Set Final Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set JD Data": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Access JD Files": {
      "ai_tool": [
        [
          {
            "node": "JD Matching Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Detailed JD Matching Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download Selected JD1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini 2.5 Pro-1": {
      "ai_languageModel": [
        [
          {
            "node": "JD Matching Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gemini 2.5 Pro-2": {
      "ai_languageModel": [
        [
          {
            "node": "Detailed JD Matching Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gemini 2.5 Pro-3": {
      "ai_languageModel": [
        [
          {
            "node": "Recruiter Scoring Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Set Selected JD Format",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JD Matching Agent": {
      "main": [
        [
          {
            "node": "JD Match w/Telegram Msg?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "Set JD Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Selected JD": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Restore Loop Counter": {
      "main": [
        [
          {
            "node": "LinkedIn Profile Ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Selected JD1": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Increment Loop Counter": {
      "main": [
        [
          {
            "node": "Checked 10x for LinkedIn Profile Data?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Selected JD Format": {
      "main": [
        [
          {
            "node": "Recruiter Scoring Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Grab Clean LinkedIn URL": {
      "main": [
        [
          {
            "node": "Extract LinkedIn Profile Information",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn Profile Ready?": {
      "main": [
        [
          {
            "node": "Get Fully Extracted LinkedIn Profile Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for LinkedIn Profile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Recruiter Scoring Agent": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "JD Match w/Telegram Msg?": {
      "main": [
        [
          {
            "node": "Download Selected JD",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Transform for Multiple JDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gather and Set Final Data": {
      "main": [
        [
          {
            "node": "Add Candidate Analysis in GSheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for LinkedIn Profile": {
      "main": [
        [
          {
            "node": "Increment Loop Counter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detailed JD Matching Agent": {
      "main": [
        [
          {
            "node": "Match Selected JD Name with Full Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser-1": {
      "ai_outputParser": [
        [
          {
            "node": "JD Matching Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser-2": {
      "ai_outputParser": [
        [
          {
            "node": "Detailed JD Matching Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser-3": {
      "ai_outputParser": [
        [
          {
            "node": "Recruiter Scoring Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Transform for Multiple JDs": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reply with Confirmation Msg": {
      "main": [
        [
          {
            "node": "Send Msg to Internal Talent Group",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Key LinkedIn Profile Data": {
      "main": [
        [
          {
            "node": "JD Matching Agent",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Candidate Analysis in GSheet": {
      "main": [
        [
          {
            "node": "Send Review Completed Msg to Talent Group",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract LinkedIn Profile Information": {
      "main": [
        [
          {
            "node": "Initialize Loop Counter to Poll for Completion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Count Rows Matching Telegram Username": {
      "main": [
        [
          {
            "node": "Spam Check: Sent  <4 LinkedIn Profiles?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Match Selected JD Name with Full Text": {
      "main": [
        [
          {
            "node": "Recruiter Scoring Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Telegram Msg to Recruiter Bot": {
      "main": [
        [
          {
            "node": "Start Msg Sent + Valid LinkedIn Profile URL?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checked 10x for LinkedIn Profile Data?": {
      "main": [
        [],
        [
          {
            "node": "Check LinkedIn Profile Extraction Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get All Rows Matching Telegram Username": {
      "main": [
        [
          {
            "node": "Count Rows Matching Telegram Username",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Spam Check: Sent  <4 LinkedIn Profiles?": {
      "main": [
        [
          {
            "node": "Grab Clean LinkedIn URL",
            "type": "main",
            "index": 0
          },
          {
            "node": "Reply with Confirmation Msg",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Reply - Too Many LinkedIn URLs Sent Msg",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check LinkedIn Profile Extraction Status": {
      "main": [
        [
          {
            "node": "Restore Loop Counter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Fully Extracted LinkedIn Profile Data": {
      "main": [
        [
          {
            "node": "Set Key LinkedIn Profile Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Msg Sent + Valid LinkedIn Profile URL?": {
      "main": [
        [
          {
            "node": "Get All Rows Matching Telegram Username",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Reply with Error/Try Again Msg",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Initialize Loop Counter to Poll for Completion": {
      "main": [
        [
          {
            "node": "Check LinkedIn Profile Extraction Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}