★ Utgåva Nº 01 · Automation & arbetsflöden
06 MAJ 2026 · GBG
Automation & arbetsflöden

Inkorgen sorterad innan jag öppnar den

Varje vardag kl 8 går Claude igenom min inkorg, klassificerar varje mejl mot ett regelverk och sätter en etikett direkt i Gmail. Eftersom Google blockerar det scope som behövs för tredjepartsappar går etiketteringen via Google Apps Script under mitt eget konto.

Comic-panel: Torbjörn vid skrivbordet med en laptop som visar en sorterad Gmail-inkorg med etiketterna KUND, NYHETSBREV, RENSA och ÅTGÄRD. Pratbubbla: "Sorterad innan kaffet."

Varje vardag går Claude igenom min inkorg i Gmail. Varje mejl klassificeras mot ett regelverk och får en etikett. Dessutom får jag ett sammanfattande mejl med det viktigaste och kuraterade nyheter från nyhetsbreven. Google blockerade möjligheten för Claude att sätta etiketter, men vi löste det genom ett Apps Script.

Min inkorg var en ohanterad mix av systemmejl, nyhetsbrev, betalningsbekräftelser, fakturor och kundmejl. Allting blandat utan inbördes ordning. Frågan var inte vad jag behövde göra, utan var jag ens skulle börja. För att bara hålla koll i mejlen skulle det krävas minst en kvart varje morgon, med risk att viktiga mejl glider under radarn.

Lösningen blev att låta Claude gå igenom inkorgen och sortera alla mejl innan jag ens öppnar den.

Vad jag ville uppnå

Målet var att kunna öppna en sorterad inkorg. Dels för att ordning och reda är trevligt, men också för att slippa känslan av att missa något viktigt. Jag får väldigt många notiser och varningar från olika system till exempel, och det är så lätt att någon viktig uppdatering eller åtgärd smiter obemärkt förbi, vilket kan skapa stora problem.

Utan sortering är det inte alltid lätt att förstå vad som är viktigt. Genom att Claude även läser innehållet så minskar risken betydligt för allvarliga missar. Ett annat viktigt syfte är att hänga med i alla nyheter, där Claude väljer ut upp till sju rubriker från nyhetsbreven.

Genomgången är också ett första steg mot något större. På sikt vill jag ha en daglig morgonbriefing som väger ihop kalender, projektstatus och inkorg till ett enda kontextlager innan dagen börjar. Eposten sparar tid direkt och kändes som rätt ställe att börja eftersom så mycket information och data passerar den.

Problemen som behövde lösas

Det uppenbara alternativet hade varit Gmail-filter, men filter är stela. De kan inte resonera om innehåll. De kan inte skilja på ett säkerhetslarm som faktiskt kräver åtgärd och ett som bara informerar om en lyckad inloggning. Klassificering på det djupet kräver en modell som läser texten, inte ett regelträd.

Tre saker behövde fungera ihop. Läsa mejlet, klassificera det, sätta etikett. De två första fixade vi med färdigbyggda kopplingar via MCP. Det tredje tog en hel del testande och funderande för att hitta en bra lösning.

Gmails API kräver ett scopehttps://mail.google.com/ för att kunna ändra etiketter. Google blockerar aktivt det scopet för overifierade tredjepartsappar, vilket inkluderar alla MCP-kopplingar och Make.com-integrationer. Felmeddelandet lämnar inget tolkningsutrymme, "den här appen har blockerats". Lösningen blev att gå via Google Apps Script, ett skript som körs inne i Googles eget ekosystem under mitt eget konto. Claude läser mejlet, väljer etikett, skickar en HTTP-förfrågan till skriptet, och skriptet gör själva ändringen. Inget scope-problem, eftersom skriptet är jag.

En sista knäck dök upp i själva anropet. curl fungerar inte mot en Apps Script-webhook, eftersom Google svarar med en redirect som curl följer som ett GET-anrop och tappar bort hela förfrågan. Pythons urllib hanterar redirecten korrekt och fick flödet att gå ända fram.

Vad jag byggde

Systemet körs som en schemalagd Claude Code-rutin varje vardag kl 8. Den hämtar alla mejl utan etikett över hela kontot inklusive skräppost (i batchar om 50), klassificerar varje mejl mot ett regelverk, sätter en etikett via Apps Script-webhooken (i batchar om max 20 anrop) och skickar en strukturerad sammanfattning.

