Rekryteringsinkorgar blir stökiga snabbt. En ansökan kommer in snyggt, nästa är en PDF begravd i ett vidarebefordrat mejl, och plötsligt sitter du och kopierar in uppgifter i en tracker klockan 21.
Den här automatiseringen för Gmail Sheets screening träffar HR-chefer först, om vi ska vara ärliga, men rekryterare och småföretagare känner av den också. Du får konsekvent poängsättning, snabbare beslut och artiga svar som skickas i tid.
Nedan ser du vad arbetsflödet gör, vilka resultat du kan förvänta dig och hur du kör det stabilt utan att förvandla rekryteringen till ett hemmabygge av mjukvara.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Gmail + Google Sheets för snabbare kandidatscreening
flowchart LR
subgraph sg0["Gmail Trigger - Incoming Applications 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/httprequest.dark.svg' width='40' height='40' /></div><br/>☁️ Upload PDF to LlamaIndex"]
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/>⏳ Check Parsing Status"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "🔁 Condition: Was Parsing Suc..", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: " ⏱ Delay Before Recheck", pos: "b", h: 48 }
n4["<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 Parsed Markdown Result"]
n5["<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/> 🧼 Clean Markdown Text"]
n6@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n7@{ icon: "mdi:play-circle", form: "rounded", label: "Gmail Trigger - Incoming App..", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: " Set Job Criteria Text", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: " Extract Email Body Text", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: " Check Subject Validity", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check If PDF Attachment Exists", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: " Prepare Data for OpenAI", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: " Evaluate Candidate with Ope..", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: " Final Decision Check", pos: "b", h: 48 }
n15@{ icon: "mdi:message-outline", form: "rounded", label: " Send Acceptance", pos: "b", h: 48 }
n16@{ icon: "mdi:message-outline", form: "rounded", label: " Send Rejection", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: " Mark as Accepted", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: " Mark as Rejected", pos: "b", h: 48 }
n19@{ icon: "mdi:database", form: "rounded", label: " Update Candidate Status on ..", pos: "b", h: 48 }
n16 --> n18
n15 --> n17
n17 --> n19
n18 --> n19
n14 --> n15
n14 --> n16
n8 --> n9
n10 --> n11
n10 --> n6
n9 --> n10
n12 --> n13
n1 --> n2
n3 --> n1
n5 --> n12
n11 --> n0
n11 --> n12
n13 --> n14
n0 --> n1
n4 --> n5
n7 --> n8
n2 --> n4
n2 --> n3
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 n7 trigger
class n13 ai
class n2,n10,n11,n14 decision
class n19 database
class n0,n1,n4 api
class n5 code
class n19 disabled
classDef customIcon fill:none,stroke:none
class n0,n1,n4,n5 customIcon
Problemet: att gallra kandidater tar tid (och skadar förtroendet)
När ansökningar trillar in i Gmail hela dagen faller planen om “snabb genomgång senare” ihop. Du öppnar ett mejl, laddar ner en PDF, skummar igenom, försöker minnas kravprofilen och glömmer sedan att svara eller skickar en stressad mall som känns kall. Dagen efter hittar du inte samma CV igen, och dina anteckningar är utspridda mellan inkorgsetiketter, ett kalkylark och någons Slack-meddelande. Under tiden väntar bra kandidater. Vissa försvinner. Och du slutar med att granska den som hörs mest, inte den som passar bäst.
Det här bygger snabbt upp. Här brukar friktionen uppstå.
- CV-uppgifter skrivs om manuellt i Google Sheets, vilket är långsamt och bjuder in till misstag.
- Poängsättningen blir inkonsekvent eftersom varje granskare “typ minns” kriterierna på olika sätt.
- Sökande blir ghostade när inkorgen blir full, och det skadar ert varumärke.
- Intervjuinbjudningar skickas sent eftersom accepteringsmejl kräver manuell anpassning och bokningslänkar.
Lösningen: Gmail → AI-poängsättning → uppdateringar i Sheets + omedelbara svar
Det här arbetsflödet (HRMate) gör varje inkommande jobbansökan till en strukturerad kandidatuppgift med poäng, och skickar sedan rätt svar automatiskt. Det startar när en ny ansökan landar i Gmail. Om det finns en PDF med CV bifogad laddar n8n upp den till LlamaIndex för tolkning, väntar tills tolkningen är klar och hämtar tillbaka korrekt formaterad text. Innehållet, plus mejltexten och era rollkriterier, skickas till OpenAI (GPT‑4o‑mini) för att generera en matchningspoäng från 1 till 100. Till sist avgör n8n vad som händer härnäst: accepteringsmejl (med er Calendly-länk) vid höga poäng och artiga avböjningsmejl med motiverande feedback vid lägre poäng. Oavsett uppdateras Google Sheets så att er pipeline alltid är aktuell.
Arbetsflödet börjar med intag från Gmail och en ämnesvalidering så att bara riktiga ansökningar går vidare. Därefter tolkar det CV:t (när det finns), utvärderar kandidaten mot era kriterier och skickar dem vidare till “acceptera” eller “avslå”. Sist skriver det status till Google Sheets så att er shortlist och rapportering håller sig strukturerad.
Vad du får: automatisering vs. resultat
| Vad arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du får 20 ansökningar i veckan till en roll. Manuellt är det lätt att lägga cirka 10 minuter per kandidat på att ladda ner PDF:en, skumma, notera nyckeldetaljer, lägga till en rad i Sheets och sedan skicka ett svar. Det är ungefär 3 timmar per vecka, och det är den tråkiga typen av arbete. Med det här arbetsflödet är den enda “manuella” delen att läsa de högsta poängen i Google Sheets, kanske 30 minuter totalt. Tolkningen och mejlsvaren sker i bakgrunden medan du gör annat.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Gmail för att ta emot ansökningar och skicka svar.
- Google Sheets för att lagra status och poäng.
- LlamaIndex API-nyckel (hämtas från din LlamaIndex-kontos dashboard).
- OpenAI API-nyckel (hämtas från sidan för OpenAI API-inställningar).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och redigerar några textblock (kriterier och mejltexter).
Vill du inte sätta upp detta själv? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Så fungerar det
Intag och filtrering i Gmail. En Gmail-trigger kontrollerar nya meddelanden (ungefär varje minut) och validerar ämnesraden så att bara riktiga ansökningar går vidare. Allt annat kan stoppas tyst, vilket håller pipelinen strukturerad.
CV-tolkning när en PDF är bifogad. Om det finns en PDF laddar n8n upp den till LlamaIndex via HTTP Request, kontrollerar tolkningsstatus och väntar vid behov. När den är klar hämtar den den tolkade markdownen och städar upp den så att AI:n ser läsbart innehåll i stället för rörig formatering.
AI-poängsättning mot era rollkriterier. Texten i “Define Role Criteria” och kandidatens innehåll paketeras ihop och skickas till OpenAI (GPT‑4o‑mini). Arbetsflödet returnerar en poäng från 1 till 100, plus strukturerade bedömningsdetaljer som du kan lagra eller återanvända i mejlsvar.
Beslut, mejl och uppdatering i Google Sheets. En IF-grind skickar kandidater till accept eller avslag. Gmail skickar rätt meddelande och ett steg i Google Sheets uppdaterar raden med status, så att teamet kan granska shortlisten utan att gräva i mejltrådar.
Du kan enkelt justera ämnesfiltren för att stödja flera roller efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera Gmail-triggern
Ställ in arbetsflödets startpunkt så att nya kandidatmejl startar utvärderingsprocessen.
- Lägg till och öppna Gmail Intake Trigger för att bevaka inkorgen efter nya ansökningar.
- Credential Required: Anslut era Gmail-inloggningsuppgifter.
- Bekräfta att triggern kopplar vidare till Define Role Criteria som nästa nod i flödet.
Steg 2: anslut kandidatparsning och validering
Extrahera mejlinnehållet, validera behörighet och hantera cv-parsning före AI-utvärderingen.
- Konfigurera inflödesvägen: Define Role Criteria → Extract Message Body → Validate Subject Line → Verify PDF Attachment.
- När en PDF finns, skicka den till parsning: Verify PDF Attachment → ☁️ Send PDF to LlamaIndex → ⏳ Verify Parsing Status → 🔁 Parsing Success Check → 📥 Fetch Parsed Markdown → 🧼 Sanitize Markdown Text.
- Sätt upp en återförsöksslinga för parsningen genom att koppla 🔁 Parsing Success Check till ⏱ Pause Before Retry, och sedan tillbaka till ⏳ Verify Parsing Status.
- Observera att No-Op Placeholder finns för felsökning eller framtida utbyggnad och kan lämnas som den är.
Steg 3: sätt upp AI-utvärderingen
Förbered det rensade cv:t och rollkriterierna och bedöm sedan kandidatens matchning med AI-modellen.
- Använd set-noderna för att strukturera data: Define Role Criteria, Extract Message Body och Prepare Data for AI.
- Säkerställ att 🧼 Sanitize Markdown Text matar ut till Prepare Data for AI, och koppla sedan vidare till Assess Candidate via OpenAI.
- Credential Required: Anslut era OpenAI-inloggningsuppgifter i Assess Candidate via OpenAI.
- Verifiera att Assess Candidate via OpenAI routar vidare till Final Decision Gate för logik för godkännande/avslag.
Steg 4: konfigurera e-postutfall och uppdateringar i kalkylark
Skicka rätt svarsmejl och uppdatera kandidatstatusen i Google Sheets.
- Från Final Decision Gate, säkerställ att “true”-grenen kopplas till Dispatch Acceptance Email och att “false”-grenen kopplas till Dispatch Rejection Email.
- Credential Required: Anslut era Gmail-inloggningsuppgifter i både Dispatch Acceptance Email och Dispatch Rejection Email.
- Sätt statusflaggor: Dispatch Acceptance Email → Flag as Accepted och Dispatch Rejection Email → Flag as Rejected.
- Koppla båda statusnoderna till Update Status in Sheets och konfigurera målarket efter behov.
- Credential Required: Anslut era Google Sheets-inloggningsuppgifter i Update Status in Sheets.
- Aktivera Update Status in Sheets om ni vill att statusuppdateringar ska skrivas (den är för närvarande inaktiverad).
Steg 5: testa och aktivera ert arbetsflöde
Validera varje gren med ett exempelmejl och säkerställ att parsning och AI-utvärdering fungerar som förväntat.
- Kör Gmail Intake Trigger manuellt genom att skicka ett testmejl med ett PDF-cv bifogat.
- Bekräfta att flödet når Assess Candidate via OpenAI och därefter Final Decision Gate utan fel.
- Verifiera att en kandidat får antingen Dispatch Acceptance Email eller Dispatch Rejection Email, och att Update Status in Sheets skriver rätt status om den är aktiverad.
- När ni är nöjda, sätt arbetsflödet till Active för att köra kontinuerligt.
Vanliga fallgropar
- Gmail OAuth-inloggning kan löpa ut eller sakna behörighet för att “skicka mejl”. Om svar slutar gå ut, kontrollera först din Gmail-inloggning i n8n och säkerhetsinställningarna för det anslutna Google-kontot.
- Om du använder Wait-noder eller extern tolkning 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 redigera outputs för alltid.
Vanliga frågor
Cirka 45 minuter om dina inloggningar för Gmail, LlamaIndex och OpenAI är klara.
Nej. Du klistrar mest in API-nycklar och redigerar texten för jobbkraven. Den enda “tekniska” delen är att testa med ett riktigt ansökningsmejl för att bekräfta att tolkning och mejl fungerar.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna in API-användning för OpenAI och LlamaIndex, vilket vanligtvis är några dollar i månaden vid små volymer.
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 klarar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, och det är en av de bästa anledningarna att använda n8n för detta. Du kan duplicera noden “Define Role Criteria” och justera villkoret i “Validate Subject Line” så att varje roll styrs till rätt kriterier. Många team justerar också acceptansgränsen (IF-grinden som kontrollerar poäng ≥ 80), ändrar mejlton per avdelning och skriver till separata flikar i Google Sheets per roll.
Oftast beror det på utgången OAuth-åtkomst eller saknade Gmail-behörigheter för att skicka mejl. Anslut Gmail-inloggningen igen i n8n och bekräfta sedan att samma Google-konto både kan läsa och skicka meddelanden. Om det bara fallerar vid hög volym kan du slå i Googles rate limits, så det kan hjälpa att glesa ut körningarna något.
Många.
Ofta ja, när du lägger till PDF-tolkning, poänglogik och förgreningar. n8n hanterar flerstegsflöden med väntan, återförsök och villkorsstyrd routing utan samma “ett steg, en kostnad”-känsla som du får i vissa verktyg. Det går också att self-hosta, vilket är viktigt om du hanterar många ansökningar eller vill ha tajtare kontroll över kandidatinformation. Zapier eller Make kan fortfarande fungera för enkelt intag och en rad i ett kalkylark. Om du är osäker, prata med en automationsspecialist och kartlägg det billigaste, stabila alternativet innan du bygger.
Sätt upp detta en gång, så håller arbetsflödet din inkorg, ditt kalkylark och din kandidatkommunikation synkade. Du får tillbaka timmarna, och de sökande får en bättre upplevelse.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.