Rekrytering på GitHub låter enkelt tills du gör det på riktigt. Du söker, klickar runt i profiler, gissar vem som är seriös, klistrar in länkar i ett kalkylark och tappar sedan tråden nästa dag.
Den här automationen för GitHub-rekrytering träffar tekniska rekryterare först, men rekryterande chefer och grundare märker det också. Du får ett korrekt formaterat Google Sheet med rankade leads (avduplicerade), plus Slack-meddelanden som bekräftar uppdateringar så att du slipper dubbelkolla hela tiden.
Nedan ser du arbetsflödet, vad det löser och vad du kan förvänta dig när det körs enligt schema och tyst bygger din pipeline i bakgrunden.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: GitHub till Google Sheets: rankade kandidater
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Run a workflow task", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Get details of a workflow task", pos: "b", h: 48 }
n3["<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/>Code in JavaScript"]
n4@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat", pos: "b", h: 48 }
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/slack.svg' width='40' height='40' /></div><br/>Send a message"]
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/slack.svg' width='40' height='40' /></div><br/>Send a message1"]
n4 --> n6
n7 -.-> n4
n0 --> n1
n3 --> n4
n1 --> n2
n5 -.-> n4
n6 --> n9
n2 --> n3
n2 --> n8
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 n4,n5 ai
class n7 aiModel
class n6 database
class n3 code
classDef customIcon fill:none,stroke:none
class n3,n8,n9 customIcon
Problemet: GitHub-sourcing blir rörigt, svårskalbart tidsödande pill
Att hitta duktiga utvecklare på GitHub är inte det svåra. Det svåra är att göra “intressanta profiler” till en organiserad, delbar pipeline som du faktiskt kan agera på. Du öppnar 30 flikar, skummar igenom repos, försöker dra slutsatser om senioritet utifrån följare och aktivitet, och copy-pastar sedan allt in i ett ark som snabbt blir inkonsekvent. Lägg till en person till som sourcar och ni börjar gå varandra på tårna. Samma kandidat, två rader. Eller ännu värre, ingen rad alls för att “jag trodde att du redan hade loggat dem”.
Det drar iväg snabbt. Här är var det brukar fallera.
- Du lägger cirka 5–10 minuter per profil bara på att samla grunderna, och det är innan du ens bedömer matchning.
- Poängsättning blir subjektiv, så de “bästa” leadsen beror på vem som råkade sourca den dagen.
- Dubbletter smyger sig in när namn varierar, profiler ändras eller någon loggar ett GitHub-handle istället för ett fullständigt namn.
- Det finns ingen pålitlig “klart”-signal, vilket innebär ständig kontroll och mycket tvekan i efterhand.
Lösningen: schemalagd GitHub-scraping + AI-poängsättning till ett avduplicerat Google Sheet
Det här arbetsflödet gör talangsourcing till något som fungerar mer som en pipeline. Det körs enligt schema (varje timme, dagligen, vad du vill), startar en BrowserAct-scrapinguppgift på GitHub utifrån dina kriterier (tänk “Python-utvecklare i Berlin”), och väntar sedan på att resultaten ska komma tillbaka. När rådata landar omvandlar n8n den till individuella kandidatposter och skickar varje profil genom en AI-agent. AI:n utvärderar det som är relevant som rekryteringssignaler (kvalitet på profilsammanfattning, repos, följare och mer) och producerar sedan strukturerad output inklusive en viktad FinalScore.
Slutligen skriver arbetsflödet varje kandidat till Google Sheets och använder kolumnen “Name” för att förhindra dubbletter. Du får också Slack-notiser: en vid fel (så att du inte missar driftstörningar) och en som bekräftar att arket uppdaterades korrekt.
Det du får: automation vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du granskar 25 GitHub-profiler per dag. Om det tar ungefär 8 minuter att öppna profilen, skanna repos, rimlighetskolla plats och logga leadet, är det runt 3 timmar sourcingtid. Med det här arbetsflödet blir den “manuella” delen mer att granska ett rankat ark och välja vilka du ska kontakta, kanske 20–30 minuter. Scraping och poängsättning körs i bakgrunden enligt schema, och Slack säger till när nya rader har landat.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- BrowserAct för att scrape:a GitHub utifrån kriterier
- Google Sheets för att lagra rankade, avduplicerade leads
- Slack för lyckade körningar och felnotiser
- Gemini API-åtkomst (hämta från Google AI Studio)
Kompetensnivå: Medel. Du kopplar konton, sätter scrapingkriterier och mappar några fält till ditt ark.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema triggar körningen. Sätt det till varje timme om du rekryterar aggressivt, eller dagligen om du bara vill ha ett jämnt inflöde av nya leads.
BrowserAct scrape:ar GitHub utifrån dina filter. Du definierar sökintentionen (språk och plats), sedan startar arbetsflödet ett scrapingjobb och kontrollerar senare om det är klart. Om uppgiften misslyckas får Slack en felnotis så att du inte väntar på leads som aldrig kommer.
n8n strukturerar scrape-resultatet och förbereder kandidater. Ett transformationssteg delar upp rå JSON till en post per utvecklare så att poängsättning och uppdateringar i arket blir konsekventa.
AI-agenten poängsätter och strukturerar varje profil. Med en Gemini-chattmodell utvärderar den profilen och tar fram ett normaliserat resultat (inklusive en FinalScore) som är enkelt att sortera och granska.
Google Sheets lagrar pipelinen, Slack bekräftar uppdateringen. Nya kandidater läggs till som korrekt formaterade rader, och dubbletter undviks med hjälp av kolumnen Name. Du kan enkelt justera dina sökkriterier och vikter i poängsättningen utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Det här arbetsflödet startar enligt ett schema, vilket sätter igång BrowserAct-automationen.
- Lägg till eller öppna Scheduled Automation Trigger.
- Ställ in regelintervallet så att det körs varje timme genom att konfigurera Rule till
{"interval":[{"field":"hours"}]}. - Anslut Scheduled Automation Trigger till Launch Workflow Task för att initiera uppgiftskedjan.
Steg 2: Anslut BrowserAct-körning av uppgift
BrowserAct-arbetsflödet kör GitHub-sökningen efter bidragsgivare och returnerar rått utdata från uppgiften.
- Öppna Launch Workflow Task och ställ in Workflow ID till
[YOUR_ID]. - Konfigurera Input Parameters såsom Language =
Python, Location =Berlin, Total_Page =2och Public_Repositories =5. - Inloggningsuppgifter krävs: Anslut era browserActApi-inloggningsuppgifter i Launch Workflow Task.
- Öppna Retrieve Task Details och ställ in Task ID till
{{ $json.id }}, Operation tillgetTask, Wait For Finish tilltrue, Max Wait Time till600och Polling Interval till20. - Inloggningsuppgifter krävs: Anslut era browserActApi-inloggningsuppgifter i Retrieve Task Details.
[YOUR_ID] kommer BrowserAct inte att starta och arbetsflödet kommer inte att returnera några resultat.Steg 3: Sätt upp datatransformering och AI-poängsättning
Utdata från uppgiften parsas till items, poängsätts sedan med AI-agenten och struktureras för efterföljande uppdateringar.
- I Transform JSON Script, behåll JavaScript-koden som parsar
$input.first().json.output.stringtill flera items. - Öppna Candidate Scoring Agent och ställ in Text till den angivna prompten som innehåller uttryck som
{{ $json.Summary }},{{ $json.Followers }}och{{ $json.TotalRepo }}. - Säkerställ att Candidate Scoring Agent har Has Output Parser aktiverat och att Structured Result Parser är kopplad som output parser.
- Öppna Structured Result Parser och ställ in JSON Schema Example till den angivna schema-mallen.
- Öppna Gemini Conversation Model och koppla den som språkmodell för Candidate Scoring Agent.
- Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Conversation Model. Structured Result Parser använder den överordnade agenten och tar inte emot inloggningsuppgifter direkt.
$input.first().json.output.string saknas—verifiera att BrowserAct-utdatavägen matchar den här förväntade strukturen.Steg 4: Konfigurera utdatauuppdateringar och notifieringar
Poängsatta kandidater skrivs till Google Sheets och en Slack-notifiering skickas efter uppdateringar.
- Öppna Update Spreadsheet Row och ställ in Operation till
appendOrUpdate. - Ställ in Document ID till
[YOUR_ID]och Sheet Name till[YOUR_ID]. - Mappa kolumner till uttryck: URL =
{{ $json.output.URL }}, Name ={{ $json.output.Name }}, Score ={{ $json.output.Score }}, Folowers ={{ $json.output.Folowers }}, Location ={{ $json.output.Location }}, TotalRepo ={{ $json.output.TotalRepo }}. - Ställ in Matching Columns till
Nameså att uppdateringar matchar befintliga rader. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Update Spreadsheet Row.
- Öppna Notify Slack Channel och ställ in Text till
GitHub Contributors Updated, och välj sedan er Slack-kanal. - Inloggningsuppgifter krävs: Anslut era slackOAuth2Api-inloggningsuppgifter i Notify Slack Channel.
Name, Location, TotalRepo, Folowers, URL och Score kan uppdateringen misslyckas eller skriva tomma värden.Steg 5: Lägg till varningar för felhantering
Arbetsflödet skickar fel vid hämtning av uppgift till en Slack-varning för bättre insyn.
- Bekräfta att Retrieve Task Details använder felutgången för att ansluta till Post Error Alert.
- Öppna Post Error Alert och ställ in Text till
BrowserAct Workflow Faces Problem. - Välj lämplig Channel där felvarningar ska visas.
- Inloggningsuppgifter krävs: Anslut era slackOAuth2Api-inloggningsuppgifter i Post Error Alert.
Steg 6: Testa och aktivera ert arbetsflöde
Verifiera varje del av automatiseringen innan ni aktiverar den med ett skarpt schema.
- Klicka på Execute Workflow för att köra Scheduled Automation Trigger manuellt.
- Bekräfta att Launch Workflow Task och Retrieve Task Details returnerar en uppgift med en
output.string-payload. - Verifiera att Transform JSON Script ger flera items och att Candidate Scoring Agent returnerar strukturerade resultat via Structured Result Parser.
- Kontrollera att Update Spreadsheet Row skriver eller uppdaterar rader och att Notify Slack Channel postar
GitHub Contributors Updated. - Om det behövs, tvinga fram ett fel i Retrieve Task Details för att validera notifieringar i Post Error Alert.
- När allt är verifierat, växla arbetsflödet till Active för att köra enligt schema.
Vanliga fallgropar
- BrowserAct-uppgifter kan löpa ut eller kräva rätt behörigheter i workspace. Om det skapar fel, kontrollera först din BrowserAct API-nyckel och BrowserActs uppgiftshistorik.
- Om du använder polling med Wait-stil (t.ex. “get details” efter att du startat en scrape) varierar handläggningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din rekryteringsrubrik och “hur bra ser ut” tidigt, annars kommer du justera output för evigt.
Vanliga frågor
Cirka en timme om du redan har BrowserAct, Sheets och Slack på plats.
Nej. Du kopplar främst konton och justerar sökkriterierna och kolumnerna i arket. Det hjälper att känna sig bekväm med att granska ett steg för att “transformera JSON”, men du bygger ingen app.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in Gemini-användning, vilket oftast är några cent per batch beroende på hur många profiler du poängsätter.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är ärligt talat den delen du bör anpassa först. Du kan justera AI-agentens poängsättningsrubrik för att vikta olika signaler (till exempel lägga mer vikt på TypeScript-repos för frontend, eller data-verktyg och notebooks för dataroller). Om du ändrar vilka fält du vill spara, uppdatera Structured Result Parser så att den matchar. Mappa sedan de nya fälten i Google Sheets-noden “Update Spreadsheet Row” så att arket fortsätter vara sorteringsbart.
Oftast handlar det om utgångna Google-inloggningar eller fel behörigheter till kalkylarket. Anslut Google Sheets igen i n8n, bekräfta att kontot kan redigera målfilen och dubbelkolla att sheet-/fliknamnet matchar vad noden förväntar sig. Om det bara misslyckas ibland kan du också slå i rate limits när många kandidater hanteras samtidigt.
Om du kör egen drift beror det mest på serverstorlek och hur snabbt BrowserAct och AI-modellen returnerar resultat.
För det här användningsfallet: oftast ja, eftersom du gör mer än att flytta data mellan två appar. Du behöver schemalagda körningar, polling av uppgifter (“starta scrape” och sedan “hämta detaljer”), transformationslogik och strukturerad AI-output som håller sig konsekvent när du skalar. n8n hanterar förgrening och parsning utan att varje extra steg blir en prischock, och egen drift gör körvolymen flexibel. Zapier eller Make kan fortfarande fungera om du förenklar flödet och accepterar mindre kontroll över poängsättningen. Vill du ha hjälp att välja, prata med en automationsexpert.
När det här väl rullar blir din “sourcing” granskning och action, inte flikhamstring och copy-paste. Arbetsflödet tar hand om repetitiva moment. Du tar hand om rekryteringssamtalen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.