Tolv kategorier täcker det mesta. Personliga mejl, kundmejl, nyhetsbrev, systemnotiser som kräver åtgärd, ekonomi, osv. Utöver de primära kategorierna finns en sekundär etikett för "Rensa". Den gör att jag kan gå till en egen etikett och gå igenom mejl som rimligtvis inte längre behövs. När jag ser att klassificeringen blir korrekt kan borttagningen av mejl med den etiketten ske automatiskt.

Regelverket bor i en markdown-fil som definierar exakta kriterier per kategori, hanterar specifika avsändare med explicita regler och beskriver hur morgonrapporten ska se ut. Den viktigaste distinktionen är mellan "åtgärd krävs" och "info". Den första kategorin är reserverad för händelser som faktiskt påverkar min infrastruktur eller kräver konkret handling inom 30 dagar. Allt annat, inklusive säkerhetsnotiser för inloggningar jag själv initierat och generiska plattformsändringar, är info.

Morgonrapporten följer ett fast format. Vad som kräver åtgärd idag, vad som behöver mitt svar, hur många mejl som sorterats per kategori, en kuratering av intressanta nyheter ur nyhetsbreven och flaggor för klassificeringar som kändes osäkra. Den sista delen gör regelverket självförbättrande. Osäkra fall pekar direkt på var reglerna behöver förtydligas.

Resultat och lärdomar

Klassificeringsträffsäkerheten var god direkt men behövde några korrigeringar i regelverket innan den blev pålitlig. Ett GDPR-webbinarium sorterades inledningsvis som vet-ej-fack, korrekt givet grundreglerna men fel utfall. Lösningen var att utvidga event-kategorin till juridik- och compliance-evenemang relevanta för företagande, och att lista kända event-avsändare explicit.

Idén med rensningsetiketten kom mitt i bygget. Om Claude ändå läser varje mejl kan den lika gärna flagga vad som är säkert att radera. Det visade sig vara mer användbart än väntat eftersom gamla nyhetsbrev och systemnotiser ackumuleras tyst i Gmails lagring och påverkar både sökbarhet och utrymme på sikt.

Den större lärdomen handlade om var begränsningen egentligen sitter. Det är inte modellens förmåga att klassificera, den klarar nyanser som ett filter aldrig hade kunnat. Det är åtkomsten. Att Google blockerar ett känsligt scope för tredjepartsappar är ett rimligt skydd för slutanvändaren, men det innebär att seriösa automationsflöden måste byggas via en mellanhand som körs som mig själv. Apps Script är inte den mest påkostade tekniken, men det är den som faktiskt fungerar i det här fallet, och samma mönster går att återanvända för andra Google-tjänster där vi stöter på liknande problem.

Hur jag går vidare

Nästa konkreta steg är ett rensningsflöde som agerar på Rensa-märkta mejl. Claude flaggar dem redan, det som saknas är själva raderingen, antingen via samma Apps Script-webhook eller ett separat schemalagt skript.

På längre sikt ska vi bygga ut systemet för en mer omfattande morgonbriefing som även inkluderar kalender och ha klara svar på mejl. Där kan vi även få med affärsanalyser och åtgärder för lösning eller uppdateringar som bara behöver godkännas. E-postlagret är det första steget, och samma mönster med en schemalagd Claude Code-rutin går att återanvända för andra datakällor när nya behov dyker upp.

Verktyg i den här processen

▸ MotorClaude

läser, klassificerar och väljer etikett för varje mejl, skriver morgonrapporten och kör hela flödet som en schemalagd rutin varje vardag kl 8.

▸ LäsningGmail MCP

Claudes koppling till Gmail för läsning och sökning. Skrivskyddad, all etikettering går via Apps Script.

▸ BryggaGoogle Apps Script

ett skript som körs inne i Googles eget ekosystem under mitt konto, vilket kringgår de scope-begränsningar som blockerar tredjepartsappar från att ändra etiketter. Driftsatt som webbapp med en hemlig token.

▸ AnropPython urllib

används inne i Claude-sandboxen för HTTP POST-anrop till webhooken, eftersom curl misslyckas tyst på grund av Apps Scripts redirect-beteende.