Demo - Vorlage teilen - Kandidaten-Shortlist aus Stellenbeschreibung erstellen

Experte

Dies ist ein Miscellaneous, AI Summarization, Multimodal AI-Bereich Automatisierungsworkflow mit 40 Nodes. Hauptsächlich werden Set, Limit, Switch, Airtable, SplitOut und andere Nodes verwendet. KI-Rekrutierungsprozess: Von der Stelle zur Kandidaten-Shortlist mit Apollo und Airtable

Voraussetzungen
  • Airtable API Key
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • OpenAI API Key
  • Anthropic 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": "wXaLPxOXY9W7u3s5",
  "meta": {
    "instanceId": "0159916c04d508cd950e3baa00a9370011011fbb66518ddb067482b4608c554f",
    "templateCredsSetupCompleted": true
  },
  "name": "DEMO - TEMPLATE TO SHARE - Build Candidate Shortlist from Job Description",
  "tags": [
    {
      "id": "Y8jwMvLESMhmi72N",
      "name": "DEMO",
      "createdAt": "2025-05-01T07:54:32.551Z",
      "updatedAt": "2025-05-01T07:54:32.551Z"
    }
  ],
  "nodes": [
    {
      "id": "969da01e-2879-4ce1-8cfa-301071ec9950",
      "name": "Bei Formularübermittlung",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -384,
        0
      ],
      "webhookId": "7de1e740-aad1-45f6-8215-f8679930fbff",
      "parameters": {
        "options": {},
        "formTitle": "Job Input",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Job Title",
              "requiredField": true
            },
            {
              "fieldLabel": "Job Description",
              "requiredField": true
            },
            {
              "fieldLabel": "Location",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Target Companies",
              "placeholder": "Comma separated domains of target companies to source talent from"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4a5133d1-5fe7-442a-adc5-d7768ea67da0",
      "name": "Felder bearbeiten",
      "type": "n8n-nodes-base.set",
      "position": [
        1632,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2ebc52f4-1cb1-4b75-b58e-4259646ac1c9",
              "name": "LinkedIn_profile",
              "type": "string",
              "value": "={{ Object.entries($json).map(([key, value]) => `${key}:${value}`).join(', ') }}"
            },
            {
              "id": "dfb6ce70-c157-4bef-8dd4-4282acaa0dcb",
              "name": "employment_history",
              "type": "string",
              "value": "={{ \n  $json.employment_history.map(item => \n    (item.title || \"Information not available\") + \", \" + \n    (item.organization_name || \"Information not available\") + \", \" + \n    (item.start_date || \"Information not available\") + \", \" + \n    (item.current ? \"Current Role: Yes\" : (item.end_date || \"Information not available\") + \", Current Role: No\")\n  ).join(\", \")\n}}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
      "name": "Automatisch korrigierender Output-Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        1088,
        400
      ],
      "parameters": {
        "options": {
          "prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "44a619cc-dd31-4d5f-b92f-de9698d8bf5d",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1072,
        560
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b13f8c75-28f2-4354-8d70-bf0fa6c0337b",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1184,
        560
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"candidate_name\": {\n      \"type\": \"string\",\n      \"description\": \"The full name of the candidate from the LinkedIn profile.\"\n    },\n    \"candidate_linkedinUrl\": {\n      \"type\": \"string\",\n      \"format\": \"uri\",\n      \"description\": \"The LinkedIn profile URL of the candidate.\"\n    },\n    \"job_title_target\": {\n      \"type\": \"string\",\n      \"description\": \"The role title extracted from the job description.\"\n    },\n    \"experience_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's experience fits the role requirements.\"\n    },\n    \"industry_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's past industries align with the target industry.\"\n    },\n    \"seniority_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on whether the candidate's seniority matches the role's level.\"\n    },\n    \"general_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short overall assessment (≤ 40 words) summarizing the candidate's general fit.\"\n    },\n    \"general_fit_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 5,\n      \"description\": \"General fit score: 5 = perfect fit, 4 = strong fit, 3 = moderate fit, 2 = weak fit, 1 = very weak fit, 0 = no fit.\"\n    }\n  },\n  \"required\": [\n    \"candidate_name\",\n    \"candidate_linkedinUrl\",\n    \"job_title_target\",\n    \"experience_fit_reason\",\n    \"industry_fit_reason\",\n    \"seniority_fit_reason\",\n    \"general_fit_reason\",\n    \"general_fit_score\"\n  ],\n  \"additionalProperties\": false\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "a0bfc042-3318-4532-b017-11c8a0c29a04",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        1328,
        224
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Score 4-5",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "963fcbc8-28dd-4a9d-b6bd-b41c3c691005",
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.output.general_fit_score }}",
                    "rightValue": 4
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "07044fd4-a20f-4156-876a-59769fc7265e",
      "name": "Felder bearbeiten1",
      "type": "n8n-nodes-base.set",
      "position": [
        1584,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2bbc9e9b-9aba-4e7a-b6d8-386c4a9484ed",
              "name": "Name",
              "type": "string",
              "value": "={{ $json.output.candidate_name }}"
            },
            {
              "id": "371f7da1-6d6a-4618-b04e-423db8024728",
              "name": "LinkedIn",
              "type": "string",
              "value": "={{ $json.output.candidate_linkedinUrl }}"
            },
            {
              "id": "e91b50b2-dcd6-4282-ac4e-90c1034d654a",
              "name": "Title",
              "type": "string",
              "value": "={{ $json.output.job_title_target }}"
            },
            {
              "id": "6e4abdd7-4e14-4640-9666-646227029d75",
              "name": "Experience Fit",
              "type": "string",
              "value": "={{ $json.output.experience_fit_reason }}"
            },
            {
              "id": "e22b3285-3ab5-4134-b833-9055ee43b06c",
              "name": "Industry Fit",
              "type": "string",
              "value": "={{ $json.output.industry_fit_reason }}"
            },
            {
              "id": "70c74e59-8612-41de-9275-e79f513e0df6",
              "name": "Seniority Fit",
              "type": "string",
              "value": "={{ $json.output.seniority_fit_reason }}"
            },
            {
              "id": "fb11ff0f-60c1-4b63-8db3-dae5269fea64",
              "name": "General Fit",
              "type": "string",
              "value": "={{ $json.output.general_fit_reason }}"
            },
            {
              "id": "0cf1345c-aae8-48d8-9e2d-0b9f8d74b438",
              "name": "Score",
              "type": "string",
              "value": "={{ $json.output.general_fit_score }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0210a953-a2a9-413e-8aaa-088b18ae65dd",
      "name": "LinkedIn Profile Enrichment",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2032,
        224
      ],
      "parameters": {
        "url": "https://real-time-data-enrichment.p.rapidapi.com/get-profile-data-by-url",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 4000
            }
          }
        },
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.LinkedIn }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "real-time-data-enrichment.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "<YOUR-API-KEY>"
            }
          ]
        }
      },
      "retryOnFail": false,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "b7cda9cc-7d41-43e6-a35b-2fb04e1d2d2c",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2208,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
      "name": "Automatisch korrigierender Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        2320,
        432
      ],
      "parameters": {
        "options": {
          "prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cbd1b94c-e226-43fb-9038-ddfb50b3f95c",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2320,
        624
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e5f163d5-f202-425b-912e-19b57f53cb0b",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2464,
        624
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"summary_fit_score\": \"High\",\n  \"executive_summary\": \"John Doe shows a strong match for the Senior Account Executive role, bringing 5+ years of SaaS sales experience with consistent overperformance in quota-carrying roles.\",\n  \"title_alignment\": {\n    \"fit_rating\": \"High\",\n    \"reasoning\": \"Currently a Senior AE at a leading SaaS company; prior experience as AE and BDR.\"\n  },\n  \"skill_alignment\": {\n    \"core_skills\": \"Solid experience with outbound sales, CRM management, quota attainment.\",\n    \"nice_to_have_skills\": \"Some exposure to HubSpot, but limited experience with multi-channel outbound sequences.\",\n    \"reasoning\": \"Demonstrated sales process ownership and closing capabilities across multiple roles.\"\n  },\n  \"experience_alignment\": {\n    \"industry_experience\": \"Primarily SaaS startups, ideal for client context.\",\n    \"seniority_experience\": \"Progressed from BDR to AE to Senior AE within 5 years.\",\n    \"company_types\": \"Worked in 50-200 FTE SaaS companies, matches client's growth stage.\",\n    \"reasoning\": \"Career progression and company types align closely with client needs.\"\n  },\n  \"education_alignment\": {\n    \"fit_rating\": \"Medium\",\n    \"reasoning\": \"Bachelor's degree in Business; no advanced degree but not required.\"\n  },\n  \"cultural_fit_indicators\": {\n    \"likely_fit\": \"Yes\",\n    \"reasoning\": \"Profile indicates resilience, high energy, and interest in fast-paced environments.\"\n  },\n  \"potential_red_flags\": [],\n  \"additional_positive_signals\": [\n    \"President's Club winner 2022, LinkedIn recommendations from former managers.\"\n  ],\n  \"final_recommendation\": {\n    \"recommendation\": \"Strong Yes\",\n    \"next_steps_suggested\": \"Recommend client schedule a first-round interview.\"\n  }\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "d3b3ac81-05b7-43da-8fb0-9adce71dd23f",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        2624,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-3-7-sonnet-20250219",
          "cachedResultName": "Claude 3.7 Sonnet"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "0yBOie05CA6IsSGQ",
          "name": "Anthropic Key"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
      "name": "Automatisch korrigierender Output Parser2",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        2752,
        432
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "1da9e1e4-c00a-42b9-ae90-3839a377bf60",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2720,
        624
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8568fb71-172a-4289-bcde-c45328e88dde",
      "name": "Structured Output Parser2",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2848,
        624
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\"Email_Subject\": \"...\",\n\"Email_Body\": \"...\",\n\"LinkedIn_DM\": \"...\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "b484f8dc-cdb8-4677-9bc1-32c3b6445518",
      "name": "Kandidaten in AirTable erstellen",
      "type": "n8n-nodes-base.airtable",
      "position": [
        3024,
        224
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appe7RcePt0Nv0Oar",
          "cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar",
          "cachedResultName": "Candidate Search - From Job Description"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblg5upaJXNvBVCcK",
          "cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar/tblg5upaJXNvBVCcK",
          "cachedResultName": "Candidates"
        },
        "columns": {
          "value": {
            "Name": "={{ $('LinkedIn Profile Enrichment').item.json.firstName }} {{ $('LinkedIn Profile Enrichment').item.json.lastName }}",
            "Location": "={{ $('LinkedIn Profile Enrichment').item.json.geo.full }}",
            "Image URL": "={{ $('LinkedIn Profile Enrichment').item.json.profilePicture }}",
            "Job Title": "={{ $('LinkedIn Profile Enrichment').item.json.position[0].title }}",
            "Email Body": "={{ $json.output.Email_Body }}",
            "Job Searches": "={{ [ $('Add Job to AirTable').first().json.id ] }}",
            "LinkedIn URL": "={{ $('Edit Fields1').item.json.LinkedIn }}",
            "Email Subject": "={{ $json.output.Email_Subject }}",
            "Skill Alignment": "={{ $('Create Candidate Assessment').item.json.output.skill_alignment.reasoning }}",
            "Title Alignment": "={{ $('Create Candidate Assessment').item.json.output.title_alignment.reasoning }}",
            "LinkedIn Message": "={{ $json.output.LinkedIn_DM }}",
            "Positive Signals": "={{ $('Create Candidate Assessment').item.json.output.additional_positive_signals.join('\\n\\n') }}",
            "Executive Summary": "={{ $('Create Candidate Assessment').item.json.output.executive_summary }}",
            "Summary Fit Score": "={{ $('Create Candidate Assessment').item.json.output.summary_fit_score }}",
            "Industry Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.industry_experience }}",
            "Nice To Have Skills": "={{ $('Create Candidate Assessment').item.json.output.skill_alignment.nice_to_have_skills }}",
            "Potential Red Flags": "={{ $('Create Candidate Assessment').item.json.output.potential_red_flags.join('\\n\\n') }}",
            "Seniority Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.seniority_experience }}",
            "Experience Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.reasoning }}",
            "Final Recommendation": "={{ $('Create Candidate Assessment').item.json.output.final_recommendation.recommendation }}",
            "Educational Alignment": "={{ $('Create Candidate Assessment').item.json.output.education_alignment.reasoning }}",
            "Next Steps Suggestion": "={{ $('Create Candidate Assessment').item.json.output.final_recommendation.next_steps_suggested }}",
            "Title Alignment Score": "={{ $('Create Candidate Assessment').item.json.output.title_alignment.fit_rating }}",
            "Company Type Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.company_types }}",
            "Educational Alignment Score": "={{ $('Create Candidate Assessment').item.json.output.education_alignment.fit_rating }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn URL",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "LinkedIn URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Searches",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Searches",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title (from Job Searches)",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Job Title (from Job Searches)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description (from Job Searches)",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Job Description (from Job Searches)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Location (from Job Searches)",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Job Location (from Job Searches)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary Fit Score",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Summary Fit Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Executive Summary",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Executive Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title Alignment Score",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title Alignment Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Nice To Have Skills",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Nice To Have Skills",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Skill Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Skill Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Industry Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Industry Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Seniority Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Seniority Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Type Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Company Type Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Experience Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Experience Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Educational Alignment Score",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Educational Alignment Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Educational Alignment",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Educational Alignment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Potential Red Flags",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Potential Red Flags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Positive Signals",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Positive Signals",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Final Recommendation",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Final Recommendation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Next Steps Suggestion",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Next Steps Suggestion",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Subject",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Body",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email Body",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn Message",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "LinkedIn Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image URL",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Image URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Displayed Image",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Displayed Image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Profile Image",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Profile Image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Core Skills",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Core Skills",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "lVVmIfUpFyo5fIop",
          "name": "AS - AirTable New"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0d40609c-7358-4974-b22d-525e0952e748",
      "name": "Stelle zu AirTable hinzufügen",
      "type": "n8n-nodes-base.airtable",
      "position": [
        48,
        0
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appe7RcePt0Nv0Oar",
          "cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar",
          "cachedResultName": "Candidate Search - From Job Description"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblx9aVcTjU7nm0fW",
          "cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar/tblx9aVcTjU7nm0fW",
          "cachedResultName": "Job Searches"
        },
        "columns": {
          "value": {
            "Job Title": "={{ $json[\"Job Title\"] }}",
            "Job Location": "={{ $json.Location }}",
            "Job Description": "={{ $json[\"Job Description\"] }}"
          },
          "schema": [
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Location",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Candidates",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Candidates",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Consultant",
              "type": "array",
              "display": true,
              "options": [
                {
                  "name": "Fred",
                  "value": "Fred"
                },
                {
                  "name": "Nik",
                  "value": "Nik"
                },
                {
                  "name": "Fabi",
                  "value": "Fabi"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Consultant",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "lVVmIfUpFyo5fIop",
          "name": "AS - AirTable New"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "36f9423a-cd41-49e0-aa29-0053be48e51c",
      "name": "Kandidatenbewertung erstellen",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2224,
        224
      ],
      "parameters": {
        "text": "=LinkedIn Profile:\n\n{{JSON.stringify($json)}}\n\nNotes and Initial Assessment:\nExperience Fit: {{ $('Edit Fields1').item.json['Experience Fit'] }}\nIndustry Fit: {{ $('Edit Fields1').item.json['Industry Fit'] }}\nSeniroity Fit: {{ $('Edit Fields1').item.json['Seniority Fit'] }}\nGeneral Fit: {{ $('Edit Fields1').item.json['General Fit'] }}\n\nJob Title: {{ $('Set Fields').item.json['Job Title'] }}\nJob Description: {{ $('Set Fields').item.json['Job Description'] }}\n",
        "messages": {
          "messageValues": [
            {
              "message": "Instruction:\nYou are an expert agency recruiter.\nYou are evaluating a candidate for an open position on behalf of a client.\nYou are given:\n\na Job Title\n\na Job Description\n\na LinkedIn Profile of the candidate (full details: experiences, education, skills, etc.)\n\na Short Human-Written Assessment (summary/notes)\n\nYour task is to create a detailed fit assessment based on these inputs.\nYou must think like a recruiter whose goal is to provide a client with a clear, reasoned judgment on the candidate’s fit for the role.\n\n⚡ Important:\n\nAnalyze how well the candidate's experience, skills, seniority, industry background, and education match the role.\n\nEvaluate both hard skills and soft skills based on available information.\n\nIdentify gaps or red flags if any — don't sugarcoat.\n\nIf there are positive signals (e.g., promotions, relevant industries, certifications, KPIs achieved), highlight them.\n\n✅ The output must be structured as a JSON object with the following fields:\n\n{\n  \"summary_fit_score\": \"High / Medium / Low\",\n  \"executive_summary\": \"Short paragraph summarizing overall fit.\",\n  \"title_alignment\": {\n    \"fit_rating\": \"High / Medium / Low\",\n    \"reasoning\": \"Explain how current and past titles align or don't align.\"\n  },\n  \"skill_alignment\": {\n    \"core_skills\": \"Evaluate match on must-have skills.\",\n    \"nice_to_have_skills\": \"Evaluate match on nice-to-have skills.\",\n    \"reasoning\": \"Explain the skill fit with examples from the profile.\"\n  },\n  \"experience_alignment\": {\n    \"industry_experience\": \"Does the candidate have relevant industry background?\",\n    \"seniority_experience\": \"Is the candidate operating at the right seniority level?\",\n    \"company_types\": \"Have they worked at similar types of companies (startup, enterprise, agency, etc.)?\",\n    \"reasoning\": \"Break down how the experience history fits.\"\n  },\n  \"education_alignment\": {\n    \"fit_rating\": \"High / Medium / Low\",\n    \"reasoning\": \"Evaluate if the education matches client expectations.\"\n  },\n  \"cultural_fit_indicators\": {\n    \"likely_fit\": \"Yes / No / Unknown\",\n    \"reasoning\": \"Based on profile wording, background, working style indicators.\"\n  },\n  \"potential_red_flags\": [\n    \"List any gaps, inconsistent history, short tenures, irrelevant background.\"\n  ],\n  \"additional_positive_signals\": [\n    \"List promotions, awards, certifications, high-profile clients, other strong positives.\"\n  ],\n  \"final_recommendation\": {\n    \"recommendation\": \"Strong Yes / Soft Yes / Neutral / Soft No / Strong No\",\n    \"next_steps_suggested\": \"E.g., Recommend client interview; recommend technical screening; pass for now.\"\n  }\n}\n\nKey Principles for Assessment:\nEvidence-Based: Always link reasoning to actual profile data (titles, descriptions, tenure, etc.).\n\nBalanced: Highlight both strengths and concerns — not just one side.\n\nClient-First Thinking: Frame the assessment in a way that answers:\n➔ \"Would my client be happy interviewing this person based on this profile?\"\n\nExample Output Preview:\n\n{\n  \"summary_fit_score\": \"High\",\n  \"executive_summary\": \"John Doe shows a strong match for the Senior Account Executive role, bringing 5+ years of SaaS sales experience with consistent overperformance in quota-carrying roles.\",\n  \"title_alignment\": {\n    \"fit_rating\": \"High\",\n    \"reasoning\": \"Currently a Senior AE at a leading SaaS company; prior experience as AE and BDR.\"\n  },\n  \"skill_alignment\": {\n    \"core_skills\": \"Solid experience with outbound sales, CRM management, quota attainment.\",\n    \"nice_to_have_skills\": \"Some exposure to HubSpot, but limited experience with multi-channel outbound sequences.\",\n    \"reasoning\": \"Demonstrated sales process ownership and closing capabilities across multiple roles.\"\n  },\n  \"experience_alignment\": {\n    \"industry_experience\": \"Primarily SaaS startups, ideal for client context.\",\n    \"seniority_experience\": \"Progressed from BDR to AE to Senior AE within 5 years.\",\n    \"company_types\": \"Worked in 50-200 FTE SaaS companies, matches client's growth stage.\",\n    \"reasoning\": \"Career progression and company types align closely with client needs.\"\n  },\n  \"education_alignment\": {\n    \"fit_rating\": \"Medium\",\n    \"reasoning\": \"Bachelor's degree in Business; no advanced degree but not required.\"\n  },\n  \"cultural_fit_indicators\": {\n    \"likely_fit\": \"Yes\",\n    \"reasoning\": \"Profile indicates resilience, high energy, and interest in fast-paced environments.\"\n  },\n  \"potential_red_flags\": [],\n  \"additional_positive_signals\": [\n    \"President's Club winner 2022, LinkedIn recommendations from former managers.\"\n  ],\n  \"final_recommendation\": {\n    \"recommendation\": \"Strong Yes\",\n    \"next_steps_suggested\": \"Recommend client schedule a first-round interview.\"\n  }\n}\n\n"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "d862618e-277a-4834-bfc0-d136e9f4d3e2",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        1808,
        224
      ],
      "parameters": {
        "maxItems": 50
      },
      "typeVersion": 1
    },
    {
      "id": "be084c1b-b26c-44ce-83d2-36b30c3fbf1f",
      "name": "Limit1",
      "type": "n8n-nodes-base.limit",
      "position": [
        48,
        224
      ],
      "parameters": {
        "maxItems": 50
      },
      "typeVersion": 1
    },
    {
      "id": "0eafb581-632e-464e-8b1c-ebd0955adf2e",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -224
      ],
      "parameters": {
        "content": "## CRM Lookup\nAdditional lookup for candidates already in your CRM based on filter tags."
      },
      "typeVersion": 1
    },
    {
      "id": "cad1b0ef-9e8f-4582-b046-c05b9726979e",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        -208
      ],
      "parameters": {
        "color": 5,
        "content": "## Job Title Mutation \nGenerate 5 similar job titles based on the job description to enhance search radius"
      },
      "typeVersion": 1
    },
    {
      "id": "c60d77f0-a047-4b50-82ab-ae2084cff794",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        368
      ],
      "parameters": {
        "color": 5,
        "content": "## Scoring \nScore the candidate initially on a scale of 0-5 based on the job description and their Apollo profile."
      },
      "typeVersion": 1
    },
    {
      "id": "07fefcc3-2f4c-4240-8d77-5a9e006c7567",
      "name": "GPT-4.1-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        464,
        400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
      "name": "Bewertung und Vorqualifizierung",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        480,
        224
      ],
      "parameters": {
        "text": "=You are Job-Fit Reasoning Agent.\\nYour task: Given one LinkedIn profile (in JSON format) and one job description (in plain text), output a recruiter-ready fit analysis focused on clear reasoning and a general fit score.\\n\\nLinkedIn Profile to analyze: {{ $json.LinkedIn_profile }}\\nCandidates Employment History:\\n{{ $json.employment_history }}\\n\\nJob Description to Compare with: {{ $('Set Fields').item.json['Job Title'] }} - {{ $('Set Fields').item.json['Job Description'] }}\n\n\\n\\nYou must research the companies mentioned on the work experiences to understand their industry and product to better assess the industry fit based on the companies the candidate worked at. Make sure to gather as much information about their role and company as possible to assess their skills and expertise.\\n\\nYou must analyze and output both:\\n\\nclear reasoning for these four aspects:\\nexperience_fit_reason\\nindustry_fit_reason\\nseniority_fit_reason\\ngeneral_fit_reason\\n\\na general_fit_score (integer from 0 to 5) where:\\n5 = perfect fit,\\n4 = strong fit,\\n3 = moderate fit,\\n2 = weak fit,\\n1 = very weak fit,\\n0 = no fit\\n\\nINPUTS\\n\\nYou will receive:\\n\\ncandidate_profile\\njob_description\\n\\nOUTPUT FORMAT\\n\\nYou must return exactly one minified JSON object — no line breaks, no Markdown, no commentary.\\n\\nThe structure must be:\\n\\n\\\"candidate_name\\\": \\\"\\\",\\n\\n\\\"candidate_linkedinUrl\\\": \\\"\\\",\\n\\\"job_title_target\\\": \\\"\\\",\\n\\\"experience_fit_reason\\\": \\\"\\\",\\n\\\"industry_fit_reason\\\": \\\"\\\",\\n\\\"seniority_fit_reason\\\": \\\"\\\",\\n\\\"general_fit_reason\\\": \\\"\\\",\\n\\\"general_fit_score\\\": 0\\n\\nFormatting Rules:\\n\\nEach reason must be ≤ 40 words, concise and fact-based.\\ngeneral_fit_score must be an integer between 0 and 5.\\nIf any information is missing, mention it conservatively (\\\"Data missing\\\" or \\\"Information not available\\\").\\nMust output valid JSON immediately.\\n\\nCHAIN OF THOUGHTS TO FOLLOW\\n\\nUNDERSTAND the candidate profile and job description.\\nIDENTIFY key experiences, industries, and seniority levels.\\nCROSS-REFERENCE company industries using public information.\\nANALYZE fit for experience, industry, and seniority separately.\\nSUMMARIZE the overall fit in one general reasoning sentence.\\nDECIDE the general_fit_score based on the overall strength of the match.\\nOUTPUT the result following the exact JSON structure.\\n\\nWHAT NOT TO DO\\n\\nNEVER output numeric scores for individual aspects other than general_fit_score.\\nNEVER exceed 40 words per reason.\\nNEVER format in Markdown, tables, or non-JSON formats.\\nNEVER omit any of the six required fields.\\nNEVER guess information.\\nIf uncertain or data is missing, state it clearly.\\nNEVER write vague, generic, or non-factual reasons.",
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
      "name": "Datenstrukturierung",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "onError": "continueRegularOutput",
      "position": [
        928,
        224
      ],
      "parameters": {
        "text": "=Format the input into the following JSON:\n\n{\n  \"type\": \"object\",\n  \"properties\": {\n    \"candidate_name\": {\n      \"type\": \"string\",\n      \"description\": \"The full name of the candidate from the LinkedIn profile.\"\n    },\n    \"candidate_linkedinUrl\": {\n      \"type\": \"string\",\n      \"format\": \"uri\",\n      \"description\": \"The LinkedIn profile URL of the candidate.\"\n    },\n    \"job_title_target\": {\n      \"type\": \"string\",\n      \"description\": \"The role title extracted from the job description.\"\n    },\n    \"experience_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's experience fits the role requirements.\"\n    },\n    \"industry_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's past industries align with the target industry.\"\n    },\n    \"seniority_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short factual reasoning (≤ 40 words) on whether the candidate's seniority matches the role's level.\"\n    },\n    \"general_fit_reason\": {\n      \"type\": \"string\",\n      \"description\": \"Short overall assessment (≤ 40 words) summarizing the candidate's general fit.\"\n    },\n    \"general_fit_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 5,\n      \"description\": \"General fit score: 5 = perfect fit, 4 = strong fit, 3 = moderate fit, 2 = weak fit, 1 = very weak fit, 0 = no fit.\"\n    }\n  },\n  \"required\": [\n    \"candidate_name\",\n    \"candidate_linkedinUrl\",\n    \"job_title_target\",\n    \"experience_fit_reason\",\n    \"industry_fit_reason\",\n    \"seniority_fit_reason\",\n    \"general_fit_reason\",\n    \"general_fit_score\"\n  ],\n  \"additionalProperties\": false\n}\n\n\nInput:\n{{ $json.text }}\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "c72b963a-76c1-49be-8b8c-61cc9c3e66e3",
      "name": "Stellentitel-Varianten generieren",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        272,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Here is the Job Information:\n\nJob Title:\n{{ $('Set Fields').item.json[\"Job Title\"] }}\n\nJob Description:\n{{ $('Set Fields').item.json[\"Job Description\"] }}"
            },
            {
              "role": "system",
              "content": "=YOU ARE A WORLD-CLASS EXPERT IN JOB TITLE NORMALIZATION, SEARCH OPTIMIZATION, AND TALENT IDENTIFICATION. YOUR MISSION IS TO TRANSFORM A GIVEN JOB TITLE AND JOB DESCRIPTION INTO A CLEAN, STANDARDIZED TITLE AND GENERATE UP TO 5 VARIATIONS OF SIMILAR JOB TITLES TO MAXIMIZE MATCHING ACCURACY FOR AUTOMATED CANDIDATE SEARCHES.\n\n###INSTRUCTIONS###\n\n- YOU MUST READ AND UNDERSTAND the provided JOB TITLE and JOB DESCRIPTION.\n- YOU MUST CLEAN the original JOB TITLE by removing unnecessary words, overly specific terms, internal jargon, or formatting inconsistencies to produce a STANDARDIZED VERSION.\n- YOU MUST CREATE UP TO 5 VARIATIONS that represent ALTERNATIVE YET EQUIVALENT job titles commonly used in the industry for the same or very similar roles.\n- FOCUS on INDUSTRY-STANDARD TERMS, maintaining RELEVANCE and avoiding niche variations unless widely recognized.\n- PRIORITIZE broader and common titles that would yield HIGH SEARCH MATCHES while remaining ROLE-ACCURATE.\n- OUTPUT MUST BE JSON FORMAT AND EACH ITEM MUST BE A SEPARATED JOB TITLE.\n- INCLUDE the CLEANED TITLE as the first item, followed by the variations.\n\n###CHAIN OF THOUGHTS###\n\nFOLLOW these steps sequentially to ENSURE EXPERT OUTPUT:\n\n1. UNDERSTAND:\n 1.1. CAREFULLY READ the input JOB TITLE and JOB DESCRIPTION.\n 1.2. EXTRACT the core role, seniority, and function from the description.\n\n2. BASICS:\n 2.1. IDENTIFY KEY RESPONSIBILITIES, skills, and the focus of the role.\n 2.2. DETERMINE whether the role is technical, managerial, operational, etc.\n\n3. BREAK DOWN:\n 3.1. STRIP the job title down to its essential function (e.g., \"Marketing Ninja\" → \"Marketing Specialist\").\n 3.2. REMOVE internal lingo, quirky titles, redundant adjectives, and unusual capitalization.\n\n4. ANALYZE:\n 4.1. COMPARE the extracted role with industry standards and benchmark titles.\n 4.2. MAP the role to common synonyms or alternative phrasings used across companies.\n\n5. BUILD:\n 5.1. FORMULATE a CLEAN, INDUSTRY-STANDARD JOB TITLE.\n 5.2. CREATE UP TO 5 VARIATIONS reflecting similar common titles, adjusting for slight seniority shifts if necessary (e.g., \"Software Engineer\" → \"Backend Developer\").\n\n6. EDGE CASES:\n 6.1. IF the job title is already standard, CLEAN only if needed (e.g., remove extra descriptors).\n 6.2. IF the job title is highly specific, GENERALIZE it slightly without losing its essential meaning.\n\n7. FINAL ANSWER:\n 7.1. OUTPUT in the following JSON FORMAT:\n\n{\n\"jobtitle1\": \"...\",\n\"jobtitle2\": \"...\",\n\"jobtitle3\": \"...\",\n\"jobtitle4\": \"...\",\n\"jobtitle5\": \"...\"\n}"
            }
          ]
        },
        "simplify": false,
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "1ab51082-aff7-4a69-af50-eb4de77acdbd",
      "name": "GPT 4.1-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        944,
        400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "VN9Tey257wj5pSUX",
          "name": "Resource Hub Agent"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f6683bf5-59c5-4beb-8475-68b0a74bf46d",
      "name": "Haftnotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        368
      ],
      "parameters": {
        "color": 5,
        "content": "## Data Structuring \nFormat the whole profile into a structured candidate profile."
      },
      "typeVersion": 1
    },
    {
      "id": "9f67e5a0-062e-4901-a711-fb2eb4bc07a2",
      "name": "Haftnotiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        32
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "content": "## Candidate Assessment \nCreate a detailed candidate to job matching assessment which looks at more data points and outputs a structured reasoning."
      },
      "typeVersion": 1
    },
    {
      "id": "acf10533-a532-4b3d-aaf3-b0d1efd01522",
      "name": "Haftnotiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2576,
        32
      ],
      "parameters": {
        "color": 4,
        "width": 340,
        "content": "## Outreach Message Creation \nUses the final assessment and the job description to write a fully personalized email and LinkedIn message to the candidate."
      },
      "typeVersion": 1
    },
    {
      "id": "730a3948-0d6c-466d-a711-41ea4cf48006",
      "name": "Nachrichtengenerierung",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2640,
        224
      ],
      "parameters": {
        "text": "=Name of the candidate: {{ $('LinkedIn Profile Enrichment').item.json.firstName }} {{ $('LinkedIn Profile Enrichment').item.json.lastName }}\n\nJob Description:\n{{ $('Set Fields').item.json['Job Title'] }} - {{ $('Set Fields').item.json['Job Description'] }}\n\n\nCandidate to Job Match Assessment:\n{{ JSON.stringify($('Create Candidate Assessment').item.json.output) }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You are a recruiting assistant who is specalized in writing outreach emails to candidates who are great fits for a specific job role you are recruiting for. You are given a job description and a detailed assessment of why the candidate would be a fit to use as context for your message. You specifically write a LinkedIn Message and a cold email to the candidate that follows the below principles.\n\nCold email:\n- Less than 75 words\n- Make it 80% about them\n- Conversatinal tone and simple language\n- Prompt with a subtle non-salesy call to action\n- Use formatting with line breaks to make the email skimmable\n- Never start with \"I hope this email finds you well or similar\"\n\nLinkedIn Message:\n- Less than 60 words\n- Very conversational\n- Reference something from their profile why you're reaching out\n- Prompt with a subtle non-sales CTA or question\n\nBoth messages should have a consultative approach that positions you as a trusted career advisor. Use insights from the job description and why it is a match to build trust and rapport. \n\nYou will only return the finished email copy, a subject line and LinkedIn message as a JSON in the followin format:\n\n{\n\"Email_Subject\": \"...\",\n\"Email_Body\": \"...\",\n\"LinkedIn_DM\": \"...\"\n}"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "804b0d8c-dbc6-432e-8e76-ba4ee3e2c478",
      "name": "Apollo People Search1",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        880,
        0
      ],
      "parameters": {
        "url": "https://api.apollo.io/api/v1/mixed_people/search",
        "method": "POST",
        "options": {
          "pagination": {
            "pagination": {
              "parameters": {
                "parameters": [
                  {
                    "name": "page",
                    "value": "={{ $pageCount + 1 }}"
                  }
                ]
              },
              "maxRequests": 5,
              "requestInterval": 1000,
              "limitPagesFetched": true
            }
          }
        },
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "person_titles[]",
              "value": "={{ $json['choices[0].message.content'] }}"
            },
            {
              "name": "per_page",
              "value": "10"
            },
            {
              "name": "page",
              "value": "1"
            },
            {
              "name": "include_similar_titles",
              "value": "false"
            },
            {
              "name": "person_locations[]",
              "value": "={{ $('Set Fields').item.json.Location }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "x-api-key",
              "value": "<YOUR-API-KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5569f4b8-8cec-4b5e-abe2-9961047c4edc",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        624,
        0
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "choices[0].message.content"
      },
      "typeVersion": 1
    },
    {
      "id": "22d3cac3-1a18-459b-ab3f-6e0a13cd5341",
      "name": "Split Out2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1120,
        0
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "people"
      },
      "typeVersion": 1
    },
    {
      "id": "f81ab349-0341-4ede-b8de-1c54db86862b",
      "name": "Duplikate entfernen",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1360,
        0
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "id"
      },
      "typeVersion": 2
    },
    {
      "id": "46abf579-2fd4-4f1a-934f-159b6686938e",
      "name": "Felder setzen",
      "type": "n8n-nodes-base.set",
      "position": [
        -160,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "042c76b7-29ab-4bad-a652-73a1237a1a97",
              "name": "Job Title",
              "type": "string",
              "value": "={{ $json[\"Job Title\"] }}"
            },
            {
              "id": "65c69019-fa6b-442d-a15b-a2b7eaa58ad9",
              "name": "Job Description",
              "type": "string",
              "value": "={{ $json[\"Job Description\"] }}"
            },
            {
              "id": "d0c619d7-1801-467d-82ad-6ec972ca11fd",
              "name": "Location",
              "type": "string",
              "value": "={{ $json.Location }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "619fc71c-5025-42a3-a609-d634347bede7",
      "name": "Haftnotiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        400
      ],
      "parameters": {
        "color": 5,
        "height": 224,
        "content": "## LI Enrichment\n\nUse your preferred API to get the fully enriched LinkedIn profile.\n\nCan check on Apify or RapidAPI for example."
      },
      "typeVersion": 1
    },
    {
      "id": "9c6f3779-b7b4-4464-86b3-5fd664443cf7",
      "name": "Haftnotiz7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        -480
      ],
      "parameters": {
        "width": 464,
        "height": 352,
        "content": "## YouTube video about the workflow\n**Check out this video for a breakdown of the workflow:**\n\n@[youtube](ppbXEab8334)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7dc92dd1-cd91-4dd8-8c25-5e0b82e66701",
  "connections": {
    "d862618e-277a-4834-bfc0-d136e9f4d3e2": {
      "main": [
        [
          {
            "node": "0210a953-a2a9-413e-8aaa-088b18ae65dd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "be084c1b-b26c-44ce-83d2-36b30c3fbf1f": {
      "main": [
        [
          {
            "node": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a0bfc042-3318-4532-b017-11c8a0c29a04": {
      "main": [
        [
          {
            "node": "07044fd4-a20f-4156-876a-59769fc7265e",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "46abf579-2fd4-4f1a-934f-159b6686938e": {
      "main": [
        [
          {
            "node": "0d40609c-7358-4974-b22d-525e0952e748",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5569f4b8-8cec-4b5e-abe2-9961047c4edc": {
      "main": [
        [
          {
            "node": "804b0d8c-dbc6-432e-8e76-ba4ee3e2c478",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "22d3cac3-1a18-459b-ab3f-6e0a13cd5341": {
      "main": [
        [
          {
            "node": "f81ab349-0341-4ede-b8de-1c54db86862b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4a5133d1-5fe7-442a-adc5-d7768ea67da0": {
      "main": [
        [
          {
            "node": "be084c1b-b26c-44ce-83d2-36b30c3fbf1f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "07044fd4-a20f-4156-876a-59769fc7265e": {
      "main": [
        [
          {
            "node": "d862618e-277a-4834-bfc0-d136e9f4d3e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1ab51082-aff7-4a69-af50-eb4de77acdbd": {
      "ai_languageModel": [
        [
          {
            "node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "07fefcc3-2f4c-4240-8d77-5a9e006c7567": {
      "ai_languageModel": [
        [
          {
            "node": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47": {
      "main": [
        [
          {
            "node": "a0bfc042-3318-4532-b017-11c8a0c29a04",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f81ab349-0341-4ede-b8de-1c54db86862b": {
      "main": [
        [
          {
            "node": "4a5133d1-5fe7-442a-adc5-d7768ea67da0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "730a3948-0d6c-466d-a711-41ea4cf48006": {
      "main": [
        [
          {
            "node": "b484f8dc-cdb8-4677-9bc1-32c3b6445518",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "969da01e-2879-4ce1-8cfa-301071ec9950": {
      "main": [
        [
          {
            "node": "46abf579-2fd4-4f1a-934f-159b6686938e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "44a619cc-dd31-4d5f-b92f-de9698d8bf5d": {
      "ai_languageModel": [
        [
          {
            "node": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "b7cda9cc-7d41-43e6-a35b-2fb04e1d2d2c": {
      "ai_languageModel": [
        [
          {
            "node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "cbd1b94c-e226-43fb-9038-ddfb50b3f95c": {
      "ai_languageModel": [
        [
          {
            "node": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "1da9e1e4-c00a-42b9-ae90-3839a377bf60": {
      "ai_languageModel": [
        [
          {
            "node": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0d40609c-7358-4974-b22d-525e0952e748": {
      "main": [
        [
          {
            "node": "c72b963a-76c1-49be-8b8c-61cc9c3e66e3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d3b3ac81-05b7-43da-8fb0-9adce71dd23f": {
      "ai_languageModel": [
        [
          {
            "node": "730a3948-0d6c-466d-a711-41ea4cf48006",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "804b0d8c-dbc6-432e-8e76-ba4ee3e2c478": {
      "main": [
        [
          {
            "node": "22d3cac3-1a18-459b-ab3f-6e0a13cd5341",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b13f8c75-28f2-4354-8d70-bf0fa6c0337b": {
      "ai_outputParser": [
        [
          {
            "node": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "dc324e00-8cff-4211-b0bb-c507cf3e2815": {
      "ai_outputParser": [
        [
          {
            "node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "e5f163d5-f202-425b-912e-19b57f53cb0b": {
      "ai_outputParser": [
        [
          {
            "node": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "8568fb71-172a-4289-bcde-c45328e88dde": {
      "ai_outputParser": [
        [
          {
            "node": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "ba1a5442-8bf3-4b69-a9d8-32f484b71659": {
      "ai_outputParser": [
        [
          {
            "node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "3ad0031f-6d11-4f30-9091-9d4baa4534c6": {
      "ai_outputParser": [
        [
          {
            "node": "730a3948-0d6c-466d-a711-41ea4cf48006",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "36f9423a-cd41-49e0-aa29-0053be48e51c": {
      "main": [
        [
          {
            "node": "730a3948-0d6c-466d-a711-41ea4cf48006",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0210a953-a2a9-413e-8aaa-088b18ae65dd": {
      "main": [
        [
          {
            "node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c72b963a-76c1-49be-8b8c-61cc9c3e66e3": {
      "main": [
        [
          {
            "node": "5569f4b8-8cec-4b5e-abe2-9961047c4edc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7b35a4c2-6c83-4250-b154-1104d5a0c18a": {
      "main": [
        [
          {
            "node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b484f8dc-cdb8-4677-9bc1-32c3b6445518": {
      "main": [
        []
      ]
    }
  }
}
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 - Verschiedenes, KI-Zusammenfassung, Multimodales KI

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 Nodes40
Kategorie3
Node-Typen15
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Fabian Herhold

Fabian Herhold

@fabianherh

Co-Founder of Automindz Solutions AI & Automation Agency focused on recruiting

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34