Zum Hauptinhalt springen
Startseite / Portfolio / CompliBot
Security RAG

CompliBot

RAG für Sicherheitsfragebögen — Excel rein, KI-Antworten raus

Erstellt von Rogue AI · RAG-Responder für Sicherheitsfragebögen (Excel/CSV rein, KI-Antwortentwürfe raus) · Selbst gehostet

Im Lauf des Jahres 2026 als Teil der Rogue-AI-Flotte entwickelt.

CompliBot — RAG für Sicherheitsfragebögen — Excel rein, KI-Antworten raus

Das Problem

Sicherheitsfragebögen von Lieferanten — SIG Lite, CAIQ, VSA, NIST CSF und die endlosen maßgeschneiderten Tabellen — sind eine wiederkehrende Last für jedes Unternehmen, das Software verkauft. Die Antworten ändern sich von Deal zu Deal kaum, trotzdem tippt sie jemand jedes Mal von Hand in eine neue Excel-Datei und durchsucht alte Fragebögen und Richtliniendokumente nach Formulierungen, die er vor Monaten längst geschrieben hat. Die Arbeit ist repetitiv, fehleranfällig und zieht Sicherheitsleute vom eigentlichen Geschäft ab, um zu kopieren und einzufügen.

Was ich gebaut habe

CompliBot ist eine Next.js-16-/React-19-App, die einen Excel- oder CSV-Fragebogen einliest, die Fragen herausparst, jede nach Sicherheitsdomäne klassifiziert und mit einer Retrieval-gestützten Pipeline auf Basis der eigenen Wissensbasis einen Antwortentwurf erstellt. Diese Wissensbasis baust du auf, indem du frühere Fragebögen und Richtlinien hochlädst oder ein geführtes KI-Interview durchläufst, das implizites Wissen in strukturierte Einträge überführt. Jeder Entwurf kommt mit einem Konfidenzwert und seinen Quellpassagen zurück; Prüfer geben Seite an Seite per Tastenkürzel frei, bearbeiten oder lehnen ab und exportieren die fertige Tabelle dann zurück nach Excel. Um die Kernschleife herum sitzt, was ein echtes Produkt braucht: mandantenfähige Organisationen mit rollenbasiertem Zugriff, eine Vorlagenbibliothek, Sammel-Upload, ein unveränderliches Audit-Protokoll, eine Lückenanalyse über 19 Sicherheitsdomänen und Stripe-gestützte Tarifstufen.

Architektur

Hybride Suche über pgvector
Wissenseinträge werden mit pgvector samt HNSW-Cosinus-Index in eine 768-dimensionale Vektorspalte in PostgreSQL eingebettet. Der SearchService führt semantische Vektorsuche parallel zum Schlüsselwortabgleich aus und fügt beide Ergebnislisten per Reciprocal Rank Fusion zusammen, sodass exakte Control-IDs und Abkürzungen auch dann auftauchen, wenn die umgebende Formulierung abweicht.
Selbst gehostete Generierung über Ollama
Sowohl die Embeddings (nomic-embed-text) als auch die Antwortgenerierung (qwen2.5:7b) laufen auf einer gemeinsam genutzten lokalen Ollama-Instanz, sodass kein Fragebogentext und kein Inhalt der Wissensbasis an eine Drittanbieter-API gesendet wird. Ein optionaler Provider-Schalter kann die Generierung stattdessen über eine Host-CLI-Bridge leiten, doch die Voreinstellung bleibt lokal.
Konfidenzgesteuerte Antwortgenerierung
Der AnswerGenerationService fügt die gefundenen Passagen zu einem geerdeten Prompt zusammen und hängt jedem Entwurf einen Konfidenzwert an. Ein Schwellenwert pro Organisation entscheidet, ob eine Antwort automatisch freigegeben oder zur menschlichen Prüfung markiert wird, und hält so bei allem, was das System unsicher einschätzt, einen Menschen in der Schleife.
Tabelle rein, Tabelle raus
Das Parsen nutzt ExcelJS und Papa Parse, um die unordentlichen realen Excel- und CSV-Dateien zu lesen, die Sicherheitsteams tatsächlich erhalten; der Export schreibt die freigegebenen Antworten zurück nach XLSX (oder in einen Text-/PDF-Bericht mit Organisations-Branding und Domänenabdeckung), sodass CompliBot in das Format passt, in dem der Rest des Deals ohnehin läuft.
Mandantenfähiges Datenmodell mit Audit-Protokoll
Ein Prisma-Schema mit 20 Modellen trennt Organisationen, Nutzer, Abonnements und Nutzung und regelt den Zugriff dazwischen rollenbasiert. Ein nur-anhängendes AuditLog hält für jede Änderung Aktion, Entität, Nutzer, IP und Zeitstempel fest — genau die Art von Nachweis, die ein Compliance-Prüfer sehen will.
Gehärteter, isolierter Docker-Stack
App, das pgvector-fähige PostgreSQL und Redis laufen jeweils im eigenen Container in einem dedizierten /24-Netz, bei dem alle Ports an localhost gebunden sind. Die Container entziehen sich alle Linux-Capabilities, laufen schreibgeschützt mit no-new-privileges, nutzen tmpfs als Scratch-Speicher und pinnen jedes Basis-Image per SHA256-Digest.

