CV-granskning blir rörig snabbt. Filer hamnar i någons inkorg, anteckningar finns i någon annans huvud, och ”snabba rankningar” blir långsamma diskussioner eftersom ingen minns hur ”bra” såg ut förra veckan.
Det här slår hårdast mot HR-chefer, helt ärligt. Men rekryterare och rekryteringsansvariga känner av det också, särskilt när du försöker skala en konsekvent resume screening automation utan att göra processen till en kalkylblads-horrorshow.
Det här workflowet tar kandidater från formulärinsändning till spårning i Airtable, fillagring i Drive, OpenAI-poängsättning, shortlist-beslut och kandidatmejl. Du får se vad det gör, vad du behöver och var team vanligtvis snubblar.
Så fungerar automationen
Se hur detta löser problemet:
n8n Workflow Template: Airtable + OpenAI: konsekvent cv-granskning
flowchart LR
subgraph sg0["Application Form 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/>Application Form Trigger"]
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/airtable.svg' width='40' height='40' /></div><br/>Airtable Create Record"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Drive CV Upload", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Applicant Info Map", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Download CV File", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Extract PDF Text", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "AI Scoring Agent", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Engine", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Airtable Position Lookup", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Structured Result Parser", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Shortlist Check", 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/airtable.svg' width='40' height='40' /></div><br/>Mark as Rejected"]
n12["<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/airtable.svg' width='40' height='40' /></div><br/>Mark as Interviewing"]
n13@{ icon: "mdi:database", form: "rounded", label: "Airtable JD Lookup", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "Generate Interview Questions", pos: "b", h: 48 }
n15["<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/>Questionnaire Form"]
n16["<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/airtable.svg' width='40' height='40' /></div><br/>Save Questionnaire Responses"]
n17@{ icon: "mdi:database", form: "rounded", label: "Job Posting Lookup", pos: "b", h: 48 }
n18@{ icon: "mdi:database", form: "rounded", label: "Applicant Detail Fetch", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Compose Followup Email", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Email Fields", pos: "b", h: 48 }
n21@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email", pos: "b", h: 48 }
n22@{ icon: "mdi:robot", form: "rounded", label: "Schedule Call Slot", pos: "b", h: 48 }
n23@{ icon: "mdi:location-exit", form: "rounded", label: "Calendar Booking Tool", pos: "b", h: 48 }
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/airtable.svg' width='40' height='40' /></div><br/>Update Call Time"]
n25@{ icon: "mdi:robot", form: "rounded", label: "Draft Screening Questions", pos: "b", h: 48 }
n26@{ icon: "mdi:database", form: "rounded", label: "Job Posting Lookup 2", pos: "b", h: 48 }
n27@{ icon: "mdi:database", form: "rounded", label: "Applicant Detail Fetch 2", pos: "b", h: 48 }
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/airtable.svg' width='40' height='40' /></div><br/>Store Screening Questions"]
n29@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Screening Output", pos: "b", h: 48 }
n6 --> n10
n1 --> n4
n8 -.-> n6
n13 -.-> n14
n21 --> n22
n20 --> n21
n4 --> n5
n17 -.-> n19
n22 --> n24
n29 --> n28
n26 -.-> n25
n10 --> n12
n10 --> n11
n12 --> n14
n15 --> n16
n23 -.-> n22
n5 --> n6
n7 -.-> n6
n19 --> n20
n3 --> n1
n0 --> n2
n18 -.-> n19
n25 --> n29
n27 -.-> n25
n16 --> n19
n14 --> n15
n9 -.-> n6
n2 --> n3
n24 --> n25
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 n6,n9,n14,n19,n22,n25 ai
class n7 aiModel
class n10 decision
class n1,n8,n11,n12,n13,n16,n17,n18,n24,n26,n27,n28 database
classDef customIcon fill:none,stroke:none
class n0,n1,n11,n12,n15,n16,n24,n28 customIcon
Utmaningen: rättvis, konsekvent CV-granskning i högt tempo
När ansökningarna börjar komma in är första som skapar fel alltid samma sak. CV:n kommer i olika format, den ”senaste” versionen försvinner, och någon kopierar manuellt in detaljer i en tracker samtidigt som de försöker minnas kravprofilen. Sedan kommer det subjektiva: två granskare läser samma CV och drar helt olika slutsatser, inte för att någon har fel, utan för att kriterierna inte används konsekvent. Efter en vecka av detta ligger ni efter, kandidater väntar och teamet fattar beslut under press. Det är då misstagen händer.
Det eskalerar snabbt. Här är var friktionen byggs på.
- CV:n sprids över mejltrådar och delade mappar, så du slösar tid bara på att hitta rätt fil.
- Manuella granskningsanteckningar går inte att jämföra, vilket gör shortlistning till en åsikt snarare än en process.
- Att copy-pasta kandidatdetaljer till Airtable eller Sheets bjuder in stavfel och saknade fält.
- Långsamma uppföljningar kostar dig bra kandidater eftersom de tackar ja till intervjuer någon annanstans först.
Lösningen: Airtable + OpenAI-poängsättning med automatiska uppföljningar
Det här workflowet gör er rekryteringsintagning till en strukturerad pipeline. Det börjar med ett strukturerat ansökningsformulär så att varje kandidat skickar in samma grunduppgifter. Så fort en inskickning landar skapar n8n en kandidatpost i Airtable, laddar upp CV:t till en dedikerad Google Drive-mapp och plockar ut texten ur PDF:en så att AI kan läsa den. Sedan utvärderar en AI-poängsättningsagent (driven av en OpenAI-chatmodell) CV:t mot jobbbeskrivningen som du lagrar i Airtable, och producerar ett konsekvent, strukturerat resultat som du kan jämföra mellan kandidater. Baserat på poängen markerar workflowet kandidaten som nekad eller på väg till intervju, genererar intervjufrågor för shortlistade kandidater och skickar anpassade mejl efter att de har fyllt i ett frågeformulär. Det föreslår också en samtalstid och uppdaterar Airtable med bokad tid.
Workflowet startar vid formulärinsändning. Därifrån standardiserar det kandidatdata, extraherar CV-innehåll och tillämpar samma poänglogik varje gång med hjälp av jobbdatalagring i Airtable plus OpenAI. Till sist uppdaterar det statusar i Airtable och driver mejl + schemaläggning så att processen fortsätter framåt.
Vad som förändras: före vs. efter
| Det här elimineras | Effekt du kommer att se |
|---|---|
|
|
Effekt i verkligheten
Säg att du får 25 sökande i veckan till en teknisk roll. Manuellt kan en rekryterare lägga cirka 10 minuter på att spara CV:t, skapa en rad i en tracker och skriva grundanteckningar, plus ytterligare 10 minuter för en första genomläsning. Det är ungefär 8 timmar i veckan innan du ens har schemalagt intervjuer. Med det här workflowet sker intag och arkivering automatiskt, och OpenAI-poängen ger dig en konsekvent första gallring på några minuter per kandidat. Du granskar fortfarande, men du börjar med en rankad lista i stället för en hög.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Airtable för kandidatuppföljning och jobbdetaljer.
- Google Drive för att lagra och organisera CV-filer.
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden).
Kunskapsnivå: Medel. Du kopplar konton, mappar några fält och justerar en AI-prompt på ett säkert sätt.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Workflow-flödet
Ansökningsintaget startar allt. En kandidat skickar in ditt formulär, och n8n fångar direkt upp deras uppgifter så att inget fastnar i någons inkorg.
Dina poster och filer organiseras automatiskt. Workflowet skapar en kandidat i Airtable, laddar upp CV:t till Google Drive och laddar sedan ner det igen för att extrahera PDF-texten för poängsättning. Lite redundant med flit, eftersom det säkerställer att den lagrade filen är samma som du utvärderar.
OpenAI poängsätter kandidaten mot rollen. Airtable tillhandahåller jobbbeskrivning och rollkrav, AI-agenten utvärderar CV-innehållet och en strukturerad parser tvingar fram konsekvent output (så att du inte får svamlande sammanfattningar när du behöver en poäng som går att fatta beslut på).
Statusändringar och kommunikation sker därefter. Om poängen går igenom ditt shortlist-villkor uppdateras Airtable till ”Intervju”, intervjufrågor genereras och ett frågeformulär skickas. Om inte markerar workflowet kandidaten som nekad och kan ändå skicka ett artigt svar, beroende på hur du konfigurerar mejlsteget.
Du kan enkelt justera shortlist-tröskeln för att matcha rollens senioritet utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera formulärtriggern
Konfigurera ansökningsformuläret som startar arbetsflödet och fångar CV-filen samt kandidatens uppgifter.
- Öppna Application Form Trigger och ställ in Form Title till
Job Application. - Ställ in Path till
automation-specialist-applicationoch Button Label tillSubmit. - Säkerställ att formulärfälten innehåller First Name, Last Name, Email, Phone, Years of experience och Upload your CV med Accept File Types satt till
.pdf. - Klistra in hela jobbannonsen i Form Description exakt som den anges i noden.
Steg 2: Anslut Google Drive och mappa ansökardata
Lagra det uppladdade CV:t i Drive och mappa nyckelfält innan ni skapar posten i Airtable.
- I Drive CV Upload ställer ni in Name till
{{ $binary.Upload_your_CV.fileName }}och Input Data Field Name tillUpload_your_CV. - Välj mål-Folder i Drive CV Upload för lagring av CV.
- Autentisering krävs: Anslut era googleDriveOAuth2Api-uppgifter i Drive CV Upload och Download CV File.
- I Applicant Info Map bekräftar ni att fältmappningarna är satta till:
- Name →
{{ $('Application Form Trigger').item.json['First Name'] + " " + $('Application Form Trigger').item.json['Last Name'] }} - Phone →
{{ $('Application Form Trigger').item.json.Phone }} - email →
{{ $('Application Form Trigger').item.json.Email }} - Experience →
{{ $('Application Form Trigger').item.json["Years of experience"] }} - Applied On →
{{ $('Application Form Trigger').item.json.submittedAt }} - CV link →
{{ $json.webViewLink }}
{{ $json.webViewLink }} finns tillgänglig för efterföljande noder.Steg 3: Skapa och uppdatera Airtable-poster
Lagra sökande i Airtable, följ status och logga enkätsvar samt screeningfrågor. Flera Airtable-noder används, så anslut autentisering i alla Airtable-noder.
- Öppna Airtable Create Record och välj er Base och Table (Applicants).
- Bekräfta dessa fält i Airtable Create Record:
- Name →
{{ $json.Name }}, Phone →{{ $json.Phone }}, CV Link →{{ $json["CV link"] }}, Applying for →["Automation Specialist"], Email address →{{ $json.email }}. - Autentisering krävs: Anslut era airtableTokenApi-uppgifter till alla Airtable-noder (6 Airtable- och 6 Airtable Tool-noder hanterar sökande, tjänster och uppdateringar).
- I Mark as Rejected säkerställer ni att Stage är
No hireoch att post-id är{{ $('Airtable Create Record').item.json.id }}. - I Mark as Interviewing säkerställer ni att Stage är
Interviewingoch att post-id är{{ $('Airtable Create Record').item.json.id }}. - I Save Questionnaire Responses bekräftar ni att post-id är
{{ $('Airtable Create Record').item.json.id }}och att det sammanslagna Q&A-fältet använder det befintliga expressionsblocket. - I Update Call Time ställer ni in Phone interview till
{{ $json.message.content['Start time'] }}. - I Store Screening Questions ställer ni in Phne interview screening questions till
{{ $json['Screening Questions'] }}.
{{ $('Airtable Create Record').item.json.id }} eller {{ $('Update Call Time').item.json.id }}.Steg 4: Konfigurera CV-extraktion och AI-poängsättning
Ladda ner CV:t, extrahera text och poängsätt den sökande med AI-agenten och den strukturerade output-parsern.
- I Download CV File ställer ni in File ID till
{{ $json.fields["CV Link"] }}och behåller Operation somdownload. - I Extract PDF Text ställer ni in Operation till
pdf. - I AI Scoring Agent behåller ni prompttexten och säkerställer att den refererar till den extraherade texten med
{{ $json.text }}. - OpenAI Chat Engine är ansluten som språkmodell för AI Scoring Agent – säkerställ att autentiseringsuppgifter läggs till i OpenAI Chat Engine.
- Structured Result Parser är ansluten som output-parser för AI Scoring Agent – konfigurera autentisering på den överordnade AI Scoring Agent om det krävs i er miljö.
- Airtable Position Lookup är en AI tool-undernod för AI Scoring Agent – behåll den ansluten och säkerställ att airtableTokenApi-uppgifter är satta på Airtable-verktyget.
- I Shortlist Check ställer ni in det numeriska villkoret till
{{ $json.output.score }}större än eller lika med0.7.
Steg 5: Generera och samla in intervjufrågor
Ta fram AI-genererade intervjufrågor, presentera dem via ett formulär och spara svaren tillbaka till Airtable.
- I Generate Interview Questions ställer ni in Model till
gpt-4o-minioch säkerställer att JSON Output är aktiverat. - Autentisering krävs: Anslut era openAiApi-uppgifter i Generate Interview Questions.
- Airtable JD Lookup är en AI tool-undernod för Generate Interview Questions – behåll den ansluten och säkerställ att Airtable-autentisering finns på det verktyget.
- I Questionnaire Form behåller ni de fem fältetiketterna mappade mot uttrycken:
{{ $json.message.content.interview_questions[0].question }}till{{ $json.message.content.interview_questions[4].question }}.- I Save Questionnaire Responses behåller ni det sammanfogade Q&A-mappningsblocket så att svaren lagras tillsammans med respektive fråga.
Steg 6: Skriv och skicka uppföljningsmejl, boka sedan ett samtal
Använd AI för att skriva ett uppföljningsmejl, skicka det, boka ett samtal via Google Calendar och uppdatera Airtable med mötestiden.
- I Compose Followup Email ställer ni in Model till
gpt-4ooch behåller JSON Output aktiverat. - Autentisering krävs: Anslut era openAiApi-uppgifter i Compose Followup Email och Schedule Call Slot.
- Job Posting Lookup och Applicant Detail Fetch är AI tool-undernoder för Compose Followup Email – säkerställ att Airtable-autentisering är satt på de verktygen, inte på den överordnade noden.
- I Map Email Fields mappar ni To, Subject och Email Content till:
{{ $json.message.content.To }},{{ $json.message.content.Subject }}och{{ $json.message.content['Email Content'] }}.- I Dispatch Email ställer ni in From Email till er avsändaradress och behåller:
- To Email →
{{ $json.To }}, Subject →{{ $json.Subject }}, Text →{{ $json['Email Content'] }}. - Autentisering krävs: Anslut era smtp-uppgifter i Dispatch Email.
- I Schedule Call Slot behåller ni prompten och säkerställer att den refererar till
{{ $today }}för datumkontext. - Calendar Booking Tool är en AI tool-undernod för Schedule Call Slot – anslut googleCalendarOAuth2Api-uppgifter på verktyget och behåll:
- Start →
{{ $fromAI("start_time", "The start time for the meeting", "string", "2025-01-01T09:00:00Z") }}, End →{{ $fromAI("end_time", "The end time for the meeting", "string", "2025-01-01T09:00:00Z") }}. - I Update Call Time bekräftar ni att post-id är
{{ $('Save Questionnaire Responses').item.json.id }}.
Steg 7: Generera och lagra screeningfrågor
Skapa en anpassad uppsättning screeningfrågor efter att samtalet är bokat och lagra dem i Airtable.
- I Draft Screening Questions behåller ni Model inställd på
gpt-4ooch säkerställer att prompten refererar till{{ $('Extract PDF Text').item.json.text }}. - Job Posting Lookup 2 och Applicant Detail Fetch 2 är AI tool-undernoder för Draft Screening Questions – säkerställ att Airtable-autentisering är satt på de verktygen.
- I Map Screening Output ställer ni in Screening Questions till
{{ $json.message.content['Screening Questions'] }}. - I Store Screening Questions bekräftar ni att post-id är
{{ $('Update Call Time').item.json.id }}och att frågefältet använder{{ $json['Screening Questions'] }}.
Steg 8: Testa och aktivera ert arbetsflöde
Verifiera varje steg med en exempelansökan och aktivera sedan arbetsflödet för produktion.
- Klicka på Execute Workflow och skicka in en testpost i Application Form Trigger med ett PDF-CV.
- Bekräfta att CV:t laddas upp i Drive CV Upload och att Airtable-posten skapas av Airtable Create Record.
- Validera att AI Scoring Agent returnerar en poäng och att Shortlist Check routar till Mark as Interviewing eller Mark as Rejected som förväntat.
- Fyll i Questionnaire Form och bekräfta att Save Questionnaire Responses uppdaterar Airtable-posten.
- Kontrollera att Dispatch Email skickar uppföljningsmejlet och att Calendar Booking Tool skapar en kalenderhändelse via Schedule Call Slot.
- Verifiera att Store Screening Questions innehåller en ifylld lista med screeningfrågor.
- När testet är lyckat, växla arbetsflödet till Active för att köra det i produktion.
Saker att se upp med
- Airtable-inloggningar kan löpa ut eller kräva specifika behörigheter. Om saker skapar fel, kontrollera först scopes för din Airtable personal access token samt åtkomst till base/tabeller.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Ö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 att redigera output för alltid.
Vanliga frågor
Cirka en timme om din Airtable-base och Drive-mapp är redo.
Ja. Ingen kodning krävs, men någon bör vara bekväm med att mappa fält och testa med några exempel-CV:n.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på $20/månad för högre volym. Du behöver också räkna in kostnader för OpenAI API-användning, som vanligtvis är några cent per kandidat beroende på CV-längd och din prompt.
Två alternativ: n8n Cloud (hanterad, enklast setup) 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.
Du kan justera logiken i Airtable Position Lookup och Airtable JD Lookup för att hämta andra jobbkrav och sedan uppdatera prompten i AI Scoring Agent så att den speglar vad ”bra” betyder för den rollen. Vanliga anpassningar är att ändra shortlist-tröskeln i Shortlist Check, lägga till utslagsfrågor i Questionnaire Form och skriva om prompten i Compose Followup Email så att den matchar er tonalitet.
Oftast är det en utgången token eller saknade behörigheter i din base. Skapa en ny Airtable personal access token, bekräfta att den har läs/skriv-åtkomst till tabellerna du använder och välj sedan om base och tabell i Airtable-noderna. Dubbelkolla också att fältnamn matchar exakt, eftersom omdöpta kolumner kan se ut som ”auth-problem” när det egentligen är mappningsfel. Om fel bara händer vid hög belastning kan du slå i rate limits och bör lägga in en kort väntan eller minska batch-storleken.
På n8n Cloud Starter kan du vanligtvis köra några tusen workflow-exekveringar per månad, vilket räcker för de flesta mindre rekryteringsflöden. Om du self-hostar finns inget tak för exekveringar; serverresurserna blir gränsen. I praktiken är den långsammaste delen ofta extrahering av PDF-text och OpenAI-anropet, så räkna med några minuter per kandidat end-to-end när CV:n är långa.
Ofta, ja. Det här workflowet har förgreningar (shortlist vs nekad), filhantering (Drive-uppladdning, nedladdning, extrahering av PDF-text) och parsning av strukturerad AI-output, vilket är där Zapier/Make-upplägg kan bli sköra eller dyra. n8n ger dig också möjligheten att self-hosta, så du betalar inte mer bara för att du hade en intensiv månad. Om du bara behöver ”formulärinsändning → skapa Airtable-post” är Zapier helt okej. Om du vill ha konsekvent poängsättning och automatiserade intervjusteg är n8n ett lugnare val. Prata med en automationsexpert om du vill ha hjälp att välja.
När det här väl rullar slutar din rekryteringsprocess att bygga på minne och hjälteinsatser. Workflowet sköter den repetitiva sorteringen och uppföljningen så att du kan fokusera på själva beslutet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.