Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Qdrant + Google Sheets: regelefterlevnad med bevis

Rickard Andersson Partner, Nodenordic.se

Dina compliancegranskningar ser förmodligen ut så här: någon laddar upp en PDF, någon annan letar igenom den med Ctrl+F, och sedan skriver en tredje person om samma anteckningar till en ”rapport” som ingen riktigt litar på.

Det är här Qdrant compliance checks snabbt ger effekt. Complianceansvariga känner av revisionspressen, men det drabbar även driftansvariga och konsulter på byrå som gör granskningar av kunddokumentation. Målet är enkelt: ta fram ett revisionsredo resultat med stödjande källhänvisningar, utan att lägga en halv dag på att jaga bevis.

Det här arbetsflödet gör om ett uppladdat dokument plus en inskickad policy/rutin till en strukturerad compliancerapport, och loggar sedan resultaten till Google Sheets så att du får en felfri spårbarhet. Du får se vad som automatiseras, vad du får tillbaka och vad du behöver hålla koll på.

Så fungerar automationen

Hela n8n-flödet, från trigger till slutlig output:

n8n Workflow Template: Qdrant + Google Sheets: regelefterlevnad med bevis

Problemet: compliancekontroller utan bevis håller inte

Manuell compliancevalidering är långsam på ett förrädiskt sätt. Det handlar inte bara om att ”läsa en PDF”. Det handlar om att ladda ner filen, reda ut vilken version som är den riktiga, leta efter policyspråk som kan vara omformulerat, och sedan försöka styrka din bedömning med ett citat som har sidnummer. Gör du det över leverantörsdokumentation, interna SOP:er, HR-policyer, säkerhetsfrågeformulär eller regler för finansiell arkivering får du samma utfall: timmar lagda på att ta fram en rapport som ändå leder till följdfrågor eftersom underlaget är tunt.

Friktionen växer. Så fort någon frågar ”Var kommer det där ifrån?” är du tillbaka i dokumentet igen.

  • Granskare slösar cirka 2 timmar per dokument på att hitta samma passager igen för källhänvisningar och skärmbilder.
  • Bedömningar blir subjektiva när du inte kan peka på exakt text som stödjer ”uppfyller” eller ”uppfyller inte”.
  • Revisionsspår brister när resultaten ligger i någons inkorg i stället för i en konsekvent logg.
  • Policyuppdateringar skapar omarbete eftersom ingen vill göra om hela analysen från grunden.

Lösningen: Qdrant + AI-baserade compliancegranskningar, loggade till Sheets

Det här arbetsflödet delar upp compliancevalidering i två tydliga indata: först laddar du upp dokumentet (PDF, DOCX och liknande), sedan skickar du in rutin-/policytexten som dokumentet måste uppfylla. När dokumentet kommer in extraherar n8n texten, delar upp den i läsbara segment och lagrar vektorinbäddningar i Qdrant så att systemet senare kan hämta tillbaka mest relevant bevisning. När rutinen/policyn skickas in frågar AI-agenten Qdrant efter relaterade textpassager, jämför vad dokumentet faktiskt säger mot policykraven och returnerar en strukturerad rapport. Outputen innehåller en compliancesammanfattning, en sammanfattning av avvikelser, källhänvisningar hämtade från källtexten (med sidreferenser när de finns), samt ett konfidensvärde 0–100 baserat på bevisens kvalitet.

Flödet startar med två webhooks: en för dokumentuppladdning och en för rutininlämning som refererar till dokumentets ID. I mitten hanterar Qdrant ”hitta bevisen” medan AI-agenten hanterar ”avgör och förklara”. Till sist är resultaten redo att loggas i Google Sheets för ett revisionsredo spår som du kan sortera, dela och filtrera.

Det du får: automation kontra resultat

Exempel: så här ser det ut