Tech-Stack

Next.jsPostgreSQLpgvectorOllamaDocker

Was zuerst gebrochen ist

  • Über die Antwortqualität entscheidet die Qualität der Suche. Reine Vektorsuche übersieht exakte Control-IDs und Abkürzungen (SOC 2, ISO 27001, CAIQ), deshalb schlägt eine Kombination aus pgvector-Cosinus-Ähnlichkeit und Schlüsselwortabgleich, zusammengeführt per Reciprocal Rank Fusion, bei Fragebogentexten jeden der beiden Ansätze für sich.

  • Ein Konfidenzwert nützt nur dann etwas, wenn er einen Menschen ins Spiel bringt. Eine Konfidenz pro Antwort plus ein organisationsweiter Schwellenwert — oberhalb automatisch freigeben, unterhalb zur Prüfung markieren — macht aus der KI einen Entwurfshelfer statt eines nicht rechenschaftspflichtigen Auto-Responders, und nur diese Haltung akzeptiert ein Sicherheitsteam.

  • Modell und Embeddings auf einer selbst gehosteten Ollama-Instanz zu belassen bedeutet, dass die Wissensbasis — frühere Antworten, Richtlinien, interne Formulierungen zu Kontrollen — die Maschine nie verlässt. Für ein Werkzeug, dessen gesamter Input aus sensiblem Material zur Lieferantensicherheit besteht, ist diese Datenlokalität das eigentliche Feature, keine Fußnote.

Ergebnis

CompliBot funktioniert durchgängig als Portfolio-Demonstration: Lade einen echten Fragebogen als Tabelle hoch, sieh zu, wie er die Fragen parst und klassifiziert, erhalte geerdete Antwortentwürfe mit Quellen und einem Konfidenzwert, prüfe sie und exportiere eine fertige Tabelle — alles auf selbst gehosteter Infrastruktur, bei der die Daten die Maschine nie verlassen. Es ist eine konkrete Demonstration einer RAG-Pipeline für die Sicherheitsdomäne, konfidenzgesteuerter menschlicher Prüfung und eines sauber gehärteten, mandantenfähigen Docker-Deployments — und keine Folien-Attrappe.

Ehrliche Grenzen

Selbst gehostet und allein als Portfolio-Demo gebaut. Es läuft als lokales Docker-Lab — der frühere öffentliche Demo-VPS wurde abgeschaltet — es steht also keine große produktive Nutzerbasis dahinter, und die Antwortqualität hängt vollständig von Qualität und Abdeckung der geladenen Wissensbasis ab. Das standardmäßige lokale Modell (qwen2.5:7b über Ollama) entwirft plausible Antworten, die aber weiterhin menschliche Prüfung brauchen, bevor irgendetwas an einen Kunden geht; die Stripe-Abrechnung, die Tarifstufen und das mandantenfähige Gerüst existieren, um daraus ein realistisches Produkt zu machen, nicht weil echtes Geld fließt.

Verwandte Beiträge

← Zurück zum Portfolio