This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "gIdIv8qN7zruqLbG",
"meta": {
"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": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
736,
115
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "92f0272d-dc5d-4424-9d96-cc2521e8a4ae",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-740,
115
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3820c9d3-be68-4a60-a810-943a9795bdbd",
"name": "List all tools for Bright Data",
"type": "n8n-nodes-mcp.mcpClient",
"position": [
-520,
115
],
"parameters": {},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "83219c20-7341-4e42-8cae-cc2e1e8e9b8e",
"name": "Set the Input fields",
"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 For Jobs Extraction",
"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": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "ff3193e5-cd22-40f4-8180-b76ad32055b3",
"name": "Split Out",
"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 For Jobs Extraction within a Loop",
"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": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "d9f78a12-9eaa-4d9b-9e5c-5150d6e40e95",
"name": "Job Desc Information Extractor",
"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": "AI Job Match",
"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": "Structured Output 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": "Create a binary data for AI Job Match",
"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 Notification for AI Job Match",
"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": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-320
],
"parameters": {
"width": 440,
"height": 120,
"content": "\uba74\ucc45 \uc870\ud56d\n\n\uc774 \ud15c\ud50c\ub9bf\uc740 n8n \uc790\uccb4 \ud638\uc2a4\ud305\uc5d0\uc11c\ub9cc \uc774\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 MCP \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc704\ud55c \ucee4\ubba4\ub2c8\ud2f0 \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4."
},
"typeVersion": 1
},
{
"id": "d68fd51a-d74f-4236-89e1-6144f9e80943",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-140
],
"parameters": {
"color": 5,
"width": 440,
"height": 220,
"content": "## LLM \uc0ac\uc6a9\n\nOpenAI 4o mini LLM\uc774 \uad6c\uc870\ud654\ub41c \ub370\uc774\ud130 \ucd94\ucd9c \ucc98\ub9ac\ub97c \uc704\ud574 \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4."
},
"typeVersion": 1
},
{
"id": "29342cc1-10dd-490c-b274-fd5a82dbae1e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-160
],
"parameters": {
"color": 3,
"width": 1660,
"height": 620,
"content": "## \ube0c\ub77c\uc774\ud2b8 \ub370\uc774\ud130 MCP \uc791\uc5c5 \ucd94\ucd9c via \uc791\uc5c5 \ubaa9\ub85d \n\ube0c\ub77c\uc774\ud2b8 \ub370\uc774\ud130 MCP\ub97c \ud1b5\ud574 \uc791\uc5c5 \uc815\ubcf4\ub97c \ucd94\ucd9c\ud55c \ub2e4\uc74c, OpenAI GPT-4o mini LLM\uc744 \uc774\uc6a9\ud558\uc5ec AI \uc791\uc5c5 \ub9e4\uce6d\uc744 \uc218\ud589\ud558\uc138\uc694"
},
"typeVersion": 1
},
{
"id": "25d7b451-0f5e-4694-a821-ea7fe93b7d6f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-740,
-700
],
"parameters": {
"color": 7,
"width": 400,
"height": 400,
"content": "## \ub85c\uace0\n\n"
},
"typeVersion": 1
},
{
"id": "02e69f64-f7b4-4a0d-828c-3fcea324268e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-740,
-240
],
"parameters": {
"width": 400,
"height": 320,
"content": "## \uba54\ubaa8\n\nBright Data MCP\uc640 OpenAI GPT-4o LLM\uc744 \uc774\uc6a9\ud558\uc5ec LinkedIn \ud504\ub85c\ud544 \ub370\uc774\ud130 \ucd94\ucd9c\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.\n\n**\uc785\ub825 \ud544\ub4dc \ub178\ub4dc\ub97c LinkedIn \ud504\ub85c\ud544 URL\uacfc \uc774\ub825\uc11c, \uc704\uce58, \ud0a4\uc6cc\ub4dc \ub4f1\uc73c\ub85c \uc124\uc815\ud558\uc138\uc694.**\n\n**\uad00\uc2ec \uc788\ub294 \uc6f9\ud6c5 \uc54c\ub9bc URL\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\uc138\uc694.**"
},
"typeVersion": 1
},
{
"id": "cb84eebb-4215-4bb3-91f6-bf7897a8ddf6",
"name": "OpenAI Chat Model for Job Desc Extract",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1264,
210
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "4d14c3a1-5402-4f27-beda-dba41c1aa912",
"name": "OpenAI Chat Model for AI Job Match",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1560,
200
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2aec37e7-a67b-47b1-b3b2-7ea7e114bfff",
"name": "Write the AI job matched response to disk",
"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": "Paginated Job Data Extractor",
"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 Model for Paginated Job Extract",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
228,
335
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b366450e-b10e-412e-b442-a0827ca430bb",
"connections": {
"Split Out": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"AI Job Match": {
"main": [
[
{
"node": "Create a binary data for AI Job Match",
"type": "main",
"index": 0
},
{
"node": "Webhook Notification for AI Job Match",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Bright Data MCP Client For Jobs Extraction within a Loop",
"type": "main",
"index": 0
}
]
]
},
"Set the Input fields": {
"main": [
[
{
"node": "Bright Data MCP Client For Jobs Extraction",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Job Match",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Paginated Job Data Extractor": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Job Desc Information Extractor": {
"main": [
[
{
"node": "AI Job Match",
"type": "main",
"index": 0
}
]
]
},
"List all tools for Bright Data": {
"main": [
[
{
"node": "Set the Input fields",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "List all tools for Bright Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model for AI Job Match": {
"ai_languageModel": [
[
{
"node": "AI Job Match",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a binary data for AI Job Match": {
"main": [
[
{
"node": "Write the AI job matched response to disk",
"type": "main",
"index": 0
}
]
]
},
"Webhook Notification for AI Job Match": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model for Job Desc Extract": {
"ai_languageModel": [
[
{
"node": "Job Desc Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Write the AI job matched response to disk": {
"main": [
[]
]
},
"Bright Data MCP Client For Jobs Extraction": {
"main": [
[
{
"node": "Paginated Job Data Extractor",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model for Paginated Job Extract": {
"ai_languageModel": [
[
{
"node": "Paginated Job Data Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Bright Data MCP Client For Jobs Extraction within a Loop": {
"main": [
[
{
"node": "Job Desc Information Extractor",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
mcpClientApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automated Resume Job Matching Engine with Bright Data & OpenAI 4o mini. Uses n8n-nodes-mcp, informationExtractor, chainLlm, outputParserStructured. Event-driven trigger; 22 nodes.
Source: https://github.com/n8nKOR/n8n-shared-workflow/blob/62a671327e906c22a40d290b339ff6d2373f8d75/workflows/n8nworkflows/ai/4330.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Community nodes can only be installed on self-hosted instances of n8n.
Community nodes can only be installed on self-hosted instances of n8n.
Community nodes can only be installed on self-hosted instances of n8n.
RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.
Community nodes can only be installed on self-hosted instances of n8n.