Säg att du granskar 10 dokument i veckan mot interna rutiner. Manuellt kan en noggrann granskare lägga cirka 2 timmar per dokument på läsning, sökning och att bygga källhänvisningar, alltså ungefär 20 timmar per vecka. Med det här flödet laddar du upp PDF:en (en minut eller två), klistrar in rutinen och en kort beskrivning (ytterligare några minuter) och väntar sedan på bearbetning och AI-granskningen (ofta runt 10 minuter). Du gör fortfarande en snabb rimlighetskontroll, men du får tillbaka cirka 15 timmar de flesta veckor, plus starkare underlag för varje påstående.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Qdrant för vektorlagring och hämtning.
  • Google Sheets för att logga resultat för revisioner.
  • OpenAI API-nyckel (valfritt) (hämta den i OpenAI API-dashboarden) om du använder OpenAI för inbäddningar eller chatt.

Kunskapsnivå: Medel. Du kopplar in autentiseringar, mappar några fält och testar de två webhook-anropen med exempeldata.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis konsultation i 15 minuter).

Så fungerar det

Dokumentuppladdning triggar indexering. En webhook tar emot filuppladdningen, hämtar dokumentinnehållet (inklusive från ansluten lagring som Microsoft Graph i det här flödet) och förbereder det för sökning.

Text extraheras och förbereds för bevisning. n8n extraherar PDF-text, delar upp den i segment och skapar inbäddningar så att varje del blir sökbar på innebörd, inte bara nyckelord.

Qdrant blir ”bevisarkivet”. Flödet lagrar vektorerna i Qdrant och kan även rensa äldre vektorer först för att undvika att blanda versioner. Det håller dina källhänvisningar kopplade till rätt dokument.

Rutininlämningen triggar granskningen. En andra webhook tar emot policy-/rutintexten, en kort beskrivning för kontext och dokument-ID:t. AI-agenten hämtar de mest relevanta segmenten från Qdrant, utvärderar överensstämmelse och formaterar resultatet till en strukturerad compliancerapport med källhänvisningar och konfidensvärde.

Du kan enkelt justera formatet för rutinindata för att stödja checklistor eller kontroll-ID:n utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera webhook-triggern

Konfigurera de två webhook-inträdespunkterna som startar flödena för audit-inläsning och procedurvalidering.

  1. Lägg till webhooken Incoming Audit Upload och ställ in HTTP MethodPOST.
  2. Ställ in Path till creatorhub/audit-document-upload och Response Mode till lastNode.
  3. Lägg till webhooken Procedure Intake Hook med HTTP Method inställd på POST.
  4. Ställ in Path till creatorhub/procedure-validate och Response Mode till responseNode.

Tips: Använd test-URL:en för Incoming Audit Upload och Procedure Intake Hook när ni validerar payload-format under konfigureringen.

Steg 2: anslut filhämtning via Microsoft Graph

Konfigurera dokumenthämtningen som används för att hämta audit-filen från Microsoft Graph och förbereda den för bearbetning.

  1. I Retrieve Graph File ställer ni in URL till ={{$env.GRAPH_BASE_URL || "https://graph.microsoft.com"}}/v1.0/drives/{{$json.body.spDriveId}}/items/{{$json.body.spDocumentId}}/content.
  2. Koppla Incoming Audit UploadRetrieve Graph FilePurge Previous Vectors så att det linjerar med exekveringsflödet.
  3. I Purge Previous Vectors behåller ni koden som den är för att ta bort befintliga vektorer för samma spDocumentId innan ni indexerar om.

⚠️ Vanlig fallgrop: Om er Graph-endpoint kräver autentisering, lägg till den i Retrieve Graph File via request headers eller en pre-request credential—det här workflowet inkluderar inte credentials på den noden som standard.

Steg 3: konfigurera dokumentbearbetning och vektorlagring

