CV-granskning faller ihop i samma ögonblick som ”bara en sökande till” blir 80 PDF:er, fem inkorgstrådar och ett kalkylark som ingen litar på.
Rekryterare känner det först. Sedan grundare som rekryterar vid sidan av, och ops-ansvariga som försöker hålla processen rättvis. Den här automatiseringen för CV-granskning poängsätter kandidater konsekvent, loggar varje beslut och skickar uppföljningar utan att du behöver sitta och vakta pipelinen.
Nedan ser du exakt vad arbetsflödet gör, vad du behöver för att köra det och hur ”snabbare gallring” ser ut i faktiska timmar.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Gmail för snabbare cv-granskning
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0["<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/form.svg' width='40' height='40' /></div><br/>On form submission"]
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI 4o", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Google Sheets2", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Text Classifier", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Extracting CV data", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Screening & Evaluating Resum..", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail3", pos: "b", h: 48 }
n2 -.-> n8
n3 --> n9
n4 --> n10
n5 --> n4
n5 --> n3
n6 -.-> n5
n7 --> n8
n0 --> n7
n1 -.-> n8
n8 --> n5
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 n0 trigger
class n1,n5,n8 ai
class n2,n6 aiModel
class n3,n4 database
classDef customIcon fill:none,stroke:none
class n0 customIcon
Problemet: CV-granskning blir inkorgskaos
Du börjar med goda intentioner: granska varje CV, ta anteckningar, skicka svar och hålla teamet synkat. Sedan kommer volymen. PDF:er ligger i mejltrådar, kommentarer hamnar i Slack och ”snabba poäng” varierar beroende på vem som granskade och när. Ännu värre: du kan inte enkelt förklara ett beslut i efterhand eftersom motiveringen aldrig dokumenterades, eller dokumenterades olika av olika personer. Den långsamma delen är inte läsningen. Det är sorteringen, dokumentationen och fram-och-tillbaka som stjäl din eftermiddag.
Friktionen växer för varje steg. Här är var det börjar fallera.
- CV:n blir granskade två gånger, medan andra kandidater aldrig får en ordentlig genomgång.
- Poängsättningen glider över tid, så ”samma” CV får ett annat utlåtande nästa vecka.
- Uppföljningsmejl släpar efter, vilket får dig att framstå som oorganiserad för starka kandidater.
- Du landar i ett kalkylark fullt av luddiga anteckningar som ”verkar bra” utan riktig motivering.
Lösningen: AI-poängsättning + loggning i Google Sheets + uppföljningar via Gmail
Det här arbetsflödet gör CV-granskning till ett repeterbart, dokumenterat system. En kandidat skickar in en PDF via en n8n-formulärtrigger. Arbetsflödet extraherar CV-texten och skickar den sedan till en AI-utvärderingsagent driven av OpenAI, baserat på dina rollspecifika kriterier och matchningsfrågor. Utvärderingen parsas till ett strukturerat resultat (så du får konsekventa fält i stället för ett rörigt stycke), och en klassificerare jämför poängen med din tröskel. Därifrån förgrenar det sig tydligt: godkända kandidater loggas på fliken ”Accepted” i Google Sheets och får ett inbjudningsmejl via Gmail, medan ej godkända kandidater loggas på fliken ”Rejected” och får ett avslagsmejl. Varje rad innehåller poäng och motivering, så du kan stå för besluten senare utan att gräva i trådar.
Det börjar med en PDF-uppladdning. Mitten är ”tänkarbetet”: extrahering, utvärdering, strukturerad parsning och sedan ett godkänd/ej godkänd-beslut. Slutet är prydligt: två Sheets-flikar uppdateras automatiskt och rätt mejl skickas varje gång.
Vad du får: automatisering vs. resultat
| Vad arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du får 30 CV:n på en vecka för en roll. Manuellt lägger du kanske cirka 10 minuter per CV på att öppna PDF:en, skriva anteckningar, sätta en poäng och skicka en uppföljning, vilket blir ungefär 5 timmar administration innan du ens bokar intervjuer. Med det här arbetsflödet laddar du upp varje PDF på en minut eller två och låter utvärderingen köra i bakgrunden. Du granskar fortfarande toppkandidaterna, men loggningen och mejlen är redan klara, så rutinjobbet sjunker till under en timme.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra beslut som Accepted och Rejected
- Gmail för att skicka mejl vid godkännande och avslag
- OpenAI API-nyckel (hämta den i OpenAI API-dashboarden)
Kunskapsnivå: Medel. Du klistrar in inloggningsuppgifter, justerar variabler i AI-prompten och bekräftar att dina Sheets-flikar matchar arbetsflödet.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
CV-uppladdningen triggar allt. En kandidat (eller du) skickar in en PDF via den inbyggda formulärtriggern i n8n, så du slipper jaga bilagor i inkorgen.
PDF:en görs om till användbar text. Arbetsflödet extraherar CV-innehållet från filen, vilket innebär att AI:n utvärderar vad som faktiskt står i dokumentet, inte bara filnamnet och din magkänsla.
AI:n utvärderar och klassificerar kandidaten. Den OpenAI-drivna utvärderingsagenten poängsätter CV:t utifrån dina måste-krav, din rollbeskrivning och dina frågor om mjuka kompetenser. En parser för strukturerat output läser svaret till förutsägbara fält, och en klassificerare kontrollerar poängen mot din tröskel och avgör ”Accepted” eller ”Rejected”.
Sheets och Gmail uppdateras automatiskt. Godkända kandidater läggs till på fliken Accepted och får ett inbjudningsmejl. Ej godkända kandidater hamnar på fliken Rejected och får avslagsmejlet, så inget blir liggande mellan stolarna.
Du kan enkelt ändra poängkriterierna för att matcha en ny roll utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Skapa intagsformuläret som samlar in CV:n och sökandeuppgifter för vidare bearbetning.
- Lägg till och öppna Form Intake Trigger.
- Ställ in Form Title på
Please Upload your resume. - Bekräfta att formulärfälten inkluderar Resume (fil, obligatoriskt, acceptera
.pdf), Email (obligatoriskt), Phone Number (obligatoriskt) och Name (obligatoriskt). - Spara noden för att generera den publika formulär-URL:en för sökande.
Steg 2: extrahera innehåll från CV
Konvertera den uppladdade PDF:en till text som kan utvärderas av AI-agenten.
- Lägg till Extract Resume Text och koppla den till Form Intake Trigger.
- Ställ in Operation på
pdf. - Ställ in Binary Property Name på
Resume.
Steg 3: konfigurera AI för CV-utvärdering
Konfigurera AI-agenten så att den utvärderar CV:t mot rollspecifika kriterier och returnerar ett strukturerat JSON-svar.
- Öppna Resume Evaluation Agent och ställ in Text på
=This is my CV "{{ $json.text }}". - Säkerställ att Prompt Type är inställd på Define och att Has Output Parser är aktiverad.
- Bekräfta att systemmeddelandet innehåller era platshållare som
{{COMPANY_NAME}},{{ROLE_NAME}}och{{CRITERIA_1}}–{{CRITERIA_5}}så att ni kan ersätta dem med verkliga värden. - I OpenAI Chat Engine väljer ni modellen
gpt-4ooch kopplar den som språkmodell för Resume Evaluation Agent. Credential Required: Anslut eraopenAiApi-uppgifter. - Öppna Structured Output Reader och verifiera att exempel på JSON-schema matchar den output ni vill ha.
Steg 4: konfigurera beslutsklassificering och routning
Klassificera AI-beslutet som Accepted eller Rejected och routa poster till rätt output.
- Öppna Decision Classifier och ställ in Input Text på
={{ $json.output.decision }}. - Bekräfta att kategorierna är Accepted (om beslutet är Proceed) och Rejected (om beslutet är rejct).
- Koppla OpenAI Classifier Model som språkmodell för Decision Classifier och välj modellen
gpt-4.1-mini. Credential Required: Anslut eraopenAiApi-uppgifter. - Säkerställ att flödet routar korrekt: Decision Classifier output går till både Append Accepted Sheet och Append Rejected Sheet parallellt.
Steg 5: koppla Google Sheets för beslutsloggar
Skriv accepterade och avvisade kandidater till separata ark med strukturerade fält.
- Öppna Append Accepted Sheet och ställ in Operation på
append. - Ställ in Document ID på
[YOUR_ID]och Sheet Name på[YOUR_ID](Accepted). Credential Required: Anslut eragoogleSheetsOAuth2Api-uppgifter. - Mappa kolumner med de befintliga uttrycken, till exempel Email till
={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }}och JUSTIFICATION till={{ $json.output.justification }}. - Upprepa samma konfiguration i Append Rejected Sheet med namnet på det avvisade arket. Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter.
[YOUR_ID] med verkliga Google Sheets-dokument- och ark-ID:n, annars kommer append att misslyckas.Steg 6: konfigurera e-postsvar till sökande
Skicka mejl om acceptans eller avslag till den sökande baserat på klassificerarens utfall.
- Öppna Send Acceptance Email och ställ in Send To på
={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }}. - Ställ in Subject på
Hiring Processoch behåll HTML-Message som angivet, men ersätthttps://[YOUR_SCHEDULING_LINK]med er riktiga boknings-URL. Credential Required: Anslut eragmailOAuth2-uppgifter. - Öppna Send Rejection Email och ställ in Send To på
={{ $('Form Intake Trigger').item.json.Email.toLowerCase() }}och Subject påHiring Process. Credential Required: Anslut eragmailOAuth2-uppgifter.
{{ $('Form Intake Trigger').item.json.Name }} så att personaliseringen renderas korrekt.Steg 7: testa och aktivera ert workflow
Validera hela flödet från formulärinsändning till uppdateringar i arken och leverans av e-post.
- Klicka på Execute Workflow och skicka in ett test-CV via Form Intake Trigger.
- Bekräfta att Extract Resume Text ger läsbar text och att Resume Evaluation Agent returnerar strukturerad JSON.
- Verifiera att Decision Classifier routar till rätt gren och att antingen Append Accepted Sheet eller Append Rejected Sheet lägger till en rad.
- Kontrollera att motsvarande e-post skickas via Send Acceptance Email eller Send Rejection Email.
- När allt är validerat, växla workflowet till Active för användning i produktion.
Vanliga fallgropar
- Åtkomst till Google Sheets kan fallera om det anslutna Google-kontot saknar redigeringsbehörighet på filen. Om tillägg slutar fungera, kontrollera först delningsinställningarna för arket och behörigheten i n8n.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter om dina Google- och OpenAI-konton är redo.
Nej. Du kopplar konton och redigerar några prompt-platshållare.
Ja. n8n har ett gratis alternativ för egen hosting 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 in kostnader för OpenAI API, som vanligtvis är några cent per CV beroende på promptens storlek.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och klarar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Uppdatera AI-promptens platshållare som COMPANY_NAME, ROLE_NAME, ROLE_DESCRIPTION, CRITERIA_1 till CRITERIA_5 och Q1 till Q5 så att utvärderingen matchar tjänsten. Sätt sedan THRESHOLD till din godkänd-poäng. De flesta team justerar också Gmail-mallarna så att accepteringsmejlet låter som att en människa skrev det.
Oftast handlar det om behörigheter eller fel kalkylarks-ID. Bekräfta att det anslutna Google-kontot kan redigera filen och välj sedan om arket i stegen ”Append Accepted Sheet” och ”Append Rejected Sheet” i n8n. Om du nyligen duplicerade kalkylarket kan arbetsflödet fortfarande peka på det gamla. Kontrollera också att flikarna heter exakt ”Accepted” och ”Rejected”, eftersom avvikande namn kan orsaka tysta fel.
Gott om för typiska små team. På n8n Cloud styrs gränsen främst av din månatliga körningskvot, och vid egen hosting finns ingen körningsgräns (det beror på din server). I praktiken kan du bearbeta CV:n ett och ett eller i batchar; den främsta flaskhalsen är API-hastighet och eventuella OpenAI rate limits på ditt konto.
Ofta, ja. n8n är mer bekvämt när du behöver förgreningslogik (Accepted vs Rejected), strukturerade AI-output och möjligheten att hosta själv när volymen växer. Zapier eller Make kan fortfarande fungera, men AI-flöden för gallring i flera steg tenderar att bli dyra och svårare att felsöka. Om du behöver strikt kontroll över prompter och loggning känns n8n oftast renare. Prata med en automationsexpert om du vill ha hjälp att välja.
Du sätter reglerna en gång, och arbetsflödet tillämpar dem på samma sätt varje gång. Det är timmar tillbaka varje vecka, plus en rekryteringsprocess du faktiskt kan stå för.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.