Att matcha CV:n mot jobbannonser låter enkelt tills du sitter med 30 annonser, fem listor med “måste-ha”-kompetenser och en hög PDF:er som alla säger “resultatinriktad”. Manuell poängsättning blir snabbt rena gissningar. Och ärligt talat: det är utmattande.
Den här Bright Data OpenAI-automationen träffar rekryterare först, men HR-tech-grundare och karriärcoacher känner av samma smärta på olika sätt. Du får en repeterbar matchrapport baserad på faktiska, aktuella krav i annonsen – inte magkänsla. Det är skillnaden mellan “jag tror att den här kandidaten passar” och “här är varför, med underlag”.
Nedan ser du hur workflowet hämtar riktiga jobbannonser, extraherar de faktiska kraven, kör AI-matchning och levererar en korrekt formaterad rapport till en webhook (och sparar en kopia på disk för revision).
Så fungerar den här automatiseringen
Hela n8n-workflowet, från trigger till slutlig output:
n8n Workflow Template: Bright Data + OpenAI: smartare matchrapporter för cv
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "List all tools for Bright Data", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set the Input fields", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Bright Data MCP Client For J..", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Bright Data MCP Client For J..", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Job Desc Information Extractor", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "AI Job Match", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n10@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for AI ..", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Webhook Notification for AI .."]
n12@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Job De..", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for AI Job..", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Write the AI job matched res..", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Paginated Job Data Extractor", pos: "b", h: 48 }
n16@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Pagina..", pos: "b", h: 48 }
n5 --> n0
n8 --> n10
n8 --> n11
n0 --> n6
n3 --> n4
n9 -.-> n8
n15 --> n5
n7 --> n8
n2 --> n3
n1 --> n2
n13 -.-> n8
n10 --> n14
n11 --> n0
n12 -.-> n7
n4 --> n15
n16 -.-> n15
n6 --> n7
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n7,n8,n9,n15 ai
class n12,n13,n16 aiModel
class n11 api
class n10 code
classDef customIcon fill:none,stroke:none
class n11 customIcon
Problemet: CV-matchning är långsam, subjektiv och svår att skala
De flesta team “matchar” fortfarande ett CV genom att klistra in en jobblänk i en webbläsarflik, skumma beskrivningen och sedan leta efter nyckelord i CV:t. Det funkar för en kandidat. Det faller isär vid tio. Du jämför olika versioner av samma annons, missar kritiska krav som gömmer sig halvvägs ner på sidan och skriver inkonsekventa anteckningar som inte håller när en rekryterande chef frågar: “Varför gick vi vidare/inte vidare?” Samtidigt ändrar jobbsajter layout, LinkedIn blockerar scraping och processen glider tyst mot bias när människor blir trötta och börjar mönstermatcha i stället för att läsa.
Friktionen byggs på. Här är var det brukar haverera i praktiken.
- Att granska 20 jobbannonser manuellt kan ta cirka 2 timmar innan du ens tittar på CV:n.
- Två rekryterare kan poängsätta samma CV olika eftersom det inte finns en konsekvent bedömningsmall kopplad till jobbkraven.
- Att copy-pasta beskrivningar och anteckningar till dokument skapar röriga underlag, så du kan inte revidera beslut i efterhand.
- När du försöker skala är det första som brukar gå sönder dataåtkomsten (rate limits, blockerade sidor och ofullständig jobbtext).
Lösningen: live-hämtning av jobb + AI-matchning + delbara rapporter
Det här workflowet gör jobb–CV-matchning till en pipeline du kan lita på. Det börjar med att hämta jobbannonser från LinkedIn (eller liknande källor) via Bright Datas MCP-verktyg, som är byggt för scraping utan att bli blockerat var femte minut. Därefter öppnar det varje jobbsida, extraherar den faktiska jobbtexten och skickar den till ett OpenAI-drivet matchningssteg tillsammans med kandidatens CV som du tillhandahåller. AI:n producerar strukturerad matchoutput (poäng plus motivering), så du får inte ett fluffigt stycke som inte går att använda. Till sist skickar workflowet rapporten till en webhook-endpoint du väljer och sparar en filkopia på disk, vilket är smidigt för leveranser till kund, compliance eller bara för att hålla ordning.
Workflowet startar med dina indatafält (CV-text plus sökkriterier). Bright Data hämtar jobbannonser och hanterar paginering så att du kan processa mer än en resultatsida utan manuell klickning. OpenAI utvärderar sedan varje jobb mot CV:t och returnerar en konsekvent matchrapport som är redo att dela.
Det du får: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du matchar en kandidat mot 15 live-roller. Manuellt: om du lägger cirka 7 minuter på att öppna varje annons, hitta de faktiska kraven och ta anteckningar blir det ungefär 2 timmar (och det är lätt att missa detaljer i den femte fliken). Med det här workflowet skickar du in CV:t och filtren en gång (cirka 10 minuter), Bright Data hämtar annonserna och extraherar text i bakgrunden och sedan genererar OpenAI matchrapporten. Du kommer fortfarande att granska outputen, men grovjobbet är gjort och du får samma format för alla 15 roller.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Bright Data för liveåtkomst till jobb-scraping
- OpenAI för att poängsätta CV:n mot krav
- Bright Data API-token (hämta den i din Bright Data-dashboard)
Kunskapsnivå: Mellan. Du kopplar in autentiseringsuppgifter, redigerar indatafält och validerar en webhook-endpoint.
Vill du inte sätta upp detta själv? Prata med en automations-expert (gratis 15-minuters konsultation).
Så fungerar det
Indata sätter allt i rullning. Du startar workflowet och anger en kandidats CV samt kriterier för jobbsökning (nyckelord, filter och var du vill leta).
Bright Data samlar in jobbannonser. Workflowet använder Bright Datas MCP-klient för att hämta flera jobbannonser, tolkar länkar och expanderar dem till enskilda objekt så att varje annons kan behandlas stabilt, även över flera sidor.
Jobbsidor öppnas och städas upp. För varje jobblänk hämtar Bright Data sidinnehållet och workflowet extraherar den faktiska jobbannons-texten, så att OpenAI matchar mot krav i stället för sidbrus.
OpenAI skapar en strukturerad matchrapport. AI-matchningssteget jämför CV:t med de extraherade jobbkraven, returnerar poäng och motivering, och sedan skickar workflowet resultatet till din webhook och skriver en kopia till disk. Om du vill ha rapportering kan det också lägga till rader i Google Sheets.
Du kan enkelt justera jobbkällor och poängkriterier så att det passar din process. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar med en manuell trigger för körningar av CV-matchning vid behov.
- Lägg till Manual Execution Start som er triggernod (Manual Trigger).
- Koppla Manual Execution Start till Retrieve BrightData Tools för att starta flödet för datahämtning.
Steg 2: anslut BrightData och definiera indatafält
Konfigurera BrightData-verktyg och definiera CV:t och sökparametrarna som kommer att styra jobbsökningen.
- Öppna Retrieve BrightData Tools och lägg till autentiseringsuppgifter. Credential Required: Anslut era
mcpClientApi-uppgifter. - I Assign Input Fields ställer ni in följande tilldelningar: resume till
I am a senior Python developer with 9+ years of experience., keywords tillPython, location tillRemoteoch job_search_base_url tillhttps://www.linkedin.com/jobs/search/. - Koppla Assign Input Fields till BrightData Job Listing Fetch.
- I BrightData Job Listing Fetch ställer ni in Tool Name till
scrape_as_html, Operation tillexecuteTooloch Tool Parameters till={ "url": "{{ $json.job_search_base_url }}?keywords={{ $json.keywords }}&location={{ $json.location }}" }. Credential Required: Anslut eramcpClientApi-uppgifter.
Steg 3: tolka jobblänkar och iterera listningar
Extrahera länkar till jobbannonser, dela upp dem i enskilda objekt och iterera igenom varje jobbsida.
- Konfigurera Parse Job Links med Text satt till
=Extract all the job links from the provided content. Here's the content: {{ $json.result.content[0].text }}och Input Schema satt till{ "type": "array", "properties": { "link": { "type": "string" } } }. - Säkerställ att OpenAI Chat for Links är ansluten som språkmodell för Parse Job Links. Credential Required: Anslut era
openAiApi-uppgifter på OpenAI Chat for Links. - I Expand Output Items ställer ni in Field To Split Out till
outputså att varje jobblänk blir ett eget objekt. - Bekräfta att Expand Output Items skickar utdata till Batch Item Iterator, som sedan routar varje objekt till BrightData Job Page Fetch.
- I BrightData Job Page Fetch ställer ni in Tool Name till
scrape_as_html, Operation tillexecuteTooloch Tool Parameters till={ "url": "{{ $json.output }}" }. Credential Required: Anslut eramcpClientApi-uppgifter.
Steg 4: konfigurera AI-extraktion och matchning
Använd AI för att extrahera jobbbeskrivningar och utvärdera CV-matchning med strukturerad output.
- I Extract Job Description ställer ni in Text till
=Extract the job description in a textual format Here's the content: {{ $json.result.content[0].text }}och säkerställ att attributet job_description är definierat. - Säkerställ att OpenAI Chat for Desc är ansluten som språkmodell för Extract Job Description. Credential Required: Anslut era
openAiApi-uppgifter på OpenAI Chat for Desc. - I AI Match Evaluation ställer ni in Text till
=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. Here's the Resume: {{ $('Assign Input Fields').item.json.resume }} Here's the Job Desc: {{ $json.output.job_description }}och behåll Prompt Type somdefine. - Koppla Structured Result Parser som output-parser för AI Match Evaluation och klistra in det angivna JSON-schemaexemplet i JSON Schema Example. Den här parsern tar inte emot autentiseringsuppgifter direkt—säkerställ att eventuella nödvändiga AI-uppgifter är satta på OpenAI Chat for Matching.
- Säkerställ att OpenAI Chat for Matching är ansluten som språkmodell för AI Match Evaluation. Credential Required: Anslut era
openAiApi-uppgifter på OpenAI Chat for Matching.
Steg 5: konfigurera leverans av output och fillagring
Skicka matchningsresultatet till en webhook och spara det som en fil. De här åtgärderna körs parallellt efter utvärderingen.
- AI Match Evaluation skickar output parallellt till både Build Binary Match File och Post Match Webhook.
- I Build Binary Match File behåller ni funktionskoden som konverterar JSON till base64-binärdata:
items[0].binary = { data: { data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64') } }; return items;. - I Write Match File to Disk ställer ni in Operation till
writeoch File Name till=d:\Job-Match-{{$now.toSeconds()}}.json. - I Post Match Webhook ställer ni in URL till
https://webhook.site/7b5380a0-0544-48dc-be43-0116cb2d52c2, Content Type tillmultipart-form-dataoch lägger till en body-parameter job_match_response med värdet={{ $json.output.job_match_analysis.toJsonString() }}. - Bekräfta att Post Match Webhook routar till Batch Item Iterator för att fortsätta bearbeta återstående jobblänkar.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera flödet från början till slut innan ni aktiverar användning i produktion.
- Klicka på Execute Workflow på Manual Execution Start för att köra ett test.
- Verifiera att BrightData Job Listing Fetch returnerar HTML, att Parse Job Links extraherar länkar och att BrightData Job Page Fetch hämtar varje jobbsida.
- Bekräfta att Extract Job Description ger output med en job_description och att AI Match Evaluation returnerar strukturerad JSON som parsas av Structured Result Parser.
- Kontrollera att Post Match Webhook tar emot en payload och att Write Match File to Disk skapar en JSON-fil med ett tidsstämplat filnamn.
- När ni är nöjda, slå om arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Bright Data-autentisering kan gå ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera din Bright Data API-token och zone-inställningar i Bright Datas kontrollpanel först.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Räkna med cirka 45 minuter om dina Bright Data- och OpenAI-konton är redo.
Nej. Du klistrar främst in autentiseringsuppgifter, redigerar några indatafält och testar webhooken en gång.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-användning och kostnaderna för din Bright Data-plan.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serveradministration.
Ja, men du behöver justera både scraping och extrahering. Du kan byta Bright Data-indata för jobbkällan för att rikta in dig på sajter som Indeed eller ZipRecruiter genom att ändra kriterierna i steget “Assign Input Fields” och i Bright Data-hämtningssteget. Uppdatera sedan extraktionsprompten i jobbannons-extraktorn så att den plockar rätt fält från den nya sidstrukturen. Vanliga justeringar är att vikta specifika kompetenser, lägga till en “relevans för erfarenhet”-poäng och formatera slutrapporten som Markdown för enkel delning.
Oftast är det ett API-token-problem eller en zone som inte är konfigurerad som workflowet förväntar sig. Bekräfta att token fortfarande är giltig, att din Web Unlocker-zone finns och att miljövariabeln är korrekt satt i din MCP-klientkonfiguration. Om det bara fallerar vid större körningar kan du slå i rate limits eller få partiella sid-svar, så minska batchstorleken och testa igen.
Den klarar många, men dina begränsningar kommer från din n8n-plan, dina serverresurser och de scraping-/API-kvoter du betalar för.
Ofta ja, eftersom den här typen av workflow behöver batchning, branching och strukturerade AI-output utan att bli en skör kedja av betalda tasks. n8n är också enklare att köra i egen drift, vilket spelar roll när du processar många jobbannonser. Zapier eller Make kan fortfarande fungera för ett lätt “skicka en rapport till e-post”-flöde, men det blir snabbt klumpigt när du lägger till paginering och scraping i flera steg. Om du är osäker, prata med en automations-expert så pekar vi dig mot den enklaste setupen som ändå fungerar.
När det här väl rullar slutar jobb–CV-matchning att vara ett dagligt tidssluk och blir ett repeterbart system du kan lita på. Workflowet tar hand om grovjobbet så att du kan fokusera på besluten.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.