{
  "name": "Automate CV screening & analysis with Telegram, Gemini AI & Google Workspace",
  "nodes": [
    {
      "id": "cbc5c20a-7d3e-49b9-8c05-9e5657cb7ecf",
      "name": "Message Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1232,
        352
      ]
    },
    {
      "id": "dcd295a9-1f02-40e3-8cdc-ecba77eb5a86",
      "name": "File Validation",
      "type": "n8n-nodes-base.if",
      "position": [
        -944,
        352
      ]
    },
    {
      "id": "ab833633-da0d-4977-ab62-329b94a9a6eb",
      "name": "Download CV File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -624,
        256
      ]
    },
    {
      "id": "a4d42d7f-dcc8-4fc0-8ffd-e8113d7b74b7",
      "name": "Download Actual File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -384,
        256
      ]
    },
    {
      "id": "bfc4232c-670f-4f0b-95a6-ae980cdc1f00",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        192,
        496
      ]
    },
    {
      "id": "e91d4847-c1f0-4600-94d1-2ff61da3e68f",
      "name": "Extract cv content",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        0,
        256
      ]
    },
    {
      "id": "84a28f1c-27f5-4aa1-9f71-1c3464e213d2",
      "name": "Qualify CV Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        192,
        256
      ]
    },
    {
      "id": "b4721c8b-26b4-4d16-a028-4bba586de195",
      "name": "PDF Request",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -928,
        688
      ]
    },
    {
      "id": "299bf1d9-da18-422b-86fc-88e3ced3a966",
      "name": "Store CV",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        0,
        0
      ]
    },
    {
      "id": "9a11470f-8693-4305-a747-589e10883227",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        0,
        544
      ]
    },
    {
      "id": "d1e8219e-1a93-4d2b-9b95-2788c46f20b8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1280,
        272
      ],
      "parameters": {
        "width": 192,
        "height": 224,
        "content": "Captures incoming CV PDFs from candidates"
      }
    },
    {
      "id": "f54b90e6-6f6e-47cb-ba08-5bb30a19c56b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -992,
        272
      ],
      "parameters": {
        "width": 192,
        "height": 224,
        "content": "Filters out non-PDF submissions"
      }
    },
    {
      "id": "8a4f5f7e-4629-442d-a615-ec316dab9107",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        176
      ],
      "parameters": {
        "width": 192,
        "height": 208,
        "content": " Gets the file download link from Telegram"
      }
    },
    {
      "id": "dbffccb2-9d00-41ca-b72a-77552d4bef79",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -432,
        176
      ],
      "parameters": {
        "width": 192,
        "height": 208,
        "content": "Downloads the actual PDF file"
      }
    },
    {
      "id": "cda722d0-a7c3-4ced-bb09-158eea9007d3",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        576
      ],
      "parameters": {
        "width": 176,
        "height": 256,
        "content": " Sends a message asking the user to resend the CV in PDF format if validation fails."
      }
    },
    {
      "id": "83aad1ce-0738-483d-a0df-9d04324d26cf",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -64
      ],
      "parameters": {
        "width": 192,
        "height": 208,
        "content": "Uploads the downloaded PDF file to Google Drive."
      }
    },
    {
      "id": "7d5e134a-cc84-43b0-9e43-f258e1cc28b3",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        448
      ],
      "parameters": {
        "width": 192,
        "height": 240,
        "content": "Combines the file storage and download paths to pass data forward to extraction."
      }
    },
    {
      "id": "8cf9d727-a25c-48e9-a65f-e621c0ea7ff2",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        192
      ],
      "parameters": {
        "width": 176,
        "height": 224,
        "content": "Extracts text content from the uploaded PDF file for analysis."
      }
    },
    {
      "id": "dc51feca-11d5-4f83-8b50-82d45929d2d1",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        160
      ],
      "parameters": {
        "width": null,
        "height": 240,
        "content": "Analyzes CV text and extracts structured data like name, phone number, email, experience, and job title."
      }
    },
    {
      "id": "b9cfbd21-df7c-4d25-ad4a-c02c1ff3e533",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        160
      ],
      "parameters": {
        "width": 192,
        "height": 256,
        "content": " Cleans and maps the structured JSON AI output into individual fields for use in Google Sheets"
      }
    },
    {
      "id": "59bbda91-ff07-437d-a384-1e513faeaa3a",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        144
      ],
      "parameters": {
        "width": 224,
        "height": 272,
        "content": "Saves the extracted candidate information and CV link into a Google Sheet, updating existing entries if needed."
      }
    },
    {
      "id": "ad464c7a-8b69-47ad-9b9f-8ba57af6d728",
      "name": "Clean & Map Extracted Data",
      "type": "n8n-nodes-base.set",
      "position": [
        608,
        256
      ]
    },
    {
      "id": "f0c044fa-2d29-4db6-b723-a735f799aef7",
      "name": "Save Candidate Info to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        256
      ]
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Extract cv content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store CV": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "File Validation": {
      "main": [
        [
          {
            "node": "Download CV File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "PDF Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message Trigger": {
      "main": [
        [
          {
            "node": "File Validation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download CV File": {
      "main": [
        [
          {
            "node": "Download Actual File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Qualify CV Agent": {
      "main": [
        [
          {
            "node": "Clean & Map Extracted Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract cv content": {
      "main": [
        [
          {
            "node": "Qualify CV Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Actual File": {
      "main": [
        [
          {
            "node": "Store CV",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Qualify CV Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Clean & Map Extracted Data": {
      "main": [
        [
          {
            "node": "Save Candidate Info to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}