{
  "name": "Automated CV screening and scoring with AI, Gmail, GoogleDrive & Airtable",
  "nodes": [
    {
      "id": "14df0331-5d44-471e-a60b-9931f108764c",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -128,
        64
      ]
    },
    {
      "id": "6c3f54bf-26d8-4863-b91c-d6760b54bfc4",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        144,
        -48
      ]
    },
    {
      "id": "8b8fb671-bd8d-42cc-8a21-1a518eb8c42b",
      "name": "Download file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        368,
        -48
      ]
    },
    {
      "id": "436d2b81-56a7-4cca-a4f3-73fa174ef3d5",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        592,
        -48
      ]
    },
    {
      "id": "659a2bfe-607c-46f4-a8c0-748f900dac7d",
      "name": "Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        976,
        -224
      ]
    },
    {
      "id": "88b31b2a-4e61-485f-a472-d689b198ac9e",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        976,
        -32
      ]
    },
    {
      "id": "6476ff9c-5460-48d2-9dee-b7109692c87c",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        960,
        112
      ]
    },
    {
      "id": "930d6fcb-bcb5-4179-b8d2-00037be73b1a",
      "name": "OpenRouter Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        960,
        352
      ]
    },
    {
      "id": "ff7b1234-947b-45d8-9693-c2d9a3c82fa6",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1344,
        128
      ]
    },
    {
      "id": "f0274105-2a9e-490f-af57-73efb0c7d366",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        1568,
        128
      ]
    },
    {
      "id": "49e498a3-c87b-4d79-9a59-6947324dcb9a",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1808,
        -48
      ]
    },
    {
      "id": "607b4f93-7b37-4293-8844-fd17ded34785",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2064,
        -208
      ]
    },
    {
      "id": "e9ad17fd-e688-4c34-80ce-a79dc572b794",
      "name": "Create a record",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2064,
        64
      ]
    },
    {
      "id": "04901267-ea47-4280-9e19-3e88c9fc7993",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -128,
        -144
      ]
    },
    {
      "id": "34eb4149-0501-4d6d-8dc6-f19a59385d58",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        -416
      ],
      "parameters": {
        "width": null,
        "height": 912,
        "content": "GMAIL TRIGGER:\nListen from emails or forms submissions matching the CV's received for specific job position and fetch attachments."
      }
    },
    {
      "id": "22690685-9e05-4c1b-a798-bd2646e5214d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -416
      ],
      "parameters": {
        "width": null,
        "height": 912,
        "content": "UPLOAD THE FILE:\nIncoming attachment (CV) is uploaded to the configured Google Drive folder and named from the sender."
      }
    },
    {
      "id": "73d68e7c-705c-49e0-a2af-8bea13a69091",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 912,
        "content": "DOWNLOAD THE ATTACHMENT (CV):\nThe stored file is downloaded by ID so it can be read."
      }
    },
    {
      "id": "55a5c9bd-9602-4875-aae5-d4497e06b067",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -416
      ],
      "parameters": {
        "width": null,
        "height": 912,
        "content": "EXTRACT FROM FILE:\nExtract from File converts the CV (PDF) into plain text."
      }
    },
    {
      "id": "05bd2380-4208-4f0e-95be-9f0c0c542721",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -416
      ],
      "parameters": {
        "width": 384,
        "height": 912,
        "content": "Two parallel AI paths:\n\nQuick structured extraction: Information Extractor uses a small schema (name, email, phone) + LM helper to pull contact fields.\n\nFull CV analysis: AI Agent runs a large system "
      }
    },
    {
      "id": "fdce16c8-1138-4bb6-9925-efe4357a9f80",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        -416
      ],
      "parameters": {
        "width": null,
        "height": 912,
        "content": "Normalize agent output: Edit Fields maps the agent response into output."
      }
    },
    {
      "id": "9dd5f08c-6528-4650-b411-5e645413ce6e",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        -416
      ],
      "parameters": {
        "width": 208,
        "height": 912,
        "content": "Parse & clean: \nCode runs JS to extract the three summary sections plus score and justification from the agent text (regex-based)."
      }
    },
    {
      "id": "90db96b2-a8b0-44a4-8f75-05552c5c1ee1",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        -416
      ],
      "parameters": {
        "width": 208,
        "height": 912,
        "content": "Merge datasets: \nMerge combines the schema extraction (contact info) with the AI-parsed summary/score."
      }
    },
    {
      "id": "d699e192-b79d-4283-b531-59ff75313ffc",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        -416
      ],
      "parameters": {
        "width": 272,
        "height": 912,
        "content": "Store results: \nFinal record is appended to Google Sheets and inserted into Airtable for tracking, reporting, or downstream workflows."
      }
    }
  ],
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create a record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Information Extractor",
            "type": "main",
            "index": 0
          },
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}