Avtalsgranskningar börjar med goda intentioner. Sedan landar PDF:en i Gmail, någon glömmer att spara “final final”-versionen, och den riskfyllda klausulen upptäcks två dagar för sent.
Den här automatiseringen av avtalsrisk slår först mot Ops Managers och team nära juridik, men byråägare som hanterar leverantörsavtal känner av den också. Du slutar med att göra samma jobb två gånger, och du har fortfarande ingen strukturerad dokumentationskedja.
Det här arbetsflödet hämtar avtal från Gmail och ert repository, riskpoängsätter med AI, larmar i Slack när det gäller, och loggar allt i Google Sheets så att du kan bevisa vad som hände i efterhand.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Gmail + Slack: avtalsrisker flaggas i Sheets
flowchart LR
subgraph sg0["Schedule Contract Review Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Contract Review", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Workflow Configuration", pos: "b", h: 48 }
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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook - Contract Upload"]
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Gmail - Contract Emails", 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/>Fetch Contracts from Reposit.."]
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/>Merge All Contract Sources"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Extract Contract Content", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Text Splitter - Clause Chunk..", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Document Loader - Contract P..", pos: "b", h: 48 }
n9@{ icon: "mdi:vector-polygon", form: "rounded", label: "OpenAI Embeddings", pos: "b", h: 48 }
n10@{ icon: "mdi:memory", form: "rounded", label: "Vector Store - Contract Clau..", pos: "b", h: 48 }
n11@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model - Complian..", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Structured Parser - Complian..", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "AI Agent - Compliance Checker", pos: "b", h: 48 }
n14["<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/>Calculate Risk Score"]
n15["<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/postgres.svg' width='40' height='40' /></div><br/>Store Compliance Results"]
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Risk Level", pos: "b", h: 48 }
n17["<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/>Alert - High Risk Contracts"]
n18["<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/>Send to Dashboard API"]
n19["<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/>Update CLM System"]
n20["<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/>Update ERP System"]
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Audit Trail", pos: "b", h: 48 }
n22["<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/postgres.svg' width='40' height='40' /></div><br/>Store Audit Trail"]
n9 -.-> n10
n19 --> n20
n20 --> n21
n21 --> n22
n16 --> n17
n16 --> n18
n14 --> n15
n18 --> n19
n1 --> n4
n3 --> n5
n6 --> n10
n0 --> n1
n15 --> n16
n2 --> n5
n5 --> n6
n13 --> n14
n4 --> n5
n7 -.-> n8
n10 --> n13
n8 -.-> n10
n12 -.-> n13
n11 -.-> n13
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,n3 trigger
class n7,n8,n12,n13 ai
class n11 aiModel
class n10 ai
class n9 ai
class n16 decision
class n15,n22 database
class n2,n4,n18,n19,n20 api
class n14 code
classDef customIcon fill:none,stroke:none
class n2,n4,n5,n14,n15,n17,n18,n19,n20,n22 customIcon
Problemet: avtalsrisk upptäcks sent (eller inte alls)
De flesta team “missar” inte avtalsrisker för att de är slarviga. De missar dem för att processen är splittrad. Ett avtal kommer via Gmail, ett annat ligger i Google Drive och ett tredje dyker upp via ett delat intake-formulär. Någon skummar efter uppenbara varningsflaggor, någon annan kollar efter compliance-språk, och sedan försvinner tråden i Slack-historiken. En månad senare får du frågan: “Godkände vi den där ändringen av skadeslöshet?” och allt du har är ett vagt minne och en nedladdad PDF som heter “agreement(7).pdf”. Det är så revisionsmardrömmar uppstår.
Det blir snabbt mycket. Här är var det faller isär.
- Avtal kommer in via flera kanaler, så du slösar tid på att leta fram “rätt” version innan granskningen ens börjar.
- Manuell klausulskanning är inkonsekvent, vilket gör att två granskare kan läsa samma avtal och flagga olika risker.
- Slack-notiser (om de ens sker) är informella och svåra att spåra i efterhand, särskilt när någon vill ha bevis under en revision.
- Loggning av utfall i Sheets sker ofta i efterhand, så din tracker ligger alltid efter och blir aldrig helt betrodd.
Lösningen: AI-avtalsgranskning som dirigerar risker och loggar en revisionskedja
Det här n8n-flödet fungerar som ett transportband för intake och granskning av avtal. Det startar enligt schema (för rutinmässiga granskningar) eller direkt när ett avtal kommer in (via Gmail eller ett webhook-intake). Flödet hämtar dokumentet, extraherar text från PDF:er och delar upp den i klausulstora delar så att inget viktigt försvinner i en textvägg. Därefter granskar en AI-agent dessa delar mot de compliance-regler och skyldigheter ni bryr er om, och producerar strukturerade fynd som går att använda. Ett riskpoängssteg sätter allvarlighetsgrad, sparar analysen i en databas och skickar högriskärenden till Slack så att rätt personer ser det snabbt. Till sist byggs en auditlogg och sparas, vilket gör att du kan återskapa beslutsvägen utan att gräva i gamla trådar.
Arbetsflödet startar när ett avtal kommer in via Gmail, ert repository eller en intake-webhook. AI extraherar nyckelvillkor och kontrollerar luckor eller inkonsekvenser, och sedan avgör en poängmotor vad som händer härnäst. Högriskärenden triggar en Slack-varning, och arbetsflödet synkar utfall till ert CLM och ERP samtidigt som det skapar revisionsredo underlag.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du granskar 20 leverantörsavtal i månaden. Manuellt kan även en “snabb skanning + anteckningar + Slack-ping + uppdatering i Sheets” ta cirka 30 minuter per avtal, så du lägger ungefär 10 timmar på att bara flytta runt information. Med det här flödet blir den mänskliga tiden närmare 5 minuter per avtal för att bekräfta intake och hantera flaggade punkter, medan AI kör i bakgrunden. Det är cirka 8 timmar tillbaka en vanlig månad, plus en tracker som hålls uppdaterad utan att någon behöver jaga den.
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 automatiskt ta in avtalsrelaterade e-postmeddelanden.
- Slack för att larma rätt kanal vid högriskavtal.
- Google Sheets för att logga utfall för rapportering och revision.
- Google Drive (valfritt) för lagrade avtal och mallar.
- Postgres för att lagra compliance-poster och auditloggar.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Kunskapsnivå: Medel. Du kopplar konton, klistrar in en API-nyckel och justerar prompts och tröskelvärden så att de matchar era avtalsstandarder.
Vill du inte sätta upp det här själv? Prata med en automations-expert (gratis 15-minuters konsultation).
Så fungerar det
Avtal triggar arbetsflödet från flera ingångar. En schemalagd trigger kör rutingranskningar, medan Gmail-intake och en webhook fångar avtal i samma ögonblick som de kommer in. Du är inte beroende av att någon vidarebefordrar filer “när de får en minut”.
Dokument hämtas och konverteras till granskningsbar text. n8n hämtar filer från er repository-endpoint och kombinerar dem med Gmail- och webhook-inlämningar, och extraherar sedan text från PDF:er. Därefter delar det upp innehållet i mindre klausulbitar så att analysen förblir korrekt även i långa avtal.
AI gör compliance-analys och producerar strukturerade fynd. Arbetsflödet använder OpenAI-baserade embeddings plus ett in-memory-klausullager för att behålla kontext, och kör sedan en compliance-chatmodell via en agent som utvärderar skyldigheter och luckor. Output-parsning gör resultatet till förutsägbara fält, vilket gör poängsättning och dirigering mycket enklare.
Risk poängsätts, dirigeras och skrivs till era system. Ett kodsteg beräknar en riskrating, poster sparas i Postgres och en router skickar högriskfall till Slack samtidigt som den pushar uppdateringar till dashboards. Slutligen synkar flödet mot era CLM- och ERP-endpoints och sparar en auditlogg.
Du kan enkelt ändra risktrösklar så att de matchar er godkännandepolicy utifrån era behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Ställ in arbetsflödet så att det körs automatiskt enligt ett schema, så att efterlevnadsgranskningar triggas utan manuellt arbete.
- Lägg till och öppna Scheduled Review Trigger.
- Ställ in schemaregeln så att den körs vid
triggerAtHour: 2under rule → interval. - Koppla Scheduled Review Trigger till Initialize Settings.
Steg 2: initiera api-endpoints och tröskelvärden
Lagra alla api-endpoints, Slack-kanal och risktrösklar på ett ställe för återanvändning i hela arbetsflödet.
- Öppna Initialize Settings och ställ in repositoryApiUrl till
<__PLACEHOLDER_VALUE__Contract Repository API URL__>. - Ställ in dashboardApiUrl till
<__PLACEHOLDER_VALUE__Dashboard API Endpoint__>och clmSystemUrl till<__PLACEHOLDER_VALUE__CLM System API URL__>. - Ställ in erpSystemUrl till
<__PLACEHOLDER_VALUE__ERP System API URL__>och complianceRulesUrl till<__PLACEHOLDER_VALUE__Compliance Rules API or File URL__>. - Bekräfta risktrösklar: riskThresholdHigh till
80och riskThresholdMedium till50. - Ställ in slackChannel till
<__PLACEHOLDER_VALUE__Slack Channel ID for Alerts__>.
Steg 3: koppla källor för kontraktsintag
Ta in kontrakt i ett enhetligt flöde från webhook-uppladdningar, Gmail-intag och hämtningar från repository.
- Konfigurera Incoming Contract Webhook med Path satt till
contract-upload, HTTP Method satt tillPOSToch Response Mode satt tilllastNode. - Öppna Gmail Contract Intake och ställ in filterfrågan till
subject:contractmed ett pollingintervall påevery 5 minutes. - Inloggningsuppgifter krävs: Anslut era
gmailOAuth2-uppgifter i Gmail Contract Intake. - Konfigurera Retrieve Repository Contracts med URL satt till
={{ $('Initialize Settings').first().json.repositoryApiUrl }}och aktivera Send Headers. - Ställ in headern Content-Type i Retrieve Repository Contracts till
application/jsonoch säkerställ att svarsformatet ärfile. - Koppla Incoming Contract Webhook, Gmail Contract Intake och Retrieve Repository Contracts till Combine Contract Inputs med Number Inputs satt till
3.
Steg 4: extrahera och förbered kontraktstext
Konvertera PDF:er till text och förbered klausulsegment för embeddings och retrieval.
- Konfigurera Extract Document Text med Operation satt till
pdf. - Ställ in Clause Chunk Divider med Chunk Size
2000och Chunk Overlap200. - Öppna Contract Document Loader och ställ in Data Type till
binaryoch Text Splitting Mode tillcustom. - Koppla ai-kedjan: Clause Chunk Divider → Contract Document Loader → In-Memory Clause Store.
Steg 5: konfigurera ai-baserad efterlevnadsanalys
Skapa embeddings av klausuler, analysera efterlevnad med ai-agenten och strukturera resultatet.
- Inloggningsuppgifter krävs: Anslut era
openAiApi-uppgifter i Generate AI Embeddings. - Ställ in In-Memory Clause Store till Mode
insertmed minnesnyckelnvector_store_key. - Öppna Compliance Chat Model och ställ in Model till
gpt-4.1-mini. - Inloggningsuppgifter krävs: Anslut era
openAiApi-uppgifter i Compliance Chat Model. - Konfigurera Compliance Analysis Agent med den angivna prompttexten och säkerställ att Has Output Parser är aktiverat.
- Ställ in Parse Compliance Output JSON Schema Example till det angivna schemat så att utdata blir strukturerad.
- Koppla ai-undernoder till agenten: Compliance Chat Model → Compliance Analysis Agent och Parse Compliance Output → Compliance Analysis Agent.
Steg 6: poängsätt risk och lagra efterlevnadsresultat
Beräkna risknivåer, spara resultat i er databas och routa utifrån allvarlighetsgrad.
- Öppna Compute Risk Rating och behåll den angivna JavaScript-algoritmen för riskpoängsättning.
- Konfigurera Save Compliance Records med Table satt till
<__PLACEHOLDER_VALUE__Compliance Results Table Name__>och Schema satt tillpublic. - Inloggningsuppgifter krävs: Anslut era
postgres-uppgifter i Save Compliance Records. - Ställ in reglerna i Risk Level Router så att de matchar
CRITICAL,HIGHochMEDIUMmed={{ $json.riskLevel }}, och behåll fallback-utgången märktLow Risk.
Steg 7: konfigurera aviseringar, dashboards och synkar
Skicka aviseringar, uppdatera dashboards och synkronisera resultat med externa system. Det här steget inkluderar parallell körning.
- Ställ in High Risk Slack Alert Text till den angivna meddelandemallen och Channel ID till
={{ $('Initialize Settings').first().json.slackChannel }}. - Inloggningsuppgifter krävs: Anslut era
slackOAuth2Api-uppgifter i High Risk Slack Alert. - Konfigurera Post Dashboard Update med URL satt till
={{ $('Initialize Settings').first().json.dashboardApiUrl }}, MethodPOSToch JSON Body satt till={{ $json }}. - Ställ in Sync CLM Platform URL till
={{ $('Initialize Settings').first().json.clmSystemUrl }}och JSON Body till den angivna objektmallen. - Ställ in Sync ERP Platform URL till
={{ $('Initialize Settings').first().json.erpSystemUrl }}och JSON Body till den angivna objektmallen. - Koppla utgångarna från Risk Level Router till både High Risk Slack Alert och Post Dashboard Update parallellt.
- Säkerställ att synkkedjan följer: Post Dashboard Update → Sync CLM Platform → Sync ERP Platform.
Steg 8: bygg audit log-spåret
Spara ett detaljerat audit trail för efterlevnad, spårbarhet och rapportering.
- Öppna Assemble Audit Log och ställ in fält som auditId till
={{ $now.toISO() }}-{{ $json.contractId }}och workflowExecutionId till={{ $execution.id }}. - Ställ in auditTimestamp till
={{ $now.toISO() }}och explainabilityReport till={{ JSON.stringify($json.findings) }}. - Konfigurera Persist Audit Log med Table satt till
<__PLACEHOLDER_VALUE__Audit Trail Table Name__>och Schema satt tillpublic. - Inloggningsuppgifter krävs: Anslut era
postgres-uppgifter i Persist Audit Log.
Steg 9: testa och aktivera
Validera arbetsflödet från början till slut och aktivera det för produktionsanvändning.
- Klicka på Execute Workflow och trigga ett exempelkontrakt via Incoming Contract Webhook eller skicka ett mejl som matchar
subject:contracttill Gmail Contract Intake. - Bekräfta att Extract Document Text matar ut extraherad text och att Compliance Analysis Agent producerar strukturerad data via Parse Compliance Output.
- Verifiera att Save Compliance Records och Persist Audit Log skriver rader till era PostgreSQL-tabeller.
- Kontrollera att utdata med hög risk triggar High Risk Slack Alert och att alla fall uppdaterar Post Dashboard Update följt av Sync CLM Platform och Sync ERP Platform.
- När allt fungerar, växla arbetsflödet till Active för att aktivera schemalagda körningar.
Vanliga fallgropar
- Gmail-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något skapar fel, kontrollera först statusen på dina n8n Gmail-credentials och Googles säkerhetsprompter för kontot.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
- Standardprompts i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka 45 minuter om dina konton och API:er är klara.
Nej. Du kopplar mest ihop verktyg och justerar prompts och tröskelvärden.
Ja. n8n har ett gratis self-hosted-alternativ 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 in kostnader för OpenAI API, vilket oftast är några cent per avtal beroende på längd och hur strikta dina prompts är.
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du. Ändra tröskellogiken i steget “Compute Risk Rating” och dirigeringen i “Risk Level Router” så att det matchar hur ditt team eskalerar (till exempel skicka medelrisk till en privat kanal och högrisk till juridik). Vanliga anpassningar är att lägga till extra Slack-destinationer per avtalstyp, uppdatera extraktionsprompten så att den fokuserar på specifika klausuler som skadeslöshet eller personuppgiftsbehandling, och utöka auditloggfälten så att ert CLM får allt det behöver.
Oftast är det en utgången OAuth-åtkomst eller en Google-säkerhetsprompt som behöver godkännas. Anslut Gmail-credential igen i n8n och bekräfta sedan att kontot har behörighet att läsa den inkorgsetikett du använder för avtalsintake. Om det bara fallerar under stressiga dagar kan du också slå i Gmail API-gränser, så minska polling-frekvensen eller filtrera mer aggressivt.
Många, så länge dina exekveringsgränser och API-kvoter hänger med.
För just det här flödet är n8n oftast ett bättre val eftersom det hanterar förgreningar, databaslagring och AI-bearbetning i flera steg utan att tvinga in dig i dyra task-räkningar. Det är också enklare att hålla en riktig revisionskedja när du kan skriva till Postgres och kontrollera hela flödet. Zapier eller Make kan fortfarande fungera om du bara behöver en enkel “e-post kommer in → skicka Slack-meddelande”-väg, men de blir klumpiga när du lägger till uppdelning i klausulbitar och strukturerad parsning. Om du är osäker, rita upp din “happy path” och din “högrisk-eskalering” först, och välj sedan plattformen som inte kommer att motarbeta dig. Prata med en automations-expert om du vill ha ett extra par ögon.
Du får snabbare granskningar, tydligare eskalering och dokumentation du kan stå för i efterhand. Sätt upp det en gång, och låt sedan arbetsflödet ta hand om de repetitiva delarna.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.