Din inkorg ska inte vara ditt kandidatspårningssystem. Men när CV:n kommer in som PDF:er i Gmail är det lätt att tappa bort sig, glömma vem som sökte vilken roll eller sluta med att “spara” filer på fem olika ställen.
Den här automationen för Gmail resume scoring träffar rekryterare först, om vi ska vara ärliga. HR-generalister och grundare som rekryterar mellan möten känner det också. Utfallet är enkelt: varje CV lagras, poängsätts och loggas så att du snabbt kan granska toppkandidater utan manuell copy-paste.
Nedan ser du exakt hur flödet går från ett nytt mejl till en korrekt formaterad rad i Google Sheets, plus vad du behöver för att köra det och vanliga fallgropar att undvika.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Gmail + Google Sheets: CV poängsätts och loggas
flowchart LR
subgraph sg0["Inbox Attachment Watch Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Inbox Attachment Watch", 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/airtable.svg' width='40' height='40' /></div><br/>Retrieve Job Listings"]
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/code.svg' width='40' height='40' /></div><br/>Match Job From Subject"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Match Found Check", 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/code.svg' width='40' height='40' /></div><br/>Compose AI Prompt"]
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/merge.svg' width='40' height='40' /></div><br/>Initial Stream Merge"]
n6["<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/>Prepare Resume Files"]
n7["<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 Resume File"]
n8["<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/>Unify Prompt And File"]
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/code.svg' width='40' height='40' /></div><br/>Assemble Gemini Payload"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Request AI Analysis"]
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/merge.svg' width='40' height='40' /></div><br/>Aggregate Result Data"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Archive To Drive", 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/code.svg' width='40' height='40' /></div><br/>Parse AI Output"]
n14@{ icon: "mdi:database", form: "rounded", label: "Append To Sheet", pos: "b", h: 48 }
n3 --> n5
n3 --> n4
n8 --> n9
n5 --> n6
n1 --> n2
n7 --> n8
n11 --> n13
n2 --> n3
n12 --> n11
n0 --> n1
n0 --> n5
n13 --> n14
n4 --> n8
n4 --> n11
n9 --> n10
n6 --> n7
n6 --> n12
n6 --> n11
n10 --> n11
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 n3 decision
class n1,n14 database
class n7,n10 api
class n2,n4,n6,n9,n13 code
classDef customIcon fill:none,stroke:none
class n1,n2,n4,n5,n6,n7,n8,n9,n10,n11,n13 customIcon
Problemet: CV-screening blir inkorgskaos
När ansökningar kommer in via mejl ser processen “okej” ut tills du är begravd. En kandidat mejlar två gånger med uppdaterade PDF:er. En annan glömmer att ange jobbtiteln. Du laddar ner bilagor till skrivbordet, laddar upp dem igen senare och försöker sedan minnas vilken rad i kalkylarket som hör till vilken fil. Samtidigt frågar rekryterande chefer: “Har vi några bra än?” och du sorterar fortfarande på ämnesrader. Den verkliga kostnaden är inte bara tid. Det är missade uppföljningar, inkonsekvent bedömning och beslut som tas på ofullständiga anteckningar.
Det eskalerar snabbt. Här är var det faller isär i verkliga team.
- Någon måste läsa varje mejlämne och gissa vilken öppen roll det gäller.
- CV-filer laddas ner och sparas om, vilket skapar dubbletter och trasiga länkar.
- Poängsättningen blir inkonsekvent eftersom den beror på vem som hann granska den dagen.
- Uppdateringar i Google Sheets hamnar efter verkligheten, så “pipelinevyn” går inte att lita på.
Lösningen: Poängsätt CV från Gmail automatiskt och logga dem i Sheets
Det här flödet bevakar din Gmail-inkorg efter nya mejl som innehåller CV-bilagor (PDF). Så fort ett mejl kommer in hämtar det jobbtiteln från ämnesraden och kontrollerar den mot dina öppna tjänster i Airtable, så att CV:t utvärderas i rätt sammanhang. CV-filen lagras sedan i en angiven Google Drive-mapp (så att du har en tydlig källa att utgå från), och flödet skickar både filen och en strukturerad prompt till Gemini för analys. Gemini returnerar en poäng, plockar ut viktiga kandidatuppgifter som namn och telefon samt lägger till en förklaring på en mening som du snabbt kan skumma. Till sist lägger n8n in allt i Google Sheets, inklusive en nedladdningslänk till det lagrade CV:t.
Flödet startar i Gmail, därefter ger Airtable jobbsammanhanget och sedan levererar Gemini en konsekvent bedömning. Google Drive lagrar filen, och Google Sheets blir den “enda listan” som teamet kan lita på.
Det du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du får 20 CV på en vecka fördelat på 3 öppna roller. Manuellt kan du lägga cirka 10 minuter per CV på att ladda ner PDF:en, byta namn, lägga den i Drive, kontrollera roll och lägga in anteckningar i ett ark, vilket blir runt 3 timmar per vecka. Med det här flödet är “jobbet” i princip att öppna arket senare: Gmail triggar direkt, Drive-lagring och Gemini-poängsättning kör i bakgrunden och raden dyker upp automatiskt. Du får tillbaka dina 3 timmar, plus en mer välstädad kortlista.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger funkar bra)
- Gmail för att ta emot ansökningar och trigga körningar
- Google Drive för att lagra CV:n i en och samma mapp
- Google Sheets för att logga kandidater och AI-poäng
- Airtable för jobbannonser och beskrivningar
- Gemini API-nyckel (hämta den från Google AI Studio)
Svårighetsnivå: Medel. Du kopplar ihop konton, mappar några fält och klistrar in dina arbetsbeskrivningar.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis konsultation i 15 minuter).
Så fungerar det
Ett nytt mejl med CV landar i inkorgen. Flödet triggas från Gmail när ett meddelande kommer in med en bilaga, så att inget hänger på att någon kommer ihåg att kolla en mapp.
Jobbsammanhang hämtas från Airtable. n8n hämtar dina öppna jobbannonser och använder mejlets ämnesrad för att matcha kandidaten mot rätt roll. Om det inte finns någon matchning kan flödet stoppa tidigt i stället för att poängsätta mot fel jobb.
CV:t lagras och förbereds för AI. PDF:en laddas upp och arkiveras i Google Drive, och n8n skapar en tydlig prompt som innehåller arbetsbeskrivningen och de bedömningskriterier du bryr dig om.
Gemini poängsätter och extraherar detaljerna. Flödet skickar CV-filen plus prompten via HTTP Request och tolkar sedan Geminis svar till strukturerade fält som namn, telefon, poäng och en kort förklaring.
Allt läggs till i Google Sheets. En ny rad skapas med kandidatinfo, AI-poäng, feedback och en Drive-nedladdningslänk så att granskning och delning blir helt friktionsfritt.
Du kan enkelt ändra matchningslogiken så att den använder jobbkoder i stället för ämnestitlar, beroende på dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera Gmail-triggern
Konfigurera arbetsflödet så att det bevakar inkommande mejl med bilagor, så att CV:n fångas upp direkt.
- Lägg till noden Inbox Attachment Watch som din trigger.
- Ställ in Filters → q på
has:attachment. - Aktivera Options → downloadAttachments så att filerna blir tillgängliga längre fram i flödet.
- Ställ in Poll Times → item → mode på
everyMinuteför nästan realtidsinläsning. - Autentiseringsuppgifter krävs: anslut era gmailOAuth2-autentiseringsuppgifter.
Steg 2: anslut Airtable och matcha jobb
Hämta jobbannonser och matcha ämnesraden i mejlet mot den mest relevanta rollen.
- Lägg till Retrieve Job Listings och ställ in Operation på
search. - Välj Airtable Base och Table från er miljö (t.ex. ”ResumeRadar” → ”Job Descriptions”).
- Autentiseringsuppgifter krävs: anslut era airtableTokenApi-autentiseringsuppgifter.
- Lägg till Match Job From Subject och behåll den medföljande JavaScript-koden som beräknar likhet och en
MIN_SCORE-tröskel på0.60. - Lägg till Match Found Check och ställ in det booleska villkoret till
{{ $json.matchFound }}lika medtrue.
Match Found Check skickar utdata parallellt till både Initial Stream Merge och Compose AI Prompt.
Steg 3: bygg AI-prompten och förbered CV-filer
Skapa en detaljerad prompt för Gemini och extrahera giltiga CV-bilagor.
- I Compose AI Prompt behåller ni promptmallen som injicerar avsnitten EMAIL och JOB och returnerar strikt JSON.
- Anslut Initial Stream Merge till Prepare Resume Files för att skicka vidare mejl-payloads.
- I Prepare Resume Files behåller ni listan över tillåtna filtyper satt till
application/pdfoch den binära egenskapen somdata. - Notera den parallella splitten: Prepare Resume Files skickar utdata parallellt till Upload Resume File, Archive To Drive och Aggregate Result Data.
Steg 4: ladda upp till Gemini och begär AI-analys
Ladda upp CV-filen, sätt ihop modellens payload och skicka analysförfrågan.
- I Upload Resume File ställer ni in URL på
https://generativelanguage.googleapis.com/upload/v1beta/files?uploadType=mediaoch Method påPOST. - Ställ in Content Type på
binaryData, Input Data Field Name pådata, och inkludera headers:x-goog-api-key={{$env.GEMINI_API_KEY}}ochContent-Type={{ $json.mimeType || $binary.data.mimeType || 'application/octet-stream' }}. - Anslut Upload Resume File och Compose AI Prompt till Unify Prompt And File så att båda indata slås ihop.
- I Assemble Gemini Payload behåller ni koden som skapar
bodymedresponseMimeTypesatt tillapplication/json. - I Request AI Analysis ställer ni in URL på
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContentoch JSON Body på{{$json.body}}. - Ställ in query-parametern key till
{{$env.GEMINI_API_KEY}}och headern Content-Type tillapplication/json.
GEMINI_API_KEY—se till att den är satt i n8n innan ni testar.Steg 5: arkivera och aggregera resultat
Lagra CV:t i Drive, slå ihop strömmar, parsa AI-utdata och förbered strukturerade fält för ert kalkylark.
- Konfigurera Archive To Drive med er mål-Drive och Folder.
- Ställ in Name till det medföljande dynamiska uttrycket för att skapa tidsstämplade filnamn:
{{ (function () { const email = ($json.fromEmail || 'unknown').toLowerCase(); const user = email.split('@')[0].replace(/[^a-z0-9._-]+/g,'-').replace(/^-+|-+$/g,''); const d = new Date(Number($json.internalDate) || Date.now()); const yyyy=d.getUTCFullYear(), mm=String(d.getUTCMonth()+1).padStart(2,'0'), dd=String(d.getUTCDate()).padStart(2,'0'), hh=String(d.getUTCHours()).padStart(2,'0'), mi=String(d.getUTCMinutes()).padStart(2,'0'), ss=String(d.getUTCSeconds()).padStart(2,'0'); const ext = (($json.fileName || '').split('.').pop() || ($json.mimeType==='application/pdf'?'pdf':'bin')).toLowerCase(); return `${user || 'unknown'}__${yyyy}-${mm}-${dd}-${hh}${mi}${ss}.${ext}`; })() }}. - Autentiseringsuppgifter krävs: anslut era googleDriveOAuth2Api-autentiseringsuppgifter.
- Behåll Aggregate Result Data satt till Mode
combine, Combine BycombineByPositionoch Number Inputs4. - I Parse AI Output behåller ni JSON-parsningslogiken och utdatafält som
JobTitle,CandidateName,CandidateEmail,ResumeLinkochAIScore.
Steg 6: konfigurera utdata till Google Sheets
Lägg till de strukturerade urvalsresultaten i ett kalkylark för uppföljning.
- Lägg till Append To Sheet med Operation satt till
append. - Välj mål-Document (t.ex. ”ResumeRadar - Applicants”) och Sheet (t.ex. ”Sheet1”).
- Mappa kolumner med de medföljande uttrycken som
{{ $json.CandidateEmail }},{{ $json.CandidatePhoneNumber }}och{{ '=HYPERLINK("' + $json.ResumeLink + '","Download")' }}. - Autentiseringsuppgifter krävs: anslut era googleSheetsOAuth2Api-autentiseringsuppgifter.
Steg 7: testa och aktivera ert arbetsflöde
Verifiera körning från början till slut och växla automatiseringen till live-läge.
- Klicka på Execute Workflow och skicka ett testmejl med ett PDF-CV bifogat till den övervakade inkorgen.
- Bekräfta att Archive To Drive skapar en fil i er Drive-mapp och att Append To Sheet lägger till en ny rad med AI-poäng och CV-länk.
- Kontrollera Gemini-anropen i Upload Resume File och Request AI Analysis för lyckade 200-svar.
- Slå på arbetsflödet med reglaget Active för produktionsanvändning.
Vanliga fallgropar
- Google-inloggningar kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först inloggningarna för Gmail/Drive/Sheets på n8n:s sida Credentials.
- Om du använder Wait-noder eller extern rendering varierar processningstiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Gemini API-åtkomst kan fallera på grund av saknad nyckel eller faktureringsbegränsningar. Bekräfta att nyckeln är satt i n8n-credentials eller miljövariabler och verifiera den sedan i ditt Google AI Studio-projekt.
Vanliga frågor
Cirka en timme om dina jobb i Airtable och ditt Google Sheet är redo.
Nej. Du kopplar mest ihop konton och klistrar in dina poängsättningskriterier. “Kod”-noderna är redan inbyggda i flödet.
Ja. n8n har ett gratis alternativ för egen drift 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 med kostnader för Gemini API-användning.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och kör n8n bra. Egen drift ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja. Du kan justera ämnesmatchningen i “Match Job From Subject” och utöka din Airtable-tabell för jobb med avdelningsfält. Vanliga justeringar är separata Drive-mappar per avdelning, olika Gemini-prompter för poängsättning per roll och extra kolumner i Google Sheets för ansvarig rekryterande chef.
Oftast handlar det om att OAuth-åtkomst har gått ut eller att Gmail-behörigheter saknas i ditt Google-konto. Återanslut Gmail-inloggningen i n8n och bekräfta sedan att triggern bevakar rätt inkorg/etikett. Om du använder en delad inkorg, säkerställ att kontot du auktoriserade faktiskt har åtkomst till den. Kontrollera även Googles säkerhetsvarningar, eftersom ett lösenordsbyte kan bryta äldre sessioner utan att det märks.
Många, så länge din n8n-plan och gränserna i Google/Gemini hänger med.
Ofta, ja, eftersom det här flödet har nytta av förgreningar, sammanslagningar och att hantera filer plus AI-anrop på ett ställe. n8n ger också möjlighet till egen drift, vilket kan spela roll när CV-volymerna växer och prissättning per uppgift börjar svida. Zapier eller Make kan fortfarande funka om du bara vill ha “mejl kommer in → lägg till rad”, utan jobmatchning och utan disciplin i fillagringen. Så fort du behöver jobbsammanhang från Airtable och konsekventa prompter för poängsättning blir n8n ofta enklare att underhålla på sikt. Prata med en automationsexpert om du vill ha hjälp att välja.
När det här väl rullar slutar inkorgen vara en flaskhals i rekryteringen. Flödet tar hand om den repetitiva sorteringen och poängsättningen så att du kan lägga din uppmärksamhet på faktiska intervjuer.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.