AI-basierendes Kandidaten-Filtering und Bewerbungsmanagement

Experte

Dies ist ein HR, AI Summarization-Bereich Automatisierungsworkflow mit 18 Nodes. Hauptsächlich werden If, Code, Webhook, EmailSend, GoogleSheets und andere Nodes verwendet. KI-basierte Kandidatenauswahl und Einarbeitungsterminplanung (OpenAI GPT und Google Suite)

Voraussetzungen
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • Google Sheets API-Anmeldedaten
  • OpenAI API Key
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": "pHbBtdjeo2u8avrY",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI Candidate Screening & Interview Scheduler",
  "tags": [],
  "nodes": [
    {
      "id": "6bb2e121-0353-43a0-96f3-1e881f9ea9e9",
      "name": "Webhook - Bewerbung empfangen",
      "type": "n8n-nodes-base.webhook",
      "notes": "📥 ENTRY POINT\n\nThis webhook receives job applications from candidates.\n\nExpected data:\n- Candidate Name\n- Email\n- Phone\n- Resume (URL or text)\n- Cover Letter\n- Years of Experience\n- Skills\n\nURL: https://your-n8n-instance.com/webhook/job-application",
      "position": [
        -1008,
        1552
      ],
      "webhookId": "job-application-webhook",
      "parameters": {
        "path": "job-application",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "8fa4ef36-d737-446c-a4aa-ca7eef8654dc",
      "name": "Haftnotiz - Workflow-Übersicht",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        576
      ],
      "parameters": {
        "color": 3,
        "width": 350,
        "height": 400,
        "content": "## 📋 Workflow Overview\n\nThis workflow automates the complete recruitment process:\n\n1️⃣ Receive applications via webhook\n2️⃣ Store in database/spreadsheet\n3️⃣ AI evaluates candidate fit\n4️⃣ Score and rank candidates\n5️⃣ Send notifications\n6️⃣ Schedule interviews for qualified candidates\n\n**Role:** Automation Specialist\n**AI Used:** OpenAI GPT for evaluation"
      },
      "typeVersion": 1
    },
    {
      "id": "a34130de-94c4-4760-8883-3b778afe6319",
      "name": "Google Sheets - Bewerbung speichern",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "💾 DATA STORAGE\n\nStores all application data in Google Sheets for:\n- Easy tracking and management\n- Historical record keeping\n- Team collaboration\n- Backup of all applications\n\nAlternative: Can use Airtable, PostgreSQL, or MySQL instead",
      "position": [
        -784,
        1552
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "=Applications"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=34yuhedwqre"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "47f948e2-6945-4b41-95fb-7ffc04d488af",
      "name": "Haftnotiz - Speicherinformationen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        1136
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 584,
        "content": "## 📊 Database Storage\n\nApplications are stored with:\n- Timestamp\n- Contact information\n- Experience details\n- Skills list\n- Resume link\n- Current status\n\nThis creates an applicant tracking system (ATS)"
      },
      "typeVersion": 1
    },
    {
      "id": "dc349940-72dc-49bf-b44f-68510c5e923a",
      "name": "OpenAI - KI-Kandidatenbewertung",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "🤖 AI EVALUATION ENGINE\n\nUses GPT-4 to:\n- Analyze candidate qualifications\n- Match skills against job requirements\n- Identify strengths and gaps\n- Provide objective scoring (0-100)\n- Generate hiring recommendation\n\nBenefits:\n- Consistent evaluation criteria\n- Unbiased initial screening\n- Faster processing\n- Detailed insights",
      "position": [
        -560,
        1552
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "=add your model"
        },
        "options": {
          "temperature": 0.3
        },
        "messages": {
          "values": [
            {
              "content": "=Your name is Rayan and you are an expert technical recruiter evaluating candidates for an Automation Specialist position.\n\nJob Requirements:\n- 3+ years of experience in automation\n- Strong skills in n8n, Make.com, or Zapier\n- Programming: Python, JavaScript\n- API integration experience\n- Workflow design expertise\n- Problem-solving abilities\n\nCandidate Information:\nName: {{ $json.body.name }}\nExperience: {{ $json.body.experience }} years\nSkills: {{ $json.body.skills }}\nResume Summary: {{ $json.body.resume }}\n\nEvaluate this candidate and provide:\n1. Overall Score (0-100)\n2. Strengths (3-5 points)\n3. Weaknesses (2-3 points)\n4. Recommendation (Strong Hire / Hire / Maybe / Reject)\n5. Key concerns or highlights\n\nFormat your response as JSON:\n{\n  \"score\": 85,\n  \"recommendation\": \"Hire\",\n  \"strengths\": [\"...\"],\n  \"weaknesses\": [\"...\"],\n  \"summary\": \"...\"\n}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "CDQ16eImh6D4tY15",
          "name": "OpenAi account 2 - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a99cf7ab-03db-4a7e-98fe-4a8025a03cd2",
      "name": "Haftnotiz - KI-Prozess",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -608,
        1136
      ],
      "parameters": {
        "color": 5,
        "width": 204,
        "height": 584,
        "content": "## 🧠 AI Evaluation\n\nThe AI analyzes:\n✓ Experience level match\n✓ Technical skills alignment\n✓ Automation tool proficiency\n✓ Programming capabilities\n✓ Overall candidate fit\n\nOutput: Structured evaluation report"
      },
      "typeVersion": 1
    },
    {
      "id": "2a7f8223-ee02-4c1a-90c4-9cda4ac86831",
      "name": "Code - Bewertung verarbeiten",
      "type": "n8n-nodes-base.code",
      "notes": "⚙️ DATA PROCESSING\n\nThis node:\n- Parses AI evaluation response\n- Extracts structured data (score, recommendation)\n- Combines candidate + evaluation data\n- Determines next step (Interview or Reject)\n- Handles errors gracefully\n\nThreshold: Score ≥ 70 → Interview",
      "position": [
        -336,
        1552
      ],
      "parameters": {
        "jsCode": "// Parse AI response and structure data\nconst aiResponse = $input.first().json.message.content;\nlet evaluation;\n\ntry {\n  // Extract JSON from AI response\n  const jsonMatch = aiResponse.match(/\\{[\\s\\S]*\\}/);\n  evaluation = JSON.parse(jsonMatch[0]);\n} catch (error) {\n  // Fallback if JSON parsing fails\n  evaluation = {\n    score: 50,\n    recommendation: \"Needs Review\",\n    strengths: [\"Unable to parse\"],\n    weaknesses: [\"AI response format error\"],\n    summary: aiResponse\n  };\n}\n\n// Get original application data\nconst applicationData = $('Webhook - Receive Application').first().json.body;\n\n// Combine all data\nreturn {\n  json: {\n    candidate: {\n      name: applicationData.name,\n      email: applicationData.email,\n      phone: applicationData.phone,\n      experience: applicationData.experience,\n      skills: applicationData.skills\n    },\n    evaluation: {\n      score: evaluation.score,\n      recommendation: evaluation.recommendation,\n      strengths: evaluation.strengths,\n      weaknesses: evaluation.weaknesses,\n      summary: evaluation.summary,\n      evaluatedAt: new Date().toISOString()\n    },\n    decision: evaluation.score >= 70 ? \"Interview\" : \"Reject\"\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "890d9265-4b7c-4cee-8541-08ac6dd7832d",
      "name": "IF - Schwellenwertprüfung",
      "type": "n8n-nodes-base.if",
      "notes": "🔀 DECISION POINT\n\nRoutes candidates based on evaluation:\n\n✅ TRUE (Score ≥ 70):\n- Send interview invitation\n- Schedule meeting\n- Update status to 'Interview Scheduled'\n\n❌ FALSE (Score < 70):\n- Send rejection email\n- Update status to 'Rejected'\n- Archive application",
      "position": [
        -112,
        1552
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.decision }}",
              "value2": "Interview",
              "operation": "equals"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d9d8619f-79bf-47d8-b0fd-7f7e9d1054e1",
      "name": "Haftnotiz - Entscheidungslogik",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        1216
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 496,
        "content": "## 🎯 Scoring Logic\n\nScore ≥ 70: Qualified for interview\nScore < 70: Not a fit\n\nThis threshold can be adjusted based on:\n- Role requirements\n- Application volume\n- Hiring urgency"
      },
      "typeVersion": 1
    },
    {
      "id": "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9",
      "name": "E-Mail - Interview-Einladung",
      "type": "n8n-nodes-base.emailSend",
      "notes": "✉️ INTERVIEW INVITATION\n\nSends personalized email to qualified candidates:\n- Congratulatory message\n- Evaluation highlights\n- Next steps information\n- Request for confirmation\n\nAlternative: Use SendGrid, Gmail, or Outlook node",
      "position": [
        112,
        1456
      ],
      "webhookId": "e0dcc54e-4b72-4a8f-af17-f5dd7843f753",
      "parameters": {
        "text": "=Dear {{ $json.candidate.name }},\n\nCongratulations! We were impressed with your application for the Automation Specialist position.\n\nEvaluation Summary:\n- Overall Score: {{ $json.evaluation.score }}/100\n- Recommendation: {{ $json.evaluation.recommendation }}\n\nStrengths:\n{{ $json.evaluation.strengths.join('\\n- ') }}\n\nWe would like to invite you for an interview. Our team will reach out shortly to schedule a convenient time.\n\nPlease reply to confirm your continued interest.\n\nBest regards,\nHR Team",
        "options": {},
        "subject": "Interview Invitation - Automation Specialist Position",
        "toEmail": "={{ $json.candidate.email }}",
        "fromEmail": "hr@company.com"
      },
      "credentials": {
        "smtp": {
          "id": "3QSx1pWoS0BZcK4c",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "695c0973-9c31-47a2-88ec-24b7989089b4",
      "name": "E-Mail - Absage",
      "type": "n8n-nodes-base.emailSend",
      "notes": "✉️ REJECTION NOTICE\n\nSends professional rejection email:\n- Respectful and kind tone\n- Thanks candidate for interest\n- Encourages future applications\n- Maintains company reputation\n\nBest practice: Always send closure to candidates",
      "position": [
        336,
        1648
      ],
      "webhookId": "1c10023a-2b19-46de-a049-c4fb38cb13a0",
      "parameters": {
        "text": "=Dear {{ $json.candidate.name }},\n\nThank you for your interest in the Automation Specialist position at our company.\n\nAfter careful review of your application, we have decided to move forward with other candidates whose experience more closely matches our current requirements.\n\nWe appreciate the time you invested in your application and encourage you to apply for future opportunities that align with your skills.\n\nWe wish you the best in your job search.\n\nBest regards,\nHR Team",
        "options": {},
        "subject": "Application Update - Automation Specialist Position",
        "toEmail": "={{ $json.candidate.email }}",
        "fromEmail": "hr@company.com"
      },
      "credentials": {
        "smtp": {
          "id": "3QSx1pWoS0BZcK4c",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "37081a08-cac7-403e-a6a1-f67b00efd078",
      "name": "Google Calendar - Interview planen",
      "type": "n8n-nodes-base.googleCalendar",
      "notes": "📅 INTERVIEW SCHEDULING\n\nAutomatically creates calendar event:\n- Scheduled 3 days in advance\n- 1-hour duration\n- Includes candidate details\n- Adds evaluation summary\n- Invites candidate + hiring manager\n- Sends calendar invites\n\nAlternative: Use Calendly API integration",
      "position": [
        336,
        1456
      ],
      "parameters": {
        "end": "={{ $now.plus(3, 'days').set({ hour: 11, minute: 0 }).toISO() }}",
        "start": "={{ $now.plus(3, 'days').set({ hour: 10, minute: 0 }).toISO() }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "=9ikjnhy65trfdser4"
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "6ldLmzzYtaqng4pw",
          "name": "Google Calendar account - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "56ed8c49-514c-47e2-a83e-e453ce7894ea",
      "name": "Haftnotiz - E-Mail-Logik",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        1152
      ],
      "parameters": {
        "color": 5,
        "width": 428,
        "height": 656,
        "content": "## 📧 Email Notifications\n\nTwo paths:\n\n1️⃣ HIGH SCORE:\n- Interview invitation\n- Positive feedback\n- Schedule interview\n\n2️⃣ LOW SCORE:\n- Professional rejection\n- Kind closure\n- Future encouragement"
      },
      "typeVersion": 1
    },
    {
      "id": "56eeb778-14d9-41db-b9a6-279d8c4d9027",
      "name": "Update Sheet - Interviewstatus",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "📝 STATUS UPDATE - INTERVIEW\n\nUpdates Google Sheet with:\n- Status: 'Interview Scheduled'\n- AI evaluation score\n- Recommendation level\n- Interview date\n\nThis keeps the ATS current for HR team tracking",
      "position": [
        560,
        1456
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": "Applications",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=koi8uhbvfgtyuj"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "7e36df56-3674-4f34-af49-e3809b946f4b",
      "name": "Update Sheet - Absagestatus",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "📝 STATUS UPDATE - REJECTION\n\nUpdates Google Sheet with:\n- Status: 'Rejected'\n- AI evaluation score\n- Recommendation (for records)\n- Rejection date\n\nMaintains complete audit trail",
      "position": [
        560,
        1648
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=Applications"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=hgt567ikmnhjuio9"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "140accea-6390-4317-ae76-cfad1da6b1ee",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "notes": "📤 WEBHOOK RESPONSE\n\nSends confirmation back to application form:\n- Success status\n- Confirmation message\n- Processing status\n\nThis closes the webhook connection and confirms receipt to the applicant",
      "position": [
        784,
        1552
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ {\"success\": true, \"message\": \"Application received and processed\", \"candidateName\": $json.candidate.name, \"status\": $json.decision} }}"
      },
      "typeVersion": 1
    },
    {
      "id": "2611d5c3-fedf-4a2b-ac0b-21a42ad532eb",
      "name": "Haftnotiz - Abschluss",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        1088
      ],
      "parameters": {
        "color": 5,
        "width": 396,
        "height": 728,
        "content": "## 🎉 Workflow Complete!\n\nFinal steps:\n1. Status updated in database\n2. Emails sent to candidate\n3. Calendar scheduled (if interview)\n4. Response sent to form\n\n**Metrics to Track:**\n- Applications received\n- Average AI score\n- Interview rate\n- Time to process"
      },
      "typeVersion": 1
    },
    {
      "id": "80c5dc1a-90c0-4323-8fa9-a92811241fba",
      "name": "Haftnotiz - Einrichtungsanleitung",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        672
      ],
      "parameters": {
        "color": 4,
        "width": 398,
        "height": 412,
        "content": "## 🔧 Configuration Required\n\n**Environment Variables:**\n- GOOGLE_SHEET_ID: Your Google Sheet ID\n\n**Credentials Needed:**\n1. Google Sheets OAuth2\n2. OpenAI API Key\n3. SMTP Email Account\n4. Google Calendar OAuth2\n\n**Customize:**\n- Job requirements in AI prompt\n- Score threshold (currently 70)\n- Email templates\n- Interview scheduling time"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1f088f30-607a-4797-9576-0dd517138820",
  "connections": {
    "695c0973-9c31-47a2-88ec-24b7989089b4": {
      "main": [
        [
          {
            "node": "7e36df56-3674-4f34-af49-e3809b946f4b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2a7f8223-ee02-4c1a-90c4-9cda4ac86831": {
      "main": [
        [
          {
            "node": "890d9265-4b7c-4cee-8541-08ac6dd7832d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "890d9265-4b7c-4cee-8541-08ac6dd7832d": {
      "main": [
        [
          {
            "node": "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "695c0973-9c31-47a2-88ec-24b7989089b4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9": {
      "main": [
        [
          {
            "node": "37081a08-cac7-403e-a6a1-f67b00efd078",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6bb2e121-0353-43a0-96f3-1e881f9ea9e9": {
      "main": [
        [
          {
            "node": "a34130de-94c4-4760-8883-3b778afe6319",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "56eeb778-14d9-41db-b9a6-279d8c4d9027": {
      "main": [
        [
          {
            "node": "140accea-6390-4317-ae76-cfad1da6b1ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7e36df56-3674-4f34-af49-e3809b946f4b": {
      "main": [
        [
          {
            "node": "140accea-6390-4317-ae76-cfad1da6b1ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dc349940-72dc-49bf-b44f-68510c5e923a": {
      "main": [
        [
          {
            "node": "2a7f8223-ee02-4c1a-90c4-9cda4ac86831",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a34130de-94c4-4760-8883-3b778afe6319": {
      "main": [
        [
          {
            "node": "dc349940-72dc-49bf-b44f-68510c5e923a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "37081a08-cac7-403e-a6a1-f67b00efd078": {
      "main": [
        [
          {
            "node": "56eeb778-14d9-41db-b9a6-279d8c4d9027",
            "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?

Experte - 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
Experte
Anzahl der Nodes18
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ 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