CV-granskning låter enkelt tills du jonglerar inkorgsbilagor, halvt ifyllda kalkylark och ”Har någon granskat den här?”-meddelanden. Arbetet är inte svårt, det tar bara aldrig slut. Och det dyker alltid upp när du redan har fullt upp.
Den här Sheets Slack shortlist-uppsättningen träffar rekryterare först, men rekryterande chefer och startupgrundare känner också av friktionen. Du får en konsekvent shortlistprocess som loggar varje kandidat i Google Sheets och pingar Slack när ett beslut behövs. Färre missar. Mindre fram och tillbaka.
Nedan hittar du arbetsflödet, affärsresultatet det driver och vad du behöver för att köra det stabilt i n8n.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Google Sheets + Slack: snabbare urval av CV
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:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Upload CV", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Applicant's Details", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Add Applicant's Details in G..", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Summarize Applicant's Profile", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Get Job Description from Goo..", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Summarize Job Role Description", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Semantic Fit & Evaluation by..", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Update Evaluation Results in..", pos: "b", h: 48 }
n12@{ icon: "mdi:message-outline", form: "rounded", label: "Notify TA for Approval via E..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Approval Check - IF Condition", pos: "b", h: 48 }
n14@{ icon: "mdi:message-outline", form: "rounded", label: "Send Shortlist Email to Cand..", pos: "b", h: 48 }
n15@{ icon: "mdi:message-outline", form: "rounded", label: "Send Rejection Email to Cand..", pos: "b", h: 48 }
n16@{ icon: "mdi:database", form: "rounded", label: "Update Applicant's Status as..", pos: "b", h: 48 }
n39@{ icon: "mdi:database", form: "rounded", label: "Update Applicant's Status as..", pos: "b", h: 48 }
n4 -.-> n5
n4 -.-> n7
n4 -.-> n10
n4 -.-> n9
n1 --> n6
n0 --> n3
n0 --> n1
n5 --> n7
n2 -.-> n10
n13 --> n39
n13 --> n16
n7 --> n8
n9 --> n10
n12 --> n13
n16 --> n15
n8 --> n9
n10 --> n11
n6 --> n5
n11 --> n12
n39 --> n14
end
subgraph sg1["Get Triggered when Applicant Status Update in Google Sheet Flow"]
direction LR
n30@{ icon: "mdi:play-circle", form: "rounded", label: "Get Triggered when Applicant..", pos: "b", h: 48 }
n31@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route actions based on Status", pos: "b", h: 48 }
n32@{ icon: "mdi:message-outline", form: "rounded", label: "Send Interview Invite Email", pos: "b", h: 48 }
n33@{ icon: "mdi:message-outline", form: "rounded", label: "Send Assessment Failed Email", pos: "b", h: 48 }
n34@{ icon: "mdi:message-outline", form: "rounded", label: "Send Interview Cancelled Email", pos: "b", h: 48 }
n35@{ icon: "mdi:message-outline", form: "rounded", label: "Interview Reschedule Invite ..", pos: "b", h: 48 }
n36@{ icon: "mdi:message-outline", form: "rounded", label: "Send Interview Passed/Shortl..", pos: "b", h: 48 }
n37@{ icon: "mdi:message-outline", form: "rounded", label: "Send Interview Failed Email", pos: "b", h: 48 }
n31 --> n32
n31 --> n33
n31 --> n34
n31 --> n35
n31 --> n36
n31 --> n37
n30 --> n31
end
subgraph sg2["Run Daily at 09:00 AM Flow"]
direction LR
n17@{ icon: "mdi:play-circle", form: "rounded", label: "Run Daily at 09:00 AM", pos: "b", h: 48 }
n18@{ icon: "mdi:database", form: "rounded", label: "Fetch Records with Status 'R..", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop to Send Assessment Link..", pos: "b", h: 48 }
n20@{ icon: "mdi:database", form: "rounded", label: "Get Assessment Form URL", pos: "b", h: 48 }
n21@{ icon: "mdi:message-outline", form: "rounded", label: "Send Assessment Submission E..", pos: "b", h: 48 }
n22@{ icon: "mdi:database", form: "rounded", label: "Update Status to Assessment ..", pos: "b", h: 48 }
n38@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n17 --> n18
n20 --> n21
n21 --> n22
n22 --> n19
n18 --> n19
n19 --> n38
n19 --> n20
end
subgraph sg3["Technical Support Engineer Assessment Flow"]
direction LR
n23["<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/typeform.dark.svg' width='40' height='40' /></div><br/>Technical Support Engineer A.."]
n24["<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/typeform.dark.svg' width='40' height='40' /></div><br/>Technical Project Manager As.."]
n25@{ icon: "mdi:database", form: "rounded", label: "Update Applicant Status to A..", pos: "b", h: 48 }
n26@{ icon: "mdi:message-outline", form: "rounded", label: "Notify TA via Email for Asse..", pos: "b", h: 48 }
n27["<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/slack.svg' width='40' height='40' /></div><br/>Notify TA via Slack for Asse.."]
n24 --> n25
n23 --> n25
n25 --> n26
n25 --> n27
end
subgraph sg4["Trigger when Interview booked by applicant in calendly Flow"]
direction LR
n28["<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/calendly.svg' width='40' height='40' /></div><br/>Trigger when Interview booke.."]
n29@{ icon: "mdi:database", form: "rounded", label: "Update Status to Interview B..", pos: "b", h: 48 }
n28 --> n29
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,n30,n17,n23,n24,n28 trigger
class n2,n5,n7,n9,n10 ai
class n4 aiModel
class n13,n31 decision
class n6,n8,n11,n16,n39,n18,n20,n22,n25,n29 database
class n27 disabled
classDef customIcon fill:none,stroke:none
class n0,n23,n24,n27,n28 customIcon
Utmaningen: CV-granskning blir snabbt en koordineringsröra
De flesta rekryteringsteam har inte problem med att ”hitta kandidater”. De har problem med att göra en hög av CV:n till strukturerade, försvarbara beslut. PDF:er kommer in via formulär, e-post, rekommendationer och slumpmässiga DM:s. Någon laddar ner, någon döper om filer, någon kopierar detaljer till ett ark, och sedan försöker ni komma ihåg vilken version av arket som faktiskt är den rätta. Lägg till godkännanden och nästa steg så blir det rörigt direkt. Ni betalar också en tyst skatt: inkonsekventa urvalskriterier, ”magkänsla”-beslut och klumpiga uppföljningar till kandidater som kommer en dag för sent.
Det summerar snabbt. Här är var det fallerar.
- Varje CV blir ett miniprojekt: spara PDF:en, extrahera detaljer, logga den och dela den, allt innan du ens bestämmer om det är ett ”ja”.
- Utvärderingen blir inkonsekvent eftersom varje granskare använder sin egen mentala checklista, så shortlists ändras beroende på vem som öppnade filen.
- Godkännanden hamnar utspritt (e-posttrådar, Slack-DM:s, kalenderanteckningar), vilket gör att beslut fastnar och kandidater tappar intresset.
- Statusspårningen slirar, så du råkar skicka fel mejl eller glömmer att skicka ett överhuvudtaget.
Lösningen: poängsätt CV:n i Sheets och styr beslut i Slack
Det här n8n-arbetsflödet gör CV-inflödet till en repeterbar pipeline. En kandidat skickar in ett formulär med sina uppgifter och en PDF med CV, som automatiskt sparas i Google Drive. n8n extraherar CV-texten och sedan utvärderar GPT-4 kandidaten mot rollen ni rekryterar för (hämtas från Google Sheets). Flödet skriver strukturerade resultat tillbaka till er Sheets-tracker och skickar sedan ett godkännande-mejl till TA-teamet med ett enkelt godkänn/avslå-beslut. När det är godkänt får kandidater automatiskt rätt nästa steg: en länk till ett test och senare en Calendly-länk för bokning. Slack-notiser håller teamet uppdaterat när tester kommer in och när det är dags att gå vidare.
Flödet startar vid CV-inlämning och slutar med intervjubokning (eller ett tydligt avslag). Google Sheets är er källa till sanning. Slack är där godkännanden och uppdateringar faktiskt blir sedda.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du kommer att se |
|---|---|
|
|
Effekt i praktiken
Säg att du får in 30 CV:n för en roll på en vecka. Manuell hantering kan innebära cirka 10 minuter per CV för att ladda ner PDF:en, skumma, plocka ut detaljer och logga anteckningar, plus ytterligare 5 minuter för att jaga godkännanden. Det är ungefär 7–8 timmar av fragmenterat arbete. Med det här flödet sker mottagning och loggning automatiskt och GPT-4 skapar ett strukturerat bedömningsunderlag i Sheets. Du granskar fortfarande, men nu handlar det snarare om cirka 2 timmar totalt, med Slack-notiser för de få beslut som faktiskt kräver mänsklig bedömning.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra kandidater, roller och statusar.
- Slack för att notifiera TA om godkännanden och inlämningar.
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden)
Kunskapsnivå: Medel. Du kopplar konton, mappar några fält och klistrar in dina länkar för test och Calendly.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
Kandidatinlämningen kommer in via en formulärtrigger. Flödet fångar namn, e-post, LinkedIn-URL, jobbprofil och den uppladdade CV-PDF:en i en standardiserad payload.
CV:t lagras och tolkas. n8n laddar upp PDF:en till Google Drive, extraherar texten och förbereder den för analys så att du inte fastnar med att läsa filer en och en bara för att få fram grunderna.
GPT-4 utvärderar kandidaten mot rollen. Flödet hämtar kravprofilen från Google Sheets, sammanfattar den och skapar sedan ett strukturerat scorecard (semantisk matchningspoäng, matchningar, luckor, mjuka färdigheter och varningsflaggor) med noderna OpenAI Chat Model och AI Agent.
Beslut och nästa steg styrs automatiskt. Resultaten loggas tillbaka till Google Sheets, TA-teamet får ett godkännande-mejl och Slack-notiser triggas när kandidater skickar in tester eller når viktiga milstolpar.
Du kan enkelt ändra poängsättningsmallen och statusstegen så att de matchar er rekryteringsprocess. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera formulärtriggern
Det här arbetsflödet startar när en kandidat skickar in ett formulär och förgrenar direkt för att hantera uppladdning och parsning av cv.
- Lägg till och konfigurera Form Submission Trigger som er primära intake-trigger.
- Bekräfta att Form Submission Trigger skickar utdata parallellt till både Upload Resume File och Parse File Contents.
- Behåll Flowpast Branding som en sticky note endast för referens (ingen konfiguration krävs).
Steg 2: anslut Google Drive och Google Sheets
CV-filer lagras och kandidatinformation registreras i Google Sheets via flera noder.
- Öppna Upload Resume File och anslut Google Drive. Inloggningsuppgift krävs: Anslut era googleDrive-inloggningsuppgifter.
- Anslut Google Sheets-inloggningsuppgifter till alla Google Sheets-noder (10+ noder hanterar kandidatinformation, jobbannonser, statusuppdateringar och uppföljning av tester). Inloggningsuppgift krävs: Anslut era googleSheets-inloggningsuppgifter.
- Säkerställ att exekveringskedjan går från Parse File Contents → Append Applicant Data Sheet → Extract Applicant Details.
- Bekräfta den schemalagda grenen från Daily 9AM Scheduler till Retrieve Resume Selected Rows för uppföljningar av tester.
Steg 3: konfigurera AI-bearbetning och parsning
Det här flödet extraherar kandidatuppgifter, sammanfattar kandidatprofil och rollbeskrivning samt gör en semantisk matchningspoäng.
- Öppna OpenAI Chat Model och lägg till inloggningsuppgifter. Inloggningsuppgift krävs: Anslut era lmChatOpenAi-inloggningsuppgifter.
- Verifiera att OpenAI Chat Model är ansluten som språkmodell för Extract Applicant Details, Summarize Candidate Profile, Summarize Role Description och HR Semantic Fit Review.
- Säkerställ att Structured Output Interpreter är ansluten till HR Semantic Fit Review som output-parser; lägg till inloggningsuppgifter på OpenAI Chat Model (överordnad modell), inte på parser-noden.
- Bekräfta AI-flödet: Extract Applicant Details → Summarize Candidate Profile → Retrieve Job Description Sheet → Summarize Role Description → HR Semantic Fit Review.
Steg 4: konfigurera utvärdering, godkännande och statusroutning
Utvärderingsresultat registreras, granskas av TA och routas till status-specifika e-poståtgärder.
- Säkerställ att HR Semantic Fit Review skickar utdata till Record Evaluation Results, sedan till Email TA for Approval och därefter till Approval Decision Check.
- Konfigurera Approval Decision Check för att routa godkända kandidater till Mark Status Resume Selected och avvisade kandidater till Mark Status as Rejected.
- Verifiera Mark Status Resume Selected → Send Shortlist Email och Mark Status as Rejected → Dispatch Rejection Email.
- Konfigurera Sheet Status Update Trigger så att den matar Route by Application Status och mappa varje switch-utgång till rätt e-postnod: Send Interview Invite, Send Assessment Failed Notice, Send Interview Cancel Notice, Send Reschedule Invite, Send Interview Passed Email och Send Interview Failure Notice.
Steg 5: konfigurera automation för tester och intervjuer
Inbjudningar till tester skickas enligt schema, och inskickade svar triggar TA-notiser och statusändringar.
- Konfigurera Daily 9AM Scheduler att köras enligt önskad frekvens och koppla den till Retrieve Resume Selected Rows.
- Bekräfta batchflödet: Retrieve Resume Selected Rows → Iterate Candidates for Assessment → Fetch Assessment Form Link → Send Assessment Email → Set Status Assessment Sent.
- Notera att Iterate Candidates for Assessment även routar till No-Op Placeholder för felsökning eller framtida utbyggnad.
- Konfigurera både Project Manager Form Trigger och Support Engineer Form Trigger att mata Set Status Assessment Submitted.
- Set Status Assessment Submitted skickar utdata parallellt till både Email TA Assessment Submitted och Slack TA Assessment Alert.
- Konfigurera Calendly Interview Booked för att trigga Set Status Interview Booked för schemaläggningsuppdateringar.
Steg 6: konfigurera inloggningsuppgifter för e-post och meddelanden
E-post- och meddelandenoder hanterar godkännanden, tester och intervjukommunikation.
- Anslut inloggningsuppgifter för alla e-postnoder (11+ emailSend-noder). Inloggningsuppgift krävs: Anslut era emailSend-inloggningsuppgifter.
- Anslut inloggningsuppgifter för Slack TA Assessment Alert om ni aktiverar den. Inloggningsuppgift krävs: Anslut era slack-inloggningsuppgifter.
- Anslut inloggningsuppgifter för Project Manager Form Trigger och Support Engineer Form Trigger. Inloggningsuppgift krävs: Anslut era typeformTrigger-inloggningsuppgifter.
- Anslut inloggningsuppgifter för Calendly Interview Booked. Inloggningsuppgift krävs: Anslut era calendlyTrigger-inloggningsuppgifter.
- Anslut inloggningsuppgifter för Sheet Status Update Trigger. Inloggningsuppgift krävs: Anslut era googleSheetsTrigger-inloggningsuppgifter.
Steg 7: testa och aktivera ert arbetsflöde
Kör end-to-end-tester för att verifiera parsning, AI-analys, statusuppdateringar och leverans av notiser.
- Använd Form Submission Trigger för att skicka in en testansökan med en cv-fil och bekräfta att båda parallella grenar körs.
- Verifiera att data dyker upp i Google Sheets-noderna och att Record Evaluation Results fylls i efter AI-analysen.
- Kontrollera att Email TA for Approval och efterföljande statusroutade e-postmeddelanden levereras korrekt.
- Testa det schemalagda flödet genom att köra Daily 9AM Scheduler manuellt och bekräfta att Send Assessment Email och Set Status Assessment Sent uppdateras korrekt.
- Aktivera arbetsflödet med reglaget Active när alla tester är godkända.
Se upp med
- Åtkomst till Google Sheets och Google Drive misslyckas ofta eftersom servicekontot aldrig delades på själva arket eller mappen. Kontrollera delningsbehörigheter i Google Drive först, inte inne i n8n.
- Om du använder Wait-noder eller extern bearbetning (som CV-tolkning och GPT-anrop) kan körtiden variera. Om efterföljande steg ibland skriver tomma fält, öka väntetiden och testa igen med en större PDF.
- Slack-notiser är bara användbara om de hamnar i rätt kanal med rätt kontext. Inkludera kandidatnamn, roll och länken till raden i Sheets, annars ignorerar folk notisen.
Vanliga frågor
Cirka en timme om dina Sheets-, Slack- och e-postkonton är redo.
Ja. Ingen kodning krävs, men du behöver koppla konton och mappa fält till kolumnerna i ditt Google Sheet.
Ja. n8n har ett gratis self-hosted-alternativ 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 OpenAI API-användning, vilket vanligtvis är några cent per CV beroende på promptstorlek och modell.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Du kan byta ut utvärderingskriterierna genom att redigera prompterna i sektionen AI Agent / OpenAI Chat Model och uppdatera mappningen för ”Record Evaluation Results” i Google Sheets. Vanliga justeringar är att ändra vad som räknas som en varningsflagga, vikta specifika färdigheter per roll och ändra statusstegen (till exempel lägga till ”Granskning av rekryterande chef” före ”CV valt”). Om du använder en annan bokningstjänst än Calendly, byt ut intervjulänken i noderna för intervjumejl.
Oftast handlar det om behörigheter. Om du använder ett Google-servicekonto måste arket och Drive-mappen delas med servicekontots e-postadress, annars kan n8n inte läsa eller skriva något. Kontrollera också att Google Sheets API och Google Drive API är aktiverade i ditt Google Cloud-projekt, och bekräfta att du valde dokumentet från listan inne i n8n i stället för att klistra in ett ID.
Om du self-hostar finns ingen fast körningsgräns; det beror främst på din server och OpenAI:s rate limits. På n8n Cloud beror kapaciteten på planens månatliga körningar, men för typiska rekryteringspipelines räcker det för hundratals kandidater i veckan. Den långsamma delen är oftast AI-utvärderingen, inte Slack eller Sheets.
Ofta, ja, eftersom det här flödet behöver förgreningslogik, strukturerade AI-utdata och flera triggers (formulär, scheman, ändringar i sheet-status och Calendly). n8n hanterar den komplexiteten utan att varje väg blir en separat betald ”zap”. Zapier eller Make kan fortfarande fungera för en lättviktsversion, som ”formulärinlämning → logga i sheet → notifiera Slack”. Om du vill ha CV-tolkning, GPT-4-poängsättning, godkännanden, styrning av tester och intervjubokning på ett ställe är n8n ett mer träffsäkert val. Om du är osäker, prata med en automationsexpert så får du ett rakt svar för din setup.
När detta väl rullar slutar er rekryteringspipeline att hänga på hjälteinsatser och minne. Flödet håller trackern strukturerad, puffar rätt personer vid rätt tidpunkt och ger dig timmar tillbaka varje vecka.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.