Extrahera PDF-innehåll, dela upp det i segment och lagra embeddings i Qdrant för hämtning under audit-analysen.

  1. I Extract PDF Content ställer ni in Operation till pdf och Binary Property Name till =data.
  2. Konfigurera Chunk Text Segments med Chunk Overlap inställt på 10.
  3. I Assemble Document Metadata ställer ni in Text Splitting Mode till custom och mappar metadatavärden: documentId till ={{ $('Purge Previous Vectors').item.json.body.spDocumentId }} och documentName till ={{ $('Purge Previous Vectors').item.json.body.fileName }}.
  4. I Create Document Embeddings ställer ni in Model till ={{ $env.OLLAMA_EMBED_MODEL || "nomic-embed-text:latest" }}. Credential Required: Anslut era ollamaApi-credentials.
  5. I Store Vectors in Qdrant ställer ni in Mode till insert och Qdrant Collection till ={{ $env.QDRANT_COLLECTION || "audit-docs" }}. Credential Required: Anslut era qdrantApi-credentials.

Tips: Säkerställ att Extract PDF Content output:ar den binära egenskapen med namnet data; annars kommer embeddings att fallera längre ned i flödet.

Steg 4: konfigurera procedurintag och datastrukturering

Normalisera inkommande procedurer så att var och en utvärderas separat av AI-auditagenten.

  1. Koppla Procedure Intake HookStructure Procedure Data så att det matchar exekveringsflödet.
  2. I Structure Procedure Data ställer ni in JS Code till const {procedures, spDocumentId, description} = $input.first().json.body; const result = procedures.map(procedure => ({ json: { spDocumentId, procedure, description } })); return result;.

Steg 5: sätt upp pipelinen för AI-granskning av regelefterlevnad

Konfigurera AI-agenten, dess verktyg och parsing av strukturerad output för att generera regelefterlevnadsfynd.

  1. I AI Compliance Review behåller ni Prompt Type som define och säkerställer att Has Output Parser är aktiverat för strukturerade svar.
  2. Sätt upp LLM Audit Agent som språkmodell med Model inställt på ={{ $env.OLLAMA_CHAT_MODEL || "qwen2.5:7b" }}. Credential Required: Anslut era ollamaApi-credentials.
  3. Konfigurera Build Query Embeddings med Model inställt på ={{ $env.OLLAMA_EMBED_MODEL || "nomic-embed-text:latest" }}. Credential Required: Anslut era ollamaApi-credentials.
  4. I Fetch Related Text Chunks ställer ni in Mode till retrieve-as-tool, Top K till 8 och Tool Description till Query document text from uploaded documents.. Ställ även in Search Filter JSON till ={ "should": [ { "key": "metadata.documentId", "match": { "value": "{{ $('Structure Procedure Data').first().json.spDocumentId }}" } } ] }. Credential Required: Anslut era qdrantApi-credentials.
  5. Konfigurera LLM Structured Output med Model inställt på ={{ $env.OLLAMA_CHAT_MODEL || "qwen2.5:7b" }}. Credential Required: Anslut era ollamaApi-credentials.
  6. I Parse AI Findings behåller ni Auto Fix aktiverat och ställer in Input Schema till det tillhandahållna JSON-schemat för confidenceLevel, summaryOfCompliance, summaryOfNonCompliance och supportingTextCitations. Den här output-parsern är kopplad till AI Compliance Review—credentials ska läggas till i den överordnade språkmodellnoden (LLM Structured Output), inte i den här parsern.

⚠️ Vanlig fallgrop: Om Fetch Related Text Chunks inte kan hämta träffar, bekräfta att Store Vectors in Qdrant skriver metadata med documentId från Assemble Document Metadata.

Steg 6: konfigurera leverans av output

Returnera den strukturerade regelefterlevnadsrapporten till anroparen när analysen är klar.

  1. Koppla AI Compliance ReviewRespond Compliance Report för att slutföra request-livscykeln.
  2. I Respond Compliance Report ställer ni in Respond With till allIncomingItems för att returnera den strukturerade JSON-outputen.

Steg 7: testa och aktivera ert workflow

Validera båda inträdespunkterna och bekräfta lyckad indexering och AI-analys innan ni går live.

  1. Kör Incoming Audit Upload manuellt med en test-payload med spDriveId, spDocumentId och en giltig filreferens för att bekräfta att Store Vectors in Qdrant tar emot embeddings.
  2. Trigga Procedure Intake Hook med exempel på procedures, spDocumentId och description för att verifiera att AI Compliance Review returnerar strukturerad JSON.
  3. Bekräfta en lyckad körning genom att kontrollera att Respond Compliance Report returnerar summaryOfCompliance, summaryOfNonCompliance och supportingTextCitations.
  4. När allt är validerat byter ni båda webhooks till produktions-URL:er och aktiverar workflowet.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Autentiseringar för Google Drive eller Google Sheets kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först det anslutna Google-kontot och status för n8n-credentials.
  • Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Qdrant-collections kan bli röriga om du inte isolerar per dokument-ID. Om källhänvisningar ser ”fel” ut, verifiera att du rensar tidigare vektorer eller skriver till en per-dokument-namespace innan du laddar upp igen.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automationen för Qdrant compliance checks?

Cirka en timme om dina Qdrant- och Google-credentials är klara.

Behöver jag kodningskunskaper för att automatisera compliancekontroller med bevis?

Nej. Du kopplar främst ihop konton och klistrar in ett par request-exempel för att testa de två webhookarna.

Är n8n gratis att använda för det här arbetsflödet med Qdrant compliance checks?

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 volymer. Du behöver också räkna in API-kostnader för din modellleverantör (för OpenAI ser många team ören per granskning för grundläggande kontroller).

Var kan jag hosta n8n för att köra den här automationen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här arbetsflödet för Qdrant compliance checks för poängsättning kontroll för kontroll?

Ja, och det är en av de bästa uppgraderingarna. Du kan justera rutin-payloaden så att den skickar en array av kontroller i stället för ett textblock, och sedan uppdatera kodnoden ”Structure Procedure Data” så att den loopar igenom varje kontroll och skickar in den till AI Compliance Review. Många team lägger också till kolumner i Google Sheets för kontroll-ID, allvarlighetsgrad, ägare och förfallodatum så att outputen blir en åtgärdstracker, inte bara en rapport.

Varför misslyckas min Qdrant-anslutning i det här arbetsflödet?

Oftast är det en URL- eller API-nyckelfråga, eller att namnet på Qdrant-collection inte matchar vad flödet förväntar sig. Kontrollera din Qdrant-endpoint, bekräfta att API-nyckeln har åtkomst och säkerställ att ditt nätverk tillåter att n8n når Qdrant. Om det bara fallerar på större filer kan det också vara timeouts under inbäddning eller hämtning, så att minska chunk-storlek eller öka timeouts löser det ofta.

Hur många dokument kan den här automationen för Qdrant compliance checks hantera?

Väldigt många, så länge din server och modellleverantör hänger med. På n8n Cloud Starter begränsas du av månatliga körningar; self-hosting har ingen körningsgräns, men stora PDF:er kostar mer i inbäddning och tar längre tid att processa. I praktiken kör de flesta små team utan problem dussintals dokument per vecka när chunking och timeouts är intrimmade.

Är den här automationen för Qdrant compliance checks bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet behöver dokumentsegmentering, vektorsökning, strukturerade outputs och grenlogik, och n8n klarar det utan att varje ”extra steg” blir ett prissättningsproblem. Zapier eller Make kan fungera för lättviktig routing, men RAG-liknande bevisinhämtning blir snabbt klumpig där. Dessutom spelar self-hosting roll för complianceteam som inte kan skicka dokument via för många tredjeparter. Prata med en automationsexpert om du vill ha en snabb rekommendation baserad på din volym och datakänslighet.

När det här väl rullar slutar compliancegranskningar att vara en skattjakt. Du får beslut, källhänvisningar och en kalkylarklogg som du kan ge till en revisor utan att oroa dig för följdfrågorna.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal