Automatisierung von Bewerbungsscreening und Kandidatenverifizierung mit KI und E-Mail-Parsing

Fortgeschritten

Dies ist ein HR, AI Summarization-Bereich Automatisierungsworkflow mit 14 Nodes. Hauptsächlich werden If, Code, Wait, EmailSend, EmailReadImap und andere Nodes verwendet. Lebenslaufscreening und Kandidatenvalidierung mit KI und E-Mail-Parsing automatisieren

Voraussetzungen
  • Keine besonderen Voraussetzungen, sofort nach Import nutzbar
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "wnbJahytoQE4GFZ3",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "Automate CV Screening & Candidate Validation with AI & Email Parsing",
  "tags": [],
  "nodes": [
    {
      "id": "2c5dae24-563c-4e86-958f-b267b80c7b97",
      "name": "Trigger bei neuer Lebenslauf-E-Mail",
      "type": "n8n-nodes-base.emailReadImap",
      "position": [
        -880,
        60
      ],
      "parameters": {
        "format": "resolved",
        "options": {
          "customEmailConfig": "[\"UNSEEN\", [\"SUBJECT\", \"CV\"]]"
        }
      },
      "credentials": {
        "imap": {
          "id": "zTEGYssr7MSVeCs3",
          "name": "IMAP-test"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec",
      "name": "Text aus PDF-Lebenslauf extrahieren",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -660,
        60
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "attachment_0"
      },
      "typeVersion": 1
    },
    {
      "id": "fd00eedc-3366-4c3c-b9b1-df26c85155cc",
      "name": "Sicherstellen, dass alle Lebenslaufdaten geladen sind",
      "type": "n8n-nodes-base.wait",
      "position": [
        -440,
        60
      ],
      "webhookId": "e13c2199-38bd-4ba8-aca2-1f800685301a",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "059b48de-32c9-41a7-a200-6112457df2e7",
      "name": "Lebenslaufinformationen parsen und strukturieren",
      "type": "n8n-nodes-base.code",
      "position": [
        -220,
        60
      ],
      "parameters": {
        "jsCode": "// Access the extracted PDF text\nconst fileContent = ($input.first().json.text || '').toLowerCase();\nconst keywordsToDepartments = {\n  hr: 'HR',\n  bde: 'BDE',\n  'business development': 'BDE',\n  seo: 'SEO',\n  devops: 'DevOps',\n  developer: 'Development',\n  engineer: 'Engineering',\n  marketing: 'Marketing',\n  sales: 'Sales',\n  support: 'Support',\n  tester: 'QA',\n  qa: 'QA',\n};\n\n// Define a priority order (higher number = higher priority)\nconst priority = {\n  devops: 3,\n  developer: 3,\n  engineer: 3,\n  seo: 2,\n  bde: 2,\n  'business development': 2,\n  marketing: 2,\n  sales: 2,\n  support: 2,\n  tester: 2,\n  qa: 2,\n  hr: 1,\n};\n\n// Find all matching departments with their priorities\nlet matches = [];\nfor (const [keyword, department] of Object.entries(keywordsToDepartments)) {\n  if (fileContent.includes(keyword)) {\n    matches.push({ department, priority: priority[keyword] || 0 });\n  }\n}\n\n// Extract the username (first line of the CV text)\nconst originalText = $input.first().json.text || '';\nconst username = originalText.split('\\n')[0].trim(); // First line, e.g., \"Komal Shah\"\n\n// If matches are found, return the department with the highest priority along with the username\nif (matches.length > 0) {\n  const bestMatch = matches.reduce((best, current) =>\n    current.priority > best.priority ? current : best\n  );\n  return [{ department: bestMatch.department, username }];\n}\n\nreturn [{ department: 'Unknown', username }];"
      },
      "typeVersion": 2
    },
    {
      "id": "709ca3a3-04b6-44d7-bdc4-190c6b5f979f",
      "name": "Lebenslauf auf Pflichtfelder prüfen",
      "type": "n8n-nodes-base.if",
      "position": [
        0,
        60
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.department }}",
              "value2": true,
              "operation": "notEqual"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3093ed8e-cc84-4ca2-9e24-b4ffe2fc0e6f",
      "name": "Gültigen Lebenslauf in Ordner speichern",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        240,
        -140
      ],
      "parameters": {
        "command": "=mkdir -p /home/node/.n8n/resume/{{ $json.department }}/ && echo \"{{ $('Extract Text from PDF CV\t').item.json.text }}\" > /home/node/.n8n/resume/{{ $json.department }}/{{ $json.username.replace(/ /g, '-') }}.pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "bae56e7d-8232-404b-856e-7cc2bb86fffe",
      "name": "Personalabteilung über ungültigen Lebenslauf benachrichtigen",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        260,
        260
      ],
      "parameters": {
        "text": "CV Not Found",
        "options": {},
        "subject": "CV Processing Error",
        "toEmail": "abc@gmail.com",
        "fromEmail": "xyz@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "68fa371e-f91e-415e-ad4c-a83a18fe4ecb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -900,
        -80
      ],
      "parameters": {
        "width": 150,
        "height": 280,
        "content": "Listens for new emails containing CV attachments."
      },
      "typeVersion": 1
    },
    {
      "id": "5a2368ad-226a-45c3-bf2f-be91208d357d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -80
      ],
      "parameters": {
        "color": 4,
        "width": 150,
        "height": 280,
        "content": "Extracts structured details like name, skills, education, experience using AI or custom logic.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e2ba359c-c363-4805-b80a-291ff7c12185",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        -80
      ],
      "parameters": {
        "color": 6,
        "width": 150,
        "height": 280,
        "content": "Verifies presence of essential fields (e.g. name, email, skills) before proceeding.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a0d2f49b-0a2b-4faf-9c26-a8de59095b36",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        100
      ],
      "parameters": {
        "color": 3,
        "width": 150,
        "height": 280,
        "content": "Sends email alert for incomplete or invalid CVs.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b788d954-5d93-4db0-a58f-5fa7f8173aed",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -280
      ],
      "parameters": {
        "color": 2,
        "width": 150,
        "height": 280,
        "content": "Stores successfully validated CVs into a target directory.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a2f60daf-2ae0-4643-ad18-e9fd5fff132b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -80
      ],
      "parameters": {
        "color": 3,
        "width": 150,
        "height": 280,
        "content": "Parses CV content from attached PDF files.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1efb64dc-b917-47d9-9339-85dbae2d2385",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -460,
        -80
      ],
      "parameters": {
        "color": 5,
        "width": 150,
        "height": 280,
        "content": "Pauses until full data is ready for processing.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "128c5a19-ad2a-4426-851f-a9dbf2a9ff17",
  "connections": {
    "2c5dae24-563c-4e86-958f-b267b80c7b97": {
      "main": [
        [
          {
            "node": "3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec": {
      "main": [
        [
          {
            "node": "fd00eedc-3366-4c3c-b9b1-df26c85155cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd00eedc-3366-4c3c-b9b1-df26c85155cc": {
      "main": [
        [
          {
            "node": "059b48de-32c9-41a7-a200-6112457df2e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "709ca3a3-04b6-44d7-bdc4-190c6b5f979f": {
      "main": [
        [
          {
            "node": "3093ed8e-cc84-4ca2-9e24-b4ffe2fc0e6f",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "bae56e7d-8232-404b-856e-7cc2bb86fffe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "059b48de-32c9-41a7-a200-6112457df2e7": {
      "main": [
        [
          {
            "node": "709ca3a3-04b6-44d7-bdc4-190c6b5f979f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Personalwesen, KI-Zusammenfassung

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes14
Kategorie2
Node-Typen8
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34