Automatisierter Lebenslauf-Job-Matching-Engine mit Bright Data und OpenAI 4o mini
Dies ist ein HR, AI-Bereich Automatisierungsworkflow mit 22 Nodes. Hauptsächlich werden Set, Function, SplitOut, McpClient, HttpRequest und andere Nodes verwendet, kombiniert mit KI-Technologie für intelligente Automatisierung. Die automatische Job-Matching-Engine für Lebensläufe von Bright Data MCP und OpenAI 4o mini
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •OpenAI API Key
Verwendete Nodes (22)
Kategorie
{
"id": "gIdIv8qN7zruqLbG",
"meta": {
"instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
"templateCredsSetupCompleted": true
},
"name": "Automated Resume Job Matching Engine with Bright Data & OpenAI 4o mini",
"tags": [
{
"id": "Kujft2FOjmOVQAmJ",
"name": "Engineering",
"createdAt": "2025-04-09T01:31:00.558Z",
"updatedAt": "2025-04-09T01:31:00.558Z"
},
{
"id": "ZOwtAMLepQaGW76t",
"name": "Building Blocks",
"createdAt": "2025-04-13T15:23:40.462Z",
"updatedAt": "2025-04-13T15:23:40.462Z"
},
{
"id": "ddPkw7Hg5dZhQu2w",
"name": "AI",
"createdAt": "2025-04-13T05:38:08.053Z",
"updatedAt": "2025-04-13T05:38:08.053Z"
},
{
"id": "rKOa98eAi3IETrLu",
"name": "HR",
"createdAt": "2025-04-13T04:59:30.580Z",
"updatedAt": "2025-04-13T04:59:30.580Z"
}
],
"nodes": [
{
"id": "a75e1f8d-9dd4-4c87-b1ab-05c502b8cae7",
"name": "Über Elemente iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
736,
115
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "92f0272d-dc5d-4424-9d96-cc2521e8a4ae",
"name": "Bei Klick auf 'Workflow testen'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-740,
115
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3820c9d3-be68-4a60-a810-943a9795bdbd",
"name": "Alle Tools für Bright Data auflisten",
"type": "n8n-nodes-mcp.mcpClient",
"position": [
-520,
115
],
"parameters": {},
"credentials": {
"mcpClientApi": {
"id": "JtatFSfA2kkwctYa",
"name": "MCP Client (STDIO) account"
}
},
"typeVersion": 1
},
{
"id": "83219c20-7341-4e42-8cae-cc2e1e8e9b8e",
"name": "Eingabefelder setzen",
"type": "n8n-nodes-base.set",
"position": [
-300,
115
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "214e61a0-3587-453f-baf5-eac013990857",
"name": "resume",
"type": "string",
"value": "I am Pechi, Senior Python Developer with 9+ years of experience."
},
{
"id": "98c64f52-1564-4889-811d-39cac3951cc3",
"name": "keywords",
"type": "string",
"value": "Python"
},
{
"id": "34202143-4b07-4301-b5e9-767430952214",
"name": "location",
"type": "string",
"value": "India"
},
{
"id": "47d01515-302b-4a91-b9db-3af0033a56e1",
"name": "job_search_base_url",
"type": "string",
"value": "https://www.linkedin.com/jobs/search/"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "40a70c2b-5dcc-44f7-8fde-9c28748181cd",
"name": "Bright Data MCP Client zur Stellenanzeigen-Extraktion",
"type": "n8n-nodes-mcp.mcpClient",
"notes": "Scrape a single webpage URL with advanced options for content extraction and get back the results in MarkDown language.",
"position": [
-80,
115
],
"parameters": {
"toolName": "scrape_as_html",
"operation": "executeTool",
"toolParameters": "={\n \"url\": \"{{ $json.job_search_base_url }}?keywords={{ $json.keywords }}&location={{ $json.location }}\"\n} "
},
"credentials": {
"mcpClientApi": {
"id": "JtatFSfA2kkwctYa",
"name": "MCP Client (STDIO) account"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "ff3193e5-cd22-40f4-8180-b76ad32055b3",
"name": "Aufteilen",
"type": "n8n-nodes-base.splitOut",
"position": [
516,
115
],
"parameters": {
"options": {},
"fieldToSplitOut": "output"
},
"typeVersion": 1
},
{
"id": "cd1fcbd8-acf3-4a91-8158-f664aaa839e7",
"name": "Bright Data MCP Client zur Stellenanzeigen-Extraktion in Schleife",
"type": "n8n-nodes-mcp.mcpClient",
"notes": "Scrape a single webpage URL with advanced options for content extraction and get back the results in MarkDown language.",
"position": [
956,
-10
],
"parameters": {
"toolName": "scrape_as_html",
"operation": "executeTool",
"toolParameters": "={\n \"url\": \"{{ $json.output }}\"\n} "
},
"credentials": {
"mcpClientApi": {
"id": "JtatFSfA2kkwctYa",
"name": "MCP Client (STDIO) account"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95",
"name": "Stellenbeschreibungs-Informationsextraktor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
1176,
-10
],
"parameters": {
"text": "=Extract the job description in a textual format\n\nHere's the content: {{ $json.result.content[0].text }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "job_description",
"description": "Job Description"
}
]
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "4636d7e9-8d13-4f57-95f9-936f6d8bbf1d",
"name": "KI-Stellen-Matching",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1552,
-10
],
"parameters": {
"text": "=Hi, you are a helpful job matcher, you analyze the given resume and job description and providing a job matching skills and score in a JSON format.\n\nHere's the Resume:\n{{ $('Set the Input fields').item.json.resume }}\n\nHere's the Job Desc:\n\n{{ $json.output.job_description }}",
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 1.6
},
{
"id": "51b5d9dd-b0c8-4aaf-b789-f96e94519b94",
"name": "Strukturierter Ausgabe-Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1720,
200
],
"parameters": {
"jsonSchemaExample": "{\n \"job_match_analysis\": {\n \"resume_summary\": \"Senior Python Developer with 9+ years of experience.\",\n \"job_description_summary\": \"Seeking a developer with expertise in Sagemaker, Python, and LLM. The role involves client interaction, requirements understanding, design review, architecture validation, and team leadership.\",\n \"skill_match\": [\n {\n \"skill\": \"python\",\n \"resume\": \"Strong match - explicitly mentioned as core skill.\",\n \"job_description\": \"Strong match - listed as a primary skill.\",\n \"score\": 100\n },\n {\n \"skill\": \"sagemaker\",\n \"resume\": \"No match - not mentioned in the resume.\",\n \"job_description\": \"Strong match - listed as a primary skill.\",\n \"score\": 0\n },\n {\n \"skill\": \"llm\",\n \"resume\": \"No match - not mentioned in the resume.\",\n \"job_description\": \"Strong match - listed as a primary skill.\",\n \"score\": 0\n },\n {\n \"skill\": \"leadership\",\n \"resume\": \"Implicit match - Senior role implies leadership experience.\",\n \"job_description\": \"Explicit match - requires leading and guiding teams.\",\n \"score\": 75\n },\n {\n \"skill\": \"client_interaction\",\n \"resume\": \"No explicit mention, inferred from senior role.\",\n \"job_description\": \"Explicit match - requires interfacing with clients.\",\n \"score\": 50\n }\n ],\n \"overall_match_score\": 45,\n \"rationale\": \"The candidate's core skill (Python) is a strong match. The resume implies leadership skills, aligning with the job's team leadership requirements. However, the absence of Sagemaker and LLM experience significantly lowers the overall score. The candidate needs to demonstrate experience in these areas for a higher match.\",\n \"recommendations\": [\n \"Highlight any experience (even if limited) with Sagemaker or LLMs in the resume.\",\n \"Quantify Python experience with specific projects and technologies used.\",\n \"Emphasize any client-facing experience or responsibilities in previous roles.\",\n \"Showcase leadership experience with specific examples (e.g., mentoring junior developers, leading project teams).\"\n ]\n }\n}\n"
},
"typeVersion": 1.2
},
{
"id": "1dcb1ca7-e4e9-4775-9eb8-94c9e1f89e64",
"name": "Binärdaten für KI-Stellen-Matching erstellen",
"type": "n8n-nodes-base.function",
"position": [
1928,
-60
],
"parameters": {
"functionCode": "items[0].binary = {\n data: {\n data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n }\n};\nreturn items;"
},
"typeVersion": 1
},
{
"id": "da19ddc2-5e0f-4a4a-b524-1086b59c511f",
"name": "Webhook Benachrichtigung für KI-Stellen-Matching",
"type": "n8n-nodes-base.httpRequest",
"position": [
1928,
215
],
"parameters": {
"url": "https://webhook.site/7b5380a0-0544-48dc-be43-0116cb2d52c2",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "job_match_response",
"value": "={{ $json.output.job_match_analysis.toJsonString() }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0561839e-9ca9-4c18-9a9e-98b9a1f796fc",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-320
],
"parameters": {
"width": 440,
"height": 120,
"content": "## Disclaimer\nThis template is only available on n8n self-hosted as it's making use of the community node for MCP Client."
},
"typeVersion": 1
},
{
"id": "d68fd51a-d74f-4236-89e1-6144f9e80943",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-140
],
"parameters": {
"color": 5,
"width": 440,
"height": 220,
"content": "## LLM Usages\n\nOpenAI 4o mini LLM is being utilized for the structured data extraction handling."
},
"typeVersion": 1
},
{
"id": "29342cc1-10dd-490c-b274-fd5a82dbae1e",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-160
],
"parameters": {
"color": 3,
"width": 1660,
"height": 620,
"content": "## Bright Data MCP Job Extract via Job Listings\nExtract job information via BrightData MCP and then perform the AI Job matching by utilizing the OpenAI GPT 4o mini LLM"
},
"typeVersion": 1
},
{
"id": "25d7b451-0f5e-4694-a821-ea7fe93b7d6f",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-740,
-700
],
"parameters": {
"color": 7,
"width": 400,
"height": 400,
"content": "## Logo\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "02e69f64-f7b4-4a0d-828c-3fcea324268e",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-740,
-240
],
"parameters": {
"width": 400,
"height": 320,
"content": "## Note\n\nDeals with the LinkedIn profile data extraction by utilizing the Bright Data MCP and OpenAI GPT 4o LLM.\n\n**Please make sure to set the input fields node with the LinkedIn profile URL with the resume, location, keywords etc.\n\nPlease make sure to update the Webhook Notification URL of your interest**"
},
"typeVersion": 1
},
{
"id": "cb84eebb-4215-4bb3-91f6-bf7897a8ddf6",
"name": "OpenAI Chat-Modell für Stellenbeschreibungs-Extraktion",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1264,
210
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "vPKynKbDzJ5ZU4cU",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "4d14c3a1-5402-4f27-beda-dba41c1aa912",
"name": "OpenAI Chat-Modell für KI-Stellen-Matching",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1560,
200
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "vPKynKbDzJ5ZU4cU",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "2aec37e7-a67b-47b1-b3b2-7ea7e114bfff",
"name": "KI-gematchte Antwort auf Festplatte schreiben",
"type": "n8n-nodes-base.readWriteFile",
"position": [
2148,
-60
],
"parameters": {
"options": {},
"fileName": "=d:\\Job-Match-{{$now.toSeconds()}}.json",
"operation": "write"
},
"typeVersion": 1
},
{
"id": "af980102-85d0-4f90-842f-196605f6bcd6",
"name": "Paginierter Stellen-Datenextraktor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
140,
115
],
"parameters": {
"text": "=Extract all the job links from the provided content. \n\nHere's the content: {{ $json.result.content[0].text }}",
"options": {},
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"array\",\n\t\"properties\": {\n\t\t\"link\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "cb8e32c9-c1ac-4441-a42a-42e6b0d78970",
"name": "OpenAI Chat-Modell für paginierte Stellen-Extraktion",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
228,
335
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "vPKynKbDzJ5ZU4cU",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "b366450e-b10e-412e-b442-a0827ca430bb",
"connections": {
"ff3193e5-cd22-40f4-8180-b76ad32055b3": {
"main": [
[
{
"node": "a75e1f8d-9dd4-4c87-b1ab-05c502b8cae7",
"type": "main",
"index": 0
}
]
]
},
"4636d7e9-8d13-4f57-95f9-936f6d8bbf1d": {
"main": [
[
{
"node": "1dcb1ca7-e4e9-4775-9eb8-94c9e1f89e64",
"type": "main",
"index": 0
},
{
"node": "da19ddc2-5e0f-4a4a-b524-1086b59c511f",
"type": "main",
"index": 0
}
]
]
},
"a75e1f8d-9dd4-4c87-b1ab-05c502b8cae7": {
"main": [
[],
[
{
"node": "cd1fcbd8-acf3-4a91-8158-f664aaa839e7",
"type": "main",
"index": 0
}
]
]
},
"83219c20-7341-4e42-8cae-cc2e1e8e9b8e": {
"main": [
[
{
"node": "40a70c2b-5dcc-44f7-8fde-9c28748181cd",
"type": "main",
"index": 0
}
]
]
},
"51b5d9dd-b0c8-4aaf-b789-f96e94519b94": {
"ai_outputParser": [
[
{
"node": "4636d7e9-8d13-4f57-95f9-936f6d8bbf1d",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"af980102-85d0-4f90-842f-196605f6bcd6": {
"main": [
[
{
"node": "ff3193e5-cd22-40f4-8180-b76ad32055b3",
"type": "main",
"index": 0
}
]
]
},
"d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95": {
"main": [
[
{
"node": "4636d7e9-8d13-4f57-95f9-936f6d8bbf1d",
"type": "main",
"index": 0
}
]
]
},
"3820c9d3-be68-4a60-a810-943a9795bdbd": {
"main": [
[
{
"node": "83219c20-7341-4e42-8cae-cc2e1e8e9b8e",
"type": "main",
"index": 0
}
]
]
},
"92f0272d-dc5d-4424-9d96-cc2521e8a4ae": {
"main": [
[
{
"node": "3820c9d3-be68-4a60-a810-943a9795bdbd",
"type": "main",
"index": 0
}
]
]
},
"4d14c3a1-5402-4f27-beda-dba41c1aa912": {
"ai_languageModel": [
[
{
"node": "4636d7e9-8d13-4f57-95f9-936f6d8bbf1d",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"1dcb1ca7-e4e9-4775-9eb8-94c9e1f89e64": {
"main": [
[
{
"node": "2aec37e7-a67b-47b1-b3b2-7ea7e114bfff",
"type": "main",
"index": 0
}
]
]
},
"da19ddc2-5e0f-4a4a-b524-1086b59c511f": {
"main": [
[
{
"node": "a75e1f8d-9dd4-4c87-b1ab-05c502b8cae7",
"type": "main",
"index": 0
}
]
]
},
"cb84eebb-4215-4bb3-91f6-bf7897a8ddf6": {
"ai_languageModel": [
[
{
"node": "d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2aec37e7-a67b-47b1-b3b2-7ea7e114bfff": {
"main": [
[]
]
},
"40a70c2b-5dcc-44f7-8fde-9c28748181cd": {
"main": [
[
{
"node": "af980102-85d0-4f90-842f-196605f6bcd6",
"type": "main",
"index": 0
}
]
]
},
"cb8e32c9-c1ac-4441-a42a-42e6b0d78970": {
"ai_languageModel": [
[
{
"node": "af980102-85d0-4f90-842f-196605f6bcd6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"cd1fcbd8-acf3-4a91-8158-f664aaa839e7": {
"main": [
[
{
"node": "d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95",
"type": "main",
"index": 0
}
]
]
}
}
}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, Künstliche Intelligenz
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.
Verwandte Workflows
Ranjan Dailata
@ranjancseA Professional based out of India specialized in handling AI-powered automations. Contact me at ranjancse@gmail.com
Diesen Workflow teilen