Ditt CV “ser bra ut”, men intervjukallelserna dyker ändå inte upp. Sedan klistrar du in samma LinkedIn-profil i tre olika verktyg, skummar en jobbannons, gissar nyckelord och slutar med att du skriver om i blindo.
Karriärcoacher stöter på det här varje vecka. Rekryterare märker det när kandidater missar uppenbara krav i rollen. Och en jobbsökare som på egen hand försöker ta sig in i SDR/BDR-roller? Samma frustration. Den här automatiseringen för ATS resume feedback gör om en LinkedIn-profil plus en jobbannons till tydliga, ATS-liknande rekommendationer som du kan återanvända och följa upp.
Du får se hur workflowet validerar länkar, hämtar strukturerade profil- och jobbdata, kör en AI-baserad “rekryterarkontroll” och sedan loggar utfallet till Google Sheets så att feedbacken håller sig konsekvent från en ändring till nästa.
Så fungerar den här automatiseringen
Hela n8n-workflowet, från trigger till slutligt resultat:
n8n Workflow Template: LinkedIn + Google Sheets: ATS-klara CV-råd
flowchart LR
subgraph sg0["Recruiter Check Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model4", pos: "b", h: 48 }
n1["<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/>Get profile details"]
n2["<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/>Get job details"]
n3["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook (GET Form details)"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Build CV", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Combine_CV", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Build JD", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Combine_JD", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "ATS compare", pos: "b", h: 48 }
n9["<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/merge.svg' width='40' height='40' /></div><br/>Merge2"]
n10["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook"]
n11@{ icon: "mdi:robot", form: "rounded", label: "Recruiter Check", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n13["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Error_node"]
n14["<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/code.svg' width='40' height='40' /></div><br/>ThankYOU message"]
n12 --> n1
n12 --> n2
n12 --> n13
n9 --> n8
n4 --> n5
n6 --> n7
n5 --> n9
n7 --> n9
n8 --> n11
n11 --> n14
n0 -.-> n11
n14 --> n10
n2 --> n6
n1 --> n4
n3 --> n12
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 n11 ai
class n0 aiModel
class n12 decision
class n1,n2,n3,n10,n13 api
class n14 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n9,n10,n13,n14 customIcon
Problemet: CV-ändringar blir gissningslek utan en repeterbar ATS-lins
De flesta “CV-omdömen” är egentligen inte feedback. Det är åsikter, magkänsla och en checklista som ändras beroende på vem som tittade senast. Om du använder LinkedIn som din primära källa blir det ännu värre, eftersom du hela tiden jonglerar två inputs (profil och jobbannons) och sedan försöker översätta dem till ATS-anpassat språk utan att tappa din egen ton. Resultatet blir långsam iteration: du justerar rubriker, flyttar runt punkter, lägger till slumpmässiga nyckelord och vet ändå inte vad som gjorde skillnad. Den fram-och-tillbaka-processen kostar timmar och, ärligt talat, momentum.
Det eskalerar snabbt. Här är var det oftast brister.
- Du slutar med att läsa samma jobbannons flera gånger eftersom inget är strukturerat för jämförelse.
- Nyckelordsgap missas, så din “kvalificerade” profil ser ändå orelaterad ut i ett ATS.
- Råd blir inkonsekventa mellan kandidater eller mellan veckor, vilket gör coaching svårt att skala.
- Manuell copy-paste skapar småfel (fel företagsnamn, inaktuella siffror) som underminerar förtroendet.
Lösningen: jämför LinkedIn/CV mot JD och logga ATS-klara rekommendationer
Det här n8n-workflowet startar i samma stund som någon skickar in två länkar: en LinkedIn-profil (eller en CV-sida) och en jobbannons. Först kontrollerar det URL:erna så att du inte slösar API-anrop på dåliga inputs. Sedan hämtar det strukturerade profildata och strukturerade data från jobbannonsen via HTTP-anrop, vilket är skillnaden mellan “AI som gissar” och “AI som jämför”. Därefter slår workflowet ihop de två datamängderna till en enda ATS-match-payload och skickar den till en AI-agent för utvärdering. Till sist formaterar det resultatet till ett rekryterarvänligt meddelande (med matchade nyckelord, saknade nyckelord och konkreta optimeringstips) och returnerar det till användaren, samtidigt som det loggar resultatet i Google Sheets så att du kan följa ändringar och utfall över tid.
Workflowet börjar med ett webhook-intag. Därifrån hämtar det profil- och jobbdata, bygger upp strukturerade objekt och kör en ATS-liknande utvärdering med en LLM. I slutet får du ett strukturerat svar du kan klistra in i coachinganteckningar, plus en rad i Google Sheets för historik och konsekvens.
Det du får: automatisering vs. resultat
| Det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du granskar 10 SDR-CV:n i veckan för en och samma öppna roll. Manuellt kan du lägga cirka 30 minuter per person på att läsa jobbannonsen igen, skanna LinkedIn och skriva anteckningar, alltså runt 5 timmar i veckan. Med det här workflowet är intaget en webhook-inlämning per kandidat (cirka 1 minut), sedan några minuters bearbetning medan n8n hämtar data och AI:n genererar ATS-liknande output. Du granskar och anpassar fortfarande den slutliga rekommendationen, men du börjar från en strukturerad gapanalys, inte från ett tomt blad.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- GhostGenius API för att skrapa strukturerade profil- och jobbdata
- Google Sheets för att logga feedbackhistorik och utfall
- Groq API-uppgifter (hämta dem i din Groq-kontos instrumentpanel)
Svårighetsnivå: Medel. Du kopplar upp autentiseringsuppgifter, justerar prompts och mappar några fält till Sheets.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Webhook-intaget triggar körningen. Ett formulär (eller ett enkelt internt verktyg) skickar två länkar till n8n: en till kandidatprofilen och en till jobbannonsen.
URL-validering stoppar dåliga inputs. Workflowet kontrollerar länkarna först. Om de ser fel ut returnerar det ett tydligt fel direkt, så att du inte bränner API-anrop och inte loggar skräp i Sheets.
Profil- och jobbdata hämtas och struktureras. n8n använder HTTP-anrop för att hämta strukturerade CV-/LinkedIn-data och strukturerade JD-data, och aggregerar dem sedan till konsekventa objekt som du kan återanvända.
AI-agenten gör en ATS-liknande jämförelse. Workflowet slår ihop CV och JD, förbereder en “ATS match”-payload och skickar den till utvärderingsagenten (Groq chat-modell). Ett kodsteg tolkar sedan JSON:en och formaterar ett rekryterarvänligt svar.
Resultat returneras och loggas. Svaret skickas tillbaka till den som begärde det, och viktiga outputs kan skrivas till Google Sheets för spårning, uppföljning och repeterbar coaching.
Du kan enkelt ändra poängsättningsmallen och output-formatet så att det matchar din nisch (SDR, produkt, finans) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Konfigurera den inkommande webhooken som tar emot LinkedIn-CV- och JD-URL:er från ert formulär.
- Lägg till eller öppna Incoming Form Webhook och ställ in Path på
linkedin. - Ställ in HTTP Method på
POSToch Response Mode påresponseNode. - Aktivera Authentication med
basicAuth. - Inloggningsuppgifter krävs: anslut era
httpBasicAuth-inloggningsuppgifter i Incoming Form Webhook.
Steg 2: anslut profil- och jobbdatasystem
Konfigurera API-anropen som hämtar LinkedIn-profil- och jobbdetaljer, och validera URL:erna innan anropen körs.
- I URL Validation Check, säkerställ att båda villkoren validerar LinkedIn-URL:er: ställ in Left Value till
{{ $json.body.LinkedIn_CV }}och{{ $json.body.LinkedIn_JD }}, och Right Value tilllinkedin.com/för båda. - Konfigurera Fetch Profile Info med URL
https://api.ghostgenius.fr/v2/profileoch lägg till frågeparametern url ={{ $json.body.LinkedIn_CV }}. - Konfigurera Retrieve Job Info med URL
https://api.ghostgenius.fr/v2/joboch lägg till frågeparametern url ={{ $json.body.LinkedIn_JD }}. - Inloggningsuppgifter krävs: anslut era
httpHeaderAuth-inloggningsuppgifter i Fetch Profile Info och Retrieve Job Info. - Inloggningsuppgifter krävs: anslut era
httpBasicAuth-inloggningsuppgifter i Fetch Profile Info och Retrieve Job Info.
URL Validation Check skickar utdata parallellt till både Fetch Profile Info och Retrieve Job Info.
⚠️ Vanlig fallgrop: om formulärfälten heter något annat, uppdatera {{ $json.body.LinkedIn_CV }} och {{ $json.body.LinkedIn_JD }} så att de matchar era faktiska nycklar i inkommande payload.
Steg 3: sammanställ och aggregera CV- och JD-data
Normalisera den hämtade datan till strukturerade paket för ATS-utvärderingen.
- I Assemble CV Data, mappa fält som headline, summary och skills med uttryck som
{{ $json.headline }},{{ $json.summary }}och{{ $json.skills }}. - I Aggregate CV Bundle, ställ in Aggregate på
aggregateAllItemDataoch Destination Field Name påCV. - I Compose JD Data, mappa fält som title, description och location med uttryck som
{{ $json.title }},{{ $json.description }}och{{ $json.location }}. - I Aggregate JD Bundle, ställ in Aggregate på
aggregateAllItemDataoch Destination Field Name påJD. - I Combine CV and JD, ställ in Mode på
combineoch Combine By påcombineAll.
Steg 4: konfigurera AI-matchning med ATS-agenten
Förbered den kombinerade datan för analys och kör ATS-utvärderingen mot Groq-modellen.
- I Prepare ATS Match, ställ in CV till
{{ $json.CV }}och JD till{{ $json.JD }}. - I ATS Evaluation Agent, ställ in Text till den angivna prompt-strängen, inklusive
{{ $json.JD.toJsonString() }}och{{ $json.CV.toJsonString() }}. - Säkerställ att Groq Dialogue Engine är ansluten som språkmodell för ATS Evaluation Agent.
- Inloggningsuppgifter krävs: anslut era
groqApi-inloggningsuppgifter i Groq Dialogue Engine (inloggningsuppgifterna läggs till i modellnoden, inte i agenten).
⚠️ Vanlig fallgrop: agenten är konfigurerad att returnera strikt JSON. Om ni ändrar systemprompten, behåll schema- och formateringsreglerna intakta för att undvika JSON-parsningsfel i senare steg.
Steg 5: konfigurera utdata-svar
Formatera ATS-analysen till HTML och returnera svaret till det ursprungliga webhook-anropet, inklusive hantering av ogiltiga URL:er.
- I Format Result Message, behåll JavaScript-koden som parsar
item.json.outputoch byggerthankYouMessage-HTML:en. - I Return Webhook Reply, ställ in Respond With på
jsonoch Response Body på{{ $json }}. - I Invalid URL Response, behåll JSON-svarskroppen med
Invalid URL-HTML för att hantera misslyckad validering.
⚠️ Vanlig fallgrop: om Format Result Message stöter på ogiltig JSON kommer svaret att innehålla ett felobjekt. Säkerställ att agenten alltid returnerar giltiga JSON-strängar.
Steg 6: testa och aktivera ert workflow
Validera end-to-end-körning och aktivera workflowet för användning i produktion.
- Klicka på Execute Workflow och skicka en POST-begäran till Incoming Form Webhook-URL:en med fälten
LinkedIn_CVochLinkedIn_JDi body. - Bekräfta att giltiga URL:er går igenom Fetch Profile Info och Retrieve Job Info, och därefter in i Assemble CV Data, Compose JD Data och Combine CV and JD.
- Verifiera att Return Webhook Reply skickar ut ett JSON-svar som innehåller ett
thankYouMessage-HTML-block. - Växla workflowet till Active för att aktivera körning i produktion.
Vanliga fallgropar
- Autentiseringsuppgifter för GhostGenius API kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, börja med att kontrollera din GhostGenius-instrumentpanel och headers som sätts i HTTP Request-noderna.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att sitta och redigera output för alltid.
Vanliga frågor
Cirka en timme om dina API-nycklar är klara.
Nej. Du kopplar främst konton och mappar fält. Den enda “koden” är valfri om du vill anpassa den formaterade outputen kraftigt.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in Groq-användning och dina kostnader för skrapnings-API från GhostGenius.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Uppdatera instruktionerna till ATS Evaluation Agent så att SDR-signaler viktas högre (kvot, outbound-volym, bokningsgrad för möten, verktyg som Salesloft/Outreach). Du kan också justera fälten i “Prepare ATS Match” så att modellen alltid jämför samma sektioner (rubrik, sammanfattning, erfarenhetspunkter) och returnerar samma schema för loggning.
Oftast är det ett problem med auth-headern eller en utgången nyckel. Skapa en ny GhostGenius API-nyckel och uppdatera sedan autentiseringsuppgifterna som används av HTTP Request-noderna som anropar profil- och jobb-endpoints. Kontrollera också att du skickar en giltig, publikt tillgänglig URL, eftersom privata eller blockerade sidor ofta returnerar ofullständiga data som gör att parsningen längre fram skapar fel.
På en typisk n8n Cloud Starter-plan räcker det gott för enskilda jobbsökare och mindre coachingbatcher, men din verkliga gräns blir oftast API:ts rate limits från skrapleverantören och din LLM-budget.
Ofta, ja. Det här workflowet har branching (hantering av ogiltiga URL:er), objektaggregering och strukturerad JSON-formatering, och det blir snabbt klumpigt eller dyrt i enklare automationsverktyg. n8n gör det också enklare att hålla “utvärderingsmallen” på ett ställe, så att du kan iterera utan att bygga om hela scenariot. Om du self-hostar behöver du inte vakta task-räkningen som en hök. Zapier eller Make kan fortfarande fungera om du bara vill ha ett lättviktigt “skicka länkar till AI, få ett svar”-flöde, men att logga strukturerade outputs snyggt är där n8n verkligen briljerar. Prata med en automationsexpert om du är osäker på vad som passar.
När det här väl är på plats slutar du uppfinna din feedbackprocess på nytt för varje roll och varje kandidat. Workflowet tar hand om den repeterbara analysen, och du kan lägga tiden på den mänskliga delen som faktiskt påverkar utfallet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.