Dina jobbaviseringar på Upwork är “hjälpsamma” tills de begraver de verkliga möjligheterna under en hög av nästan-rätt uppdrag. Du skannar, du ögnar, du tvekar — och plötsligt har 30 minuter försvunnit utan att du har något att visa för det.
Om du är frilansare och behöver svara snabbt är den här automationen för Upwork lead scoring skillnaden mellan “jag söker senare” och “jag har redan skickat den bästa offerten”. Byråägare känner samma sak, eftersom de mest träffsäkra leadsen är sällsynta och tidskritiska. Även en marknadskonsult som jonglerar kundarbete har inte råd med oändlig inbox-sortering.
Det här n8n-flödet hämtar Upwork-aviseringar från Gmail, extraherar det som är viktigt, poängsätter matchningen med AI och postar först därefter vinnarna i Slack. Du får se hur det fungerar, vad du behöver och vad du ska justera så att poängsättningen matchar din exakta nisch.
Så fungerar automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Gmail till Slack: bara de bästa Upwork-leadsen
flowchart LR
subgraph sg0["Get Filtered Messages 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/markdown.dark.svg' width='40' height='40' /></div><br/>Convert To Markdown"]
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:message-outline", form: "rounded", label: "Mark as Read", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Get Filtered Messages", 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/slack.svg' width='40' height='40' /></div><br/>Send Slack Alert"]
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter By Score", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Opportunity Scorer", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Job Data Extractor", pos: "b", h: 48 }
n6 --> n7
n2 --> n0
n7 --> n4
n9 --> n8
n8 --> n6
n0 --> n9
n3 --> n2
n1 -.-> n9
n5 -.-> 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 n3 trigger
class n8,n9 ai
class n1,n5 aiModel
class n7 decision
classDef customIcon fill:none,stroke:none
class n0,n4 customIcon
Problemet: Upwork-aviseringar skapar mer jobb än leads
Upwork-aviseringar låter som en fördel, men standardfiltren är trubbiga. Du slutar ändå med att läsa dussintals “kanske”-jobb för att hitta ett som faktiskt matchar din kompetens, din timpenning och den typ av projekt du vill ha. Och eftersom Upwork är konkurrensutsatt gör tajmingen nästan lika ont som bruset. Du kan hitta det perfekta jobbet 40 minuter efter att det kom in — vilket oftast är för sent för att vara tidigt ute. Under tiden ligger ditt fakturerbara arbete där och väntar.
Friktionen byggs på. Det är inte en dålig avisering. Det är 20 små avbrott som sliter sönder din dag.
- Du slösar ungefär 5 minuter per mejl bara för att komma fram till “nej”, och de minuterna staplas snabbt.
- Du missar jobb som matchar riktigt bra eftersom de vid en snabb blick ser ut som resten, särskilt när du har mycket att göra.
- Att copy-pasta snuttar till anteckningar eller Slack är segt, så du spårar inte vad du redan har sett.
- När du väl hittar ett bra jobb tvekar du ändå, för du är inte säker på att det matchar dina kriterier.
Lösningen: Gmail → AI-poängsättning → Slack för jobb med hög träffsäkerhet
Det här flödet bevakar din Gmail-inkorg efter Upwork-mejl med jobbaviseringar och gör första filtreringsrundan åt dig. Varje gång det hittar nya aviseringar hämtar det mejlinnehållet, gör om det till korrekt formaterad text och extraherar viktiga jobbdedjer som titel, en beskrivningssnutt och metadata. Därefter jämför en AI-baserad “opportunity scorer” jobbdatan mot profilen och preferenserna du anger (din bio, verktyg du kan, branscher du gillar, prisgränser och vilken typ av uppdrag du undviker). Om poängen går igenom din tröskel postar n8n ett strukturerat Slack-meddelande så att du kan granska direkt och agera. Om den inte gör det håller den sig ur vägen. Det är ärligt talat hela poängen.
Flödet startar med en Gmail-trigger som pollar efter Upwork-aviseringar enligt ett schema (10 minuter som standard). AI extraherar jobbdedjerna, poängsätter matchningen och sätter ihop en snygg sammanfattning. Till sist får Slack bara de jobb som godkänns enligt din miniminivå.
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 runt 25 Upwork-aviseringar per dag. Om du lägger ens 5 minuter per mejl på att avgöra matchning, blir det ungefär 2 timmar per dag av skanning och tvekan. Med det här flödet “får” du fortfarande aviseringarna, men du läser bara de få som klarar din poängtröskel i Slack — kanske 3–5 meddelanden. De flesta dagar är det närmare 10 minuters genomgång plus en snabb ansökan, i stället för att tappa en stor del av morgonen.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Gmail för att läsa mejl med Upwork-aviseringar.
- Slack för att leverera aviseringar med hög matchning till en kanal.
- Inloggningsuppgifter till LLM-leverantör (konfigurera i OpenRouter eller hos din valda modellleverantör).
Kunskapsnivå: Medel. Du kopplar ihop konton, lägger in din profiltext i prompten för poängsättning och justerar ett tröskelfilter.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Gmail-trigger med polling. n8n kontrollerar din Gmail-inkorg var 10:e minut (som standard) och hämtar Upwork-mejl med jobbaviseringar som matchar triggerns sökfråga.
Mejlstädning och parsing. Flödet markerar meddelanden som lästa, renderar mejlet till konsekvent text och förbereder sedan innehållet så att det blir enklare att extrahera strukturerade fält ur stökig mejlformatering.
Jobbextraktion och AI-poängsättning av matchning. AI-noder extraherar jobbets titel, snutt och metadata och poängsätter sedan möjligheten mot frilansbion och kriterierna du klistrar in i prompten “Opportunity Scorer”.
Tröskelfiltrering och postning till Slack. Om poängen är tillräckligt hög sätter n8n ihop slutliga fält till ett strukturerat meddelande och postar det i din valda Slack-kanal.
Du kan enkelt ändra poängtröskeln så att den matchar din kalender (intensiva veckor vs. sälj-/jaktveckor) utifrån 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 lyssnar efter nya e-postmeddelanden med Upwork-jobbnotiser och skickar dem vidare i bearbetningskedjan.
- Lägg till och öppna Retrieve Filtered Emails (gmailTrigger) som trigger-nod.
- Inloggningsuppgifter krävs: Anslut era gmailOAuth2-inloggningsuppgifter.
- Ställ in Filters → Query till
from:([YOUR_EMAIL]) subject:(New job:). - Ställ in pollningsschemat att köra var
10minut. - Inaktivera Simple genom att sätta det till
falseså att fullständig meddelandedata finns tillgänglig.
Steg 2: koppla Gmail-åtgärder
Markera varje bearbetat e-postmeddelande som läst och förbered brödtexten för AI-extraktion.
- Öppna Flag Email Read och ställ in Operation till
markAsRead. - Ställ in Message ID till
{{ $json.id }}. - Inloggningsuppgifter krävs: Anslut era gmailOAuth2-inloggningsuppgifter.
- I Render Markdown Text ställer ni HTML till
{{ $('Retrieve Filtered Emails').item.json.textAsHtml }}och Destination Key tillmarkdown.
Steg 3: konfigurera AI-extraktion för jobbdataljer
Extrahera strukturerad jobbdata från e-postinnehållet med hjälp av språkmodellen och schemat.
- Öppna Extract Job Details och ställ in Text till
Below is a job alert email received from Upwork. Please extract the requested information in valid JSON format. Subject: {{ $('Retrieve Filtered Emails').item.json.subject }} Body: {{ $json.markdown }}. - Behåll Schema Type som
manualoch använd det angivna JSON-schemat för fält somjobName,jobType,priceochtags. - Primary Chat Model är ansluten som språkmodell för Extract Job Details — Inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i Primary Chat Model, inte i extraktorn.
Steg 4: konfigurera AI-poängsättning och sammanställning av resultat
Poängsätt hur väl jobbet passar utifrån er profil och sammanställ sedan utvärdering och jobbdata i ett enda objekt.
- I Assess Opportunity Fit behåller ni utvärderingsprompten i Text och säkerställer att profilblocket är anpassat efter era faktiska kompetenser och preferenser.
- Bekräfta att referensen till jobb-payloaden i prompten är
{{ JSON.stringify($json.output, null, 2) }}. - Secondary Chat Model är ansluten som språkmodell för Assess Opportunity Fit — Inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i Secondary Chat Model, inte i extraktorn.
- I Assemble Result Fields ställer ni in evaluation till
{{ $json.output }}och job till{{ $('Extract Job Details').item.json.output }}.
Steg 5: konfigurera filtrering och Slack-utskick
Filtrera fram endast högpoängsatta möjligheter och posta formaterade notiser till Slack.
- I Filter by Rating ställer ni in villkoret till Number med Left Value
{{ $json.evaluation.score }}och Operationgtesamt Right Value7. - Öppna Post Slack Notice och ställ in Select till
channel, och välj sedan ID:t för er målkanal. - Ställ in Text till den angivna flerradiga meddelandesträngen, som använder uttryck som
{{ $json.job.jobName.toUpperCase() }}och{{ $json.evaluation.score }}. - Inloggningsuppgifter krävs: Anslut era slackApi-inloggningsuppgifter.
Tips: Om inga Slack-meddelanden visas, verifiera att tröskelvärdet 7 i Filter by Rating inte utesluter alla resultat under testning.
Steg 6: testa och aktivera ert arbetsflöde
Validera flödet från början till slut med en riktig Upwork-notis och aktivera sedan för kontinuerlig bevakning.
- Klicka på Execute Workflow och skicka ett testmejl som matchar
from:([YOUR_EMAIL]) subject:(New job:). - Bekräfta att Flag Email Read markerar mejlet som läst och att Render Markdown Text skapar ett
markdown-fält. - Verifiera att Extract Job Details returnerar ett strukturerat JSON-objekt och att Assess Opportunity Fit returnerar
scoreochreasoning. - Kontrollera att Post Slack Notice skickar ett meddelande när poängen är
7eller högre. - Växla arbetsflödet till Active för att köra det automatiskt enligt schemat.
Vanliga fallgropar
- Slack-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera dina scopes i Slack-appen (minst chat:write.public och channels:read) och bekräfta att OAuth-token fortfarande är giltig.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder faller på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om du redan har Gmail, Slack och dina modelluppgifter redo.
Nej. Du kopplar främst ihop konton och klistrar in din profiltext i prompten för poängsättning.
Ja. n8n har ett gratis alternativ för självhosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad vid högre volym. Du behöver också räkna in LLM-API-kostnader, som vanligtvis är några dollar i månaden vid normala aviseringvolymer.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och kör n8n bra. Självhosting ger dig obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, och det bör du. Uppdatera texten inuti
Oftast beror det på en utgången eller återkallad OAuth-anslutning i n8n. Anslut din Gmail-behörighet igen och bekräfta sedan att triggerns sökfråga fortfarande matchar Upwork-aviseringar och att flödet har rätt att läsa och ändra meddelanden (det markerar mejl som lästa). Om det fungerar en gång och sedan slutar, kontrollera Gmails säkerhetsvarningar och eventuella admin-restriktioner i Workspace.
Räcker gott för normal användning. Den större begränsningen är din körvolym och LLM-användning: i n8n Cloud Starter får du ett tak för antal körningar per månad, medan självhosting tar bort det taket och flyttar gränsen till din serverkapacitet. I praktiken kan de flesta frilansare hantera dussintals aviseringar per dag utan problem, och du kan alltid minska polling-frekvensen om du vill göra färre körningar.
För AI-baserad poängsättning och mer detaljerad kontroll är n8n oftast ett bättre val. Du kan förgrena, filtrera och forma meddelanden utan att betala extra för varje “väg”, och självhosting finns där om du växer ur användningsgränser. Zapier eller Make kan fortfarande fungera om du bara vill ha “Gmail-mejl mottaget → Slack-meddelande”, men när du lägger till extraktion, poängsättning och trösklar brukar kostnader och komplexitet smyga upp. Om du vill ha hjälp att välja, prata med en automationsexpert och få en snabb rekommendation baserad på din aviseringsvolym.
Det här är hur “att vara tidigt ute” ser ut utan att bo i din inkorg. Låt flödet sköta sorteringen så att du kan lägga din uppmärksamhet på jobben du faktiskt vill ha.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.