AutomationFlowsAI & RAG › Automated Resume Job Matching Engine with Bright Data Mcp & Openai 4o Mini

Automated Resume Job Matching Engine with Bright Data Mcp & Openai 4o Mini

ByRanjan Dailata @ranjancse on n8n.io

Community nodes can only be installed on self-hosted instances of n8n.

Event trigger★★★★☆ complexityAI-powered22 nodesN8N Nodes McpInformation ExtractorChain LlmOutput Parser StructuredHTTP RequestOpenAI ChatRead Write File
AI & RAG Trigger: Event Nodes: 22 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4330 — we link there as the canonical source.

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 →

Download .json
{
  "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": "## 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": "Sticky Note4",
      "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": "Sticky Note",
      "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": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -700
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 400,
        "content": "## Logo\n\n\n![logo](https://images.seeklogo.com/logo-png/43/1/brightdata-logo-png_seeklogo-439974.png)\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": "## 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 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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Community nodes can only be installed on self-hosted instances of n8n.

Source: https://n8n.io/workflows/4330/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Chain Llm, Output Parser Structured +3
AI & RAG

Automated Resume Job Matching Engine with Bright Data & OpenAI 4o mini. Uses n8n-nodes-mcp, informationExtractor, chainLlm, outputParserStructured. Event-driven trigger; 22 nodes.

N8N Nodes Mcp, Information Extractor, Chain Llm +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Chain Llm, Read Write File +3
AI & RAG

RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.

Telegram, Telegram Trigger, OpenAI Chat +8
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

HTTP Request, Google Gemini Chat, Chain Llm +4