feat(pitch-deck): update Engineering + AI Pipeline slides with current data

Engineering slide:
- Woodpecker CI → Gitea Actions + Coolify
- Stats: 481K LOC, 10 containers, 48+ modules, 14 Dockerfiles
- Infrastructure: Hetzner + SysEleven (BSI) + OVH, no US providers
- Service architecture: compliance-only (Frontend, Backend, Infra)

AI Pipeline slide:
- 38+ indexed regulations, 6,259 extracted controls, 325+ obligations
- 6 Qdrant collections, 2,274+ chunks
- UCCA policy engine (45 rules, E0-E3 escalation)
- LLM: 120B on OVH + 1000B on SysEleven (BSI), via LiteLLM
- QA: PDF-QA pipeline, Gitea Actions CI, Coolify deploy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-20 23:08:34 +01:00
parent c374600833
commit c1a8b9d936
3 changed files with 83 additions and 83 deletions

View File

@@ -37,16 +37,16 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
const [activeTab, setActiveTab] = useState<PipelineTab>('rag') const [activeTab, setActiveTab] = useState<PipelineTab>('rag')
const heroStats = [ const heroStats = [
{ value: '19', label: de ? 'Indexierte Verordnungen' : 'Indexed Regulations', sub: 'DSGVO · AI Act · NIS2 · CRA · ePrivacy · ...', color: 'text-indigo-400' }, { value: '38+', label: de ? 'Indexierte Verordnungen' : 'Indexed Regulations', sub: 'DSGVO · AI Act · NIS2 · CRA · BDSG · DSA · ...', color: 'text-indigo-400' },
{ value: '7', label: de ? 'Autonome Agenten' : 'Autonomous Agents', sub: de ? 'SOUL-basiert · Orchestriert' : 'SOUL-based · Orchestrated', color: 'text-purple-400' }, { value: '6.259', label: de ? 'Extrahierte Controls' : 'Extracted Controls', sub: de ? '79% Source-Match · 9 Verordnungen' : '79% source match · 9 regulations', color: 'text-purple-400' },
{ value: '5', label: de ? 'KI-Modelle lokal' : 'Local AI Models', sub: 'Llama 3.2 · Qwen 2.5 · BGE-M3 · TrOCR · CrossEncoder', color: 'text-emerald-400' }, { value: '6', label: de ? 'Qdrant Collections' : 'Qdrant Collections', sub: de ? 'Legal Corpus · DSFA · Recht · Templates · ...' : 'Legal Corpus · DSFA · Law · Templates · ...', color: 'text-emerald-400' },
{ value: '97', label: de ? 'Golden-Suite Tests' : 'Golden Suite Tests', sub: de ? 'Automatische Qualitaetssicherung' : 'Automatic Quality Assurance', color: 'text-amber-400' }, { value: '325+', label: de ? 'Abgeleitete Pflichten' : 'Derived Obligations', sub: de ? 'NIS2 · DSGVO · AI Act · CRA · ...' : 'NIS2 · GDPR · AI Act · CRA · ...', color: 'text-amber-400' },
] ]
const tabs: { id: PipelineTab; label: string; icon: typeof Brain }[] = [ const tabs: { id: PipelineTab; label: string; icon: typeof Brain }[] = [
{ id: 'rag', label: de ? 'RAG-Pipeline' : 'RAG Pipeline', icon: Search }, { id: 'rag', label: de ? 'RAG-Pipeline' : 'RAG Pipeline', icon: Search },
{ id: 'agents', label: de ? 'Multi-Agent-System' : 'Multi-Agent System', icon: Bot }, { id: 'agents', label: de ? 'UCCA & Engines' : 'UCCA & Engines', icon: Bot },
{ id: 'quality', label: de ? 'Qualitaetssicherung' : 'Quality Assurance', icon: Gauge }, { id: 'quality', label: de ? 'QA & Infrastruktur' : 'QA & Infrastructure', icon: Gauge },
] ]
// RAG Pipeline content // RAG Pipeline content
@@ -55,19 +55,19 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
icon: FileText, icon: FileText,
color: 'text-blue-400', color: 'text-blue-400',
bg: 'bg-blue-500/10 border-blue-500/20', bg: 'bg-blue-500/10 border-blue-500/20',
title: de ? '1. Ingestion' : '1. Ingestion', title: de ? '1. Ingestion & QA' : '1. Ingestion & QA',
items: de items: de
? ['PDF-Upload, URL-Crawling, API-Import', 'Automatische Spracherkennung (DE/EN)', 'Semantisches Chunking (rekursiv, 512 Tokens)', 'Metadaten-Extraktion (Verordnung, Artikel, Absatz)'] ? ['38+ PDF-Verordnungen (EU + DE + International)', 'Strukturelles Chunking an Artikel/Absatz-Grenzen', 'PDF-QA-Pipeline: 86% Artikel-Extraktion', 'Deduplizierung + Cross-Regulation Harmonisierung']
: ['PDF upload, URL crawling, API import', 'Automatic language detection (DE/EN)', 'Semantic chunking (recursive, 512 tokens)', 'Metadata extraction (regulation, article, paragraph)'], : ['38+ PDF regulations (EU + DE + International)', 'Structural chunking at article/paragraph boundaries', 'PDF QA pipeline: 86% article extraction', 'Deduplication + cross-regulation harmonization'],
}, },
{ {
icon: Cpu, icon: Cpu,
color: 'text-purple-400', color: 'text-purple-400',
bg: 'bg-purple-500/10 border-purple-500/20', bg: 'bg-purple-500/10 border-purple-500/20',
title: de ? '2. Embedding' : '2. Embedding', title: de ? '2. Embedding & LLM' : '2. Embedding & LLM',
items: de items: de
? ['BGE-M3 Multilingual Embeddings (lokal)', 'CrossEncoder Re-Ranking (lokal)', 'HyDE: Hypothetical Document Embeddings', 'Lazy Model Loading (Speicher-optimiert)'] ? ['BGE-M3 Multilingual (1024-dim, lokal)', '120B LLM auf OVH (via LiteLLM, OpenAI-kompatibel)', '1000B LLM auf SysEleven (BSI-zertifiziert)', 'CrossEncoder Re-Ranking + HyDE']
: ['BGE-M3 multilingual embeddings (local)', 'CrossEncoder re-ranking (local)', 'HyDE: Hypothetical Document Embeddings', 'Lazy model loading (memory-optimized)'], : ['BGE-M3 multilingual (1024-dim, local)', '120B LLM on OVH (via LiteLLM, OpenAI-compatible)', '1000B LLM on SysEleven (BSI-certified)', 'CrossEncoder re-ranking + HyDE'],
}, },
{ {
icon: Database, icon: Database,
@@ -75,8 +75,8 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
bg: 'bg-emerald-500/10 border-emerald-500/20', bg: 'bg-emerald-500/10 border-emerald-500/20',
title: de ? '3. Vektorspeicher' : '3. Vector Store', title: de ? '3. Vektorspeicher' : '3. Vector Store',
items: de items: de
? ['Qdrant Vector DB (Self-hosted)', '5 Collections: Legal Corpus, DSFA, Compliance, Dokumente, Agenten-Wissen', 'MinIO Object Storage fuer Quelldokumente', 'Automatische Re-Indexierung bei Updates'] ? ['Qdrant Vector DB (Hetzner, API-Key gesichert)', '6 Collections: CE, Recht, Gesetze, Datenschutz, DSFA, Templates', 'MinIO Object Storage (Hetzner, S3-kompatibel, TLS)', '2.274+ Chunks indexiert · HNSW-Index']
: ['Qdrant Vector DB (self-hosted)', '5 Collections: Legal Corpus, DSFA, Compliance, Documents, Agent Knowledge', 'MinIO object storage for source documents', 'Automatic re-indexing on updates'], : ['Qdrant Vector DB (Hetzner, API-key secured)', '6 Collections: CE, Law, Statutes, Privacy, DSFA, Templates', 'MinIO object storage (Hetzner, S3-compatible, TLS)', '2,274+ chunks indexed · HNSW index'],
}, },
{ {
icon: Search, icon: Search,
@@ -84,26 +84,26 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
bg: 'bg-indigo-500/10 border-indigo-500/20', bg: 'bg-indigo-500/10 border-indigo-500/20',
title: de ? '4. Hybrid Search' : '4. Hybrid Search', title: de ? '4. Hybrid Search' : '4. Hybrid Search',
items: de items: de
? ['Dense Retrieval (70%) + BM25 Keyword (30%)', 'Deutsche Komposita-Zerlegung', 'Cross-Encoder Re-Ranking der Top-K Ergebnisse', 'Quellen-Attribution mit Artikel-Referenz'] ? ['Multi-Collection-Suche mit Whitelist-Validierung', 'Deutsche Komposita-Zerlegung', 'Cross-Encoder Re-Ranking der Top-K Ergebnisse', 'Quellen-Attribution mit Artikel/Absatz-Referenz']
: ['Dense retrieval (70%) + BM25 keyword (30%)', 'German compound word decomposition', 'Cross-encoder re-ranking of top-K results', 'Source attribution with article reference'], : ['Multi-collection search with whitelist validation', 'German compound word decomposition', 'Cross-encoder re-ranking of top-K results', 'Source attribution with article/paragraph reference'],
}, },
] ]
// Multi-Agent System content // Multi-Agent System content — UCCA + Policy Engine
const agents = [ const agents = [
{ name: de ? 'Compliance-Berater' : 'Compliance Advisor', soul: 'compliance-advisor.soul.md', desc: de ? 'Beantwortet Compliance-Fragen mit RAG-Kontext' : 'Answers compliance questions with RAG context', color: 'text-indigo-400' }, { name: 'UCCA', soul: de ? 'Use-Case Compliance' : 'Use-Case Compliance', desc: de ? 'Policy Engine (45 Regeln) + Eskalation E0E3' : 'Policy engine (45 rules) + escalation E0E3', color: 'text-indigo-400' },
{ name: de ? 'Audit-Agent' : 'Audit Agent', soul: 'quality-judge.soul.md', desc: de ? 'Prueft Dokumente gegen regulatorische Anforderungen' : 'Checks documents against regulatory requirements', color: 'text-emerald-400' }, { name: de ? 'Pflichten-Engine' : 'Obligations Engine', soul: de ? '325+ Pflichten' : '325+ obligations', desc: de ? 'Multi-Regulation: NIS2, DSGVO, AI Act, CRA, ...' : 'Multi-regulation: NIS2, GDPR, AI Act, CRA, ...', color: 'text-emerald-400' },
{ name: de ? 'Dokument-Agent' : 'Drafting Agent', soul: 'drafting-agent.soul.md', desc: de ? 'Erstellt Compliance-Dokumente und Policies' : 'Creates compliance documents and policies', color: 'text-purple-400' }, { name: de ? 'Compliance-Berater' : 'Compliance Advisor', soul: de ? 'Legal RAG + LLM' : 'Legal RAG + LLM', desc: de ? 'Wizard-basierter Chatbot mit Qdrant-Kontext' : 'Wizard-based chatbot with Qdrant context', color: 'text-purple-400' },
{ name: 'Orchestrator', soul: 'orchestrator.soul.md', desc: de ? 'Task-Routing und Koordination aller Agenten' : 'Task routing and coordination of all agents', color: 'text-amber-400' }, { name: de ? 'Dokument-Generator' : 'Document Generator', soul: de ? '20 Templates' : '20 templates', desc: de ? 'AGB, DSE, AV-Vertrag, Widerruf + 16 weitere' : 'T&C, Privacy Policy, DPA, Withdrawal + 16 more', color: 'text-amber-400' },
{ name: de ? 'Alert-Agent' : 'Alert Agent', soul: 'alert-agent.soul.md', desc: de ? 'Monitoring, Fristen und Benachrichtigungen' : 'Monitoring, deadlines and notifications', color: 'text-red-400' }, { name: de ? 'DSFA-Agent' : 'DSFA Agent', soul: de ? 'Art. 35 DSGVO' : 'Art. 35 GDPR', desc: de ? 'Risikobewertung mit Legal Context Injection' : 'Risk assessment with legal context injection', color: 'text-red-400' },
{ name: de ? 'Tutor-Agent' : 'Tutor Agent', soul: 'tutor-agent.soul.md', desc: de ? 'Interaktive Compliance-Schulungen' : 'Interactive compliance training', color: 'text-blue-400' }, { name: de ? 'Schulungs-Engine' : 'Training Engine', soul: de ? 'Academy + TTS' : 'Academy + TTS', desc: de ? '28 Module · Piper TTS · Automatische Videos' : '28 modules · Piper TTS · Automatic videos', color: 'text-blue-400' },
] ]
const agentInfra = [ const agentInfra = [
{ icon: MessageSquare, label: 'SOUL Files', desc: de ? 'Deklarative Agenten-Persoenlichkeit in Markdown' : 'Declarative agent personality in Markdown' }, { icon: Shield, label: de ? 'Policy Engine' : 'Policy Engine', desc: de ? 'Deterministisch · LLM ist NICHT Wahrheitsquelle' : 'Deterministic · LLM is NOT source of truth' },
{ icon: Brain, label: 'Shared Brain', desc: de ? 'Gemeinsamer Wissensspeicher + Langzeitgedaechtnis' : 'Shared knowledge store + long-term memory' }, { icon: Brain, label: de ? 'LLM-Schicht' : 'LLM Layer', desc: de ? '120B (OVH) + 1000B (SysEleven BSI) · EU-only' : '120B (OVH) + 1000B (SysEleven BSI) · EU-only' },
{ icon: Network, label: 'Message Bus', desc: de ? 'Valkey/Redis · Pub/Sub · Task Queue' : 'Valkey/Redis · Pub/Sub · Task Queue' }, { icon: Network, label: 'LiteLLM Gateway', desc: de ? 'OpenAI-kompatibel · Multi-Provider Routing' : 'OpenAI-compatible · Multi-provider routing' },
{ icon: Activity, label: 'Session Manager', desc: de ? 'Heartbeat · Checkpoints · Recovery' : 'Heartbeat · Checkpoints · Recovery' }, { icon: Activity, label: de ? 'Eskalation E0E3' : 'Escalation E0E3', desc: de ? 'Auto-Approve → Team-Lead → DSB → DSB+Legal' : 'Auto-approve → Team lead → DPO → DPO+Legal' },
] ]
// Quality Assurance content // Quality Assurance content
@@ -111,34 +111,34 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
{ {
icon: Shield, icon: Shield,
color: 'text-emerald-400', color: 'text-emerald-400',
title: de ? 'BQAS — Quality Assurance System' : 'BQAS — Quality Assurance System', title: de ? 'Control Quality Pipeline' : 'Control Quality Pipeline',
items: de items: de
? ['97 Golden-Suite-Referenztests fuer Regressionserkennung', 'Synthetische Testgenerierung per LLM', 'RAG-Retrieval-Accuracy und Correction-Tests', 'Precision, Recall, F1 Tracking ueber alle Releases'] ? ['6.259 Controls extrahiert (79% Source-Match)', '3.301 Duplikate entfernt (Phase 5 Normalisierung)', '90+ QA-Skripte: Deduplizierung, Match-Validierung', 'Canonical Controls JSON-Schema-Validierung in CI']
: ['97 golden suite reference tests for regression detection', 'Synthetic test generation via LLM', 'RAG retrieval accuracy and correction tests', 'Precision, recall, F1 tracking across all releases'], : ['6,259 controls extracted (79% source match)', '3,301 duplicates removed (Phase 5 normalization)', '90+ QA scripts: deduplication, match validation', 'Canonical Controls JSON schema validation in CI'],
}, },
{ {
icon: Eye, icon: Eye,
color: 'text-indigo-400', color: 'text-indigo-400',
title: de ? 'LLM Evaluation & Vergleich' : 'LLM Evaluation & Comparison', title: de ? 'RAG Quality & Monitoring' : 'RAG Quality & Monitoring',
items: de items: de
? ['Side-by-Side-Vergleich: Ollama lokal vs. OpenAI vs. Claude', 'Latenz-, Token- und Qualitaets-Metriken pro Provider', 'Automatischer Fallback bei Provider-Ausfall', 'Self-RAG: Selbstreflektierende Antwortvalidierung'] ? ['PDF-QA-Pipeline: 86% Artikel-Extraktion', 'Multi-Collection-Whitelist-Validierung', 'Qdrant-Deduplizierung: 8-Stufen-Bereinigung', 'Fallback-Handling: RAG-Fehler brechen nie Hauptfunktion']
: ['Side-by-side comparison: Ollama local vs. OpenAI vs. Claude', 'Latency, token and quality metrics per provider', 'Automatic fallback on provider failure', 'Self-RAG: Self-reflective answer validation'], : ['PDF QA pipeline: 86% article extraction', 'Multi-collection whitelist validation', 'Qdrant deduplication: 8-step cleanup', 'Fallback handling: RAG failures never break main function'],
}, },
{ {
icon: Sparkles, icon: Sparkles,
color: 'text-purple-400', color: 'text-purple-400',
title: de ? 'Document Intelligence' : 'Document Intelligence', title: de ? 'CI/CD & Testing' : 'CI/CD & Testing',
items: de items: de
? ['TrOCR Handschrifterkennung mit LoRA Fine-Tuning', 'Multi-OCR-Pipeline: 5 Methoden parallel (Vision LLM, Tesseract, OpenCV, ...)', 'Labeling-Interface fuer Trainingsdaten-Erstellung (DSGVO-konform, lokal)', 'OpenCV Document Reconstruction (Deskew, Dewarp, Binarisierung)'] ? ['Gitea Actions: Lint → Tests → Validierung bei jedem Push', 'Go-Tests (AI SDK) + Python-Tests (Backend + Crawler + Gateway)', 'Coolify Auto-Deploy mit Health-Check-Monitoring', 'arm64 → amd64 Cross-Build fuer Hetzner Production']
: ['TrOCR handwriting recognition with LoRA fine-tuning', 'Multi-OCR pipeline: 5 methods in parallel (Vision LLM, Tesseract, OpenCV, ...)', 'Labeling interface for training data creation (GDPR-compliant, local)', 'OpenCV document reconstruction (deskew, dewarp, binarization)'], : ['Gitea Actions: Lint → Tests → Validation on every push', 'Go tests (AI SDK) + Python tests (Backend + Crawler + Gateway)', 'Coolify auto-deploy with health check monitoring', 'arm64 → amd64 cross-build for Hetzner production'],
}, },
{ {
icon: Zap, icon: Zap,
color: 'text-amber-400', color: 'text-amber-400',
title: de ? 'GPU & Training' : 'GPU & Training', title: de ? 'LLM-Infrastruktur' : 'LLM Infrastructure',
items: de items: de
? ['Lokales Training auf Apple Silicon (M4 Max, 64 GB unified)', 'vast.ai Integration fuer Cloud-GPU bei Bedarf', 'LoRA/QLoRA Fine-Tuning mit konfigurierbaren Hyperparametern', 'SSE-Streaming fuer Echtzeit-Trainingsmetriken (Loss, Accuracy, F1)'] ? ['120B Modell auf OVH via LiteLLM (OpenAI-kompatibel)', '1000B Modell auf SysEleven (BSI-zertifiziert)', 'Isolierte Namespaces pro Kunde · Keine US-Provider', 'BGE-M3 Embedding lokal · Lazy Model Loading']
: ['Local training on Apple Silicon (M4 Max, 64 GB unified)', 'vast.ai integration for cloud GPU on demand', 'LoRA/QLoRA fine-tuning with configurable hyperparameters', 'SSE streaming for real-time training metrics (loss, accuracy, F1)'], : ['120B model on OVH via LiteLLM (OpenAI-compatible)', '1000B model on SysEleven (BSI-certified)', 'Isolated namespaces per customer · No US providers', 'BGE-M3 embedding local · Lazy model loading'],
}, },
] ]
@@ -197,12 +197,12 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
{/* Pipeline Flow Visualization */} {/* Pipeline Flow Visualization */}
<div className="flex items-center justify-center gap-1 mb-4 flex-wrap"> <div className="flex items-center justify-center gap-1 mb-4 flex-wrap">
{[ {[
{ icon: FileText, label: de ? 'Dokumente' : 'Documents' }, { icon: FileText, label: '38+ PDFs' },
{ icon: Layers, label: 'Chunking' }, { icon: Layers, label: 'QA + Chunking' },
{ icon: Cpu, label: 'BGE-M3' }, { icon: Cpu, label: 'BGE-M3' },
{ icon: Database, label: 'Qdrant' }, { icon: Database, label: '6 Collections' },
{ icon: Search, label: 'Hybrid Search' }, { icon: Search, label: 'Hybrid Search' },
{ icon: Brain, label: 'LLM' }, { icon: Brain, label: '120B / 1000B' },
].map((step, idx, arr) => ( ].map((step, idx, arr) => (
<div key={idx} className="flex items-center gap-1"> <div key={idx} className="flex items-center gap-1">
<div className="flex items-center gap-1 px-2 py-1 rounded-lg bg-white/[0.05] border border-white/[0.08]"> <div className="flex items-center gap-1 px-2 py-1 rounded-lg bg-white/[0.05] border border-white/[0.08]">
@@ -246,7 +246,7 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
<div className="flex items-center gap-2 mb-3"> <div className="flex items-center gap-2 mb-3">
<Bot className="w-4 h-4 text-white/40" /> <Bot className="w-4 h-4 text-white/40" />
<p className="text-xs font-semibold text-white/40 uppercase tracking-wider"> <p className="text-xs font-semibold text-white/40 uppercase tracking-wider">
{de ? 'Agenten-Fleet' : 'Agent Fleet'} {de ? 'Compliance-Engines' : 'Compliance Engines'}
</p> </p>
</div> </div>
<div className="grid grid-cols-2 gap-2"> <div className="grid grid-cols-2 gap-2">
@@ -257,7 +257,7 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
<p className="text-xs font-bold text-white/80">{agent.name}</p> <p className="text-xs font-bold text-white/80">{agent.name}</p>
</div> </div>
<p className="text-[10px] text-white/40 leading-tight">{agent.desc}</p> <p className="text-[10px] text-white/40 leading-tight">{agent.desc}</p>
<p className="text-[9px] font-mono text-white/20 mt-1">{agent.soul}</p> <p className="text-[9px] font-mono text-white/25 mt-1">{agent.soul}</p>
</div> </div>
))} ))}
</div> </div>
@@ -291,8 +291,8 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
<div className="mt-3 pt-3 border-t border-white/5"> <div className="mt-3 pt-3 border-t border-white/5">
<p className="text-[10px] text-white/20"> <p className="text-[10px] text-white/20">
{de {de
? 'Alle Agenten laufen lokal · Kein API-Schluessel erforderlich · DSGVO-konform' ? 'Wahrheit = Regeln + Evidenz · LLM = Uebersetzer + Subsumtions-Helfer · 100% EU-Cloud'
: 'All agents run locally · No API key required · GDPR-compliant'} : 'Truth = Rules + Evidence · LLM = Translator + Subsumption Helper · 100% EU Cloud'}
</p> </p>
</div> </div>
</GlassCard> </GlassCard>

View File

@@ -30,28 +30,28 @@ export default function EngineeringSlide({ lang }: EngineeringSlideProps) {
const heroStats = [ const heroStats = [
{ {
value: '761K', value: '481K',
label: de ? 'Zeilen Code' : 'Lines of Code', label: de ? 'Zeilen Code' : 'Lines of Code',
sub: 'Go · Python · TypeScript', sub: 'Go · Python · TypeScript',
color: 'text-indigo-400', color: 'text-indigo-400',
borderColor: 'border-indigo-500/30', borderColor: 'border-indigo-500/30',
}, },
{ {
value: '45', value: '10',
label: de ? 'Docker Container' : 'Docker Containers', label: de ? 'Docker Container' : 'Docker Containers',
sub: de ? 'Produktiv auf einem Mac Studio' : 'Production on one Mac Studio', sub: de ? 'Coolify → Hetzner (amd64)' : 'Coolify → Hetzner (amd64)',
color: 'text-emerald-400', color: 'text-emerald-400',
borderColor: 'border-emerald-500/30', borderColor: 'border-emerald-500/30',
}, },
{ {
value: '27', value: '48+',
label: de ? 'Microservices' : 'Microservices', label: de ? 'SDK-Module' : 'SDK Modules',
sub: '10 Go · 9 Python · 8 Next.js', sub: de ? 'DSGVO · AI Act · NIS2 · CRA' : 'GDPR · AI Act · NIS2 · CRA',
color: 'text-purple-400', color: 'text-purple-400',
borderColor: 'border-purple-500/30', borderColor: 'border-purple-500/30',
}, },
{ {
value: '37', value: '14',
label: 'Dockerfiles', label: 'Dockerfiles',
sub: de ? 'Vollstaendig containerisiert' : 'Fully containerized', sub: de ? 'Vollstaendig containerisiert' : 'Fully containerized',
color: 'text-amber-400', color: 'text-amber-400',
@@ -60,26 +60,26 @@ export default function EngineeringSlide({ lang }: EngineeringSlideProps) {
] ]
const languageBreakdown = [ const languageBreakdown = [
{ lang: 'TypeScript / TSX', pct: 54, loc: '408K', color: 'bg-blue-500', icon: Braces }, { lang: 'TypeScript / TSX', pct: 49, loc: '235K', color: 'bg-blue-500', icon: Braces },
{ lang: 'Python', pct: 28, loc: '213K', color: 'bg-yellow-500', icon: Terminal }, { lang: 'Python', pct: 28, loc: '133K', color: 'bg-yellow-500', icon: Terminal },
{ lang: 'Go', pct: 18, loc: '141K', color: 'bg-cyan-500', icon: Code2 }, { lang: 'Go', pct: 23, loc: '113K', color: 'bg-cyan-500', icon: Code2 },
] ]
const devopsStack = [ const devopsStack = [
{ {
icon: GitBranch, icon: GitBranch,
label: 'Gitea', label: 'Gitea + Actions',
desc: de ? 'Self-hosted Git · 4 Repos · Code Review' : 'Self-hosted Git · 4 Repos · Code Review', desc: de ? 'Self-hosted Git + CI/CD · Lint → Tests → Validierung' : 'Self-hosted Git + CI/CD · Lint → Tests → Validation',
}, },
{ {
icon: Workflow, icon: Workflow,
label: 'Woodpecker CI', label: 'Coolify',
desc: de ? 'Self-hosted CI/CD · Lint · Test · Build · Deploy' : 'Self-hosted CI/CD · Lint · Test · Build · Deploy', desc: de ? 'Auto-Deploy bei Push · Docker Compose auf Hetzner · Health Checks' : 'Auto-deploy on push · Docker Compose on Hetzner · Health checks',
}, },
{ {
icon: Container, icon: Container,
label: 'Docker Compose', label: 'Docker Compose',
desc: de ? '66 Service-Definitionen · Multi-Stage Builds' : '66 Service Definitions · Multi-Stage Builds', desc: de ? 'arm64 → amd64 Build-Pipeline · Multi-Stage Builds' : 'arm64 → amd64 build pipeline · Multi-stage builds',
}, },
{ {
icon: ShieldCheck, icon: ShieldCheck,
@@ -93,35 +93,35 @@ export default function EngineeringSlide({ lang }: EngineeringSlideProps) {
}, },
{ {
icon: Server, icon: Server,
label: de ? 'Infrastruktur' : 'Infrastructure', label: de ? 'EU-Cloud Infrastruktur' : 'EU Cloud Infrastructure',
desc: 'Nginx · PostgreSQL · Qdrant · MinIO · Valkey', desc: de ? 'Hetzner · SysEleven (BSI) · OVH · PostgreSQL · Qdrant' : 'Hetzner · SysEleven (BSI) · OVH · PostgreSQL · Qdrant',
}, },
] ]
const serviceArchitecture = [ const serviceArchitecture = [
{ {
project: 'breakpilot-core', project: de ? 'Frontend & Portale' : 'Frontend & Portals',
color: 'text-indigo-400', color: 'text-indigo-400',
dotColor: 'bg-indigo-400', dotColor: 'bg-indigo-400',
services: de services: de
? ['Admin Dashboard', 'Consent Service (Go)', 'Billing Service (Go)', 'RAG Pipeline', 'Embedding Service', 'Voice Service', 'Pitch Deck', 'Nginx Reverse Proxy'] ? ['Admin Dashboard (Next.js 15)', 'Developer Portal (Next.js 15)', 'MkDocs Dokumentation']
: ['Admin Dashboard', 'Consent Service (Go)', 'Billing Service (Go)', 'RAG Pipeline', 'Embedding Service', 'Voice Service', 'Pitch Deck', 'Nginx Reverse Proxy'], : ['Admin Dashboard (Next.js 15)', 'Developer Portal (Next.js 15)', 'MkDocs Documentation'],
}, },
{ {
project: 'breakpilot-lehrer', project: de ? 'Backend & KI' : 'Backend & AI',
color: 'text-purple-400', color: 'text-purple-400',
dotColor: 'bg-purple-400', dotColor: 'bg-purple-400',
services: de services: de
? ['Lehrer Dashboard', 'Studio v2', 'Website', 'Klausur Service', 'School Service (Go)', 'Edu Search (Go)'] ? ['Backend API (FastAPI)', 'AI Compliance SDK (Go/Gin)', 'Document Crawler', 'TTS Service (Piper)']
: ['Teacher Dashboard', 'Studio v2', 'Website', 'Exam Service', 'School Service (Go)', 'Edu Search (Go)'], : ['Backend API (FastAPI)', 'AI Compliance SDK (Go/Gin)', 'Document Crawler', 'TTS Service (Piper)'],
}, },
{ {
project: 'breakpilot-compliance', project: de ? 'Infrastruktur & Daten' : 'Infrastructure & Data',
color: 'text-emerald-400', color: 'text-emerald-400',
dotColor: 'bg-emerald-400', dotColor: 'bg-emerald-400',
services: de services: de
? ['Compliance Dashboard (57 Module)', 'Developer Portal', 'AI SDK (Go)', 'Document Crawler', 'DSMS/IPFS Gateway', 'TTS Service'] ? ['PostgreSQL 17 (Hetzner)', 'Qdrant Vector DB', 'DSMS/IPFS Node + Gateway', 'MinIO Object Storage']
: ['Compliance Dashboard (57 Modules)', 'Developer Portal', 'AI SDK (Go)', 'Document Crawler', 'DSMS/IPFS Gateway', 'TTS Service'], : ['PostgreSQL 17 (Hetzner)', 'Qdrant Vector DB', 'DSMS/IPFS Node + Gateway', 'MinIO Object Storage'],
}, },
] ]
@@ -261,8 +261,8 @@ export default function EngineeringSlide({ lang }: EngineeringSlideProps) {
<div className="mt-3 pt-3 border-t border-white/5"> <div className="mt-3 pt-3 border-t border-white/5">
<p className="text-[10px] text-white/20 text-center"> <p className="text-[10px] text-white/20 text-center">
{de {de
? '100% Self-Hosted · Kein externer Cloud-Anbieter · Vollstaendige Kontrolle ueber Code und Daten' ? '100% EU-Cloud · Hetzner + SysEleven (BSI) + OVH · Keine US-Anbieter · Volle Datenkontrolle'
: '100% Self-Hosted · No External Cloud Provider · Full Control Over Code and Data'} : '100% EU Cloud · Hetzner + SysEleven (BSI) + OVH · No US Providers · Full Data Control'}
</p> </p>
</div> </div>
</GlassCard> </GlassCard>

View File

@@ -449,13 +449,13 @@ export const PRESENTER_SCRIPT: SlideScript[] = [
duration: 40, duration: 40,
paragraphs: [ paragraphs: [
{ {
text_de: 'Engineering Deep Dive: 761.000 Zeilen Code, 45 Container, über 65 Module. Tech-Stack: Go, Python, TypeScript, Next.js. Alles Open Source mit kommerziell nutzbaren Lizenzen.', text_de: 'Engineering Deep Dive: 481.000 Zeilen Code, 10 Container, 48 Compliance-Module. Tech-Stack: Go, Python, TypeScript mit Next.js. CI/CD über Gitea Actions, automatisches Deploy via Coolify auf Hetzner.',
text_en: 'Engineering deep dive: 761,000 lines of code, 45 containers, over 65 modules. Tech stack: Go, Python, TypeScript, Next.js. Everything open source with commercially usable licenses.', text_en: 'Engineering deep dive: 481,000 lines of code, 10 containers, 48 compliance modules. Tech stack: Go, Python, TypeScript with Next.js. CI/CD via Gitea Actions, automatic deploy via Coolify on Hetzner.',
pause_after: 2000, pause_after: 2000,
}, },
{ {
text_de: 'Integriert: ERPNext als Open-Source-ERP, Matrix Chat, eigenes Jitsi, NVIDIA Meeting-Modul, Code-Assistent mit kundenspezifischen Namespaces.', text_de: 'Infrastruktur: 100 Prozent EU-Cloud. PostgreSQL und Qdrant auf Hetzner, 120-Milliarden-Parameter-LLM auf OVH, 1000-Milliarden-Parameter-LLM auf SysEleven — BSI-zertifiziert. Keine US-Anbieter.',
text_en: 'Integrated: ERPNext as open source ERP, Matrix chat, own Jitsi, NVIDIA meeting module, code assistant with customer-specific namespaces.', text_en: 'Infrastructure: 100 percent EU cloud. PostgreSQL and Qdrant on Hetzner, 120 billion parameter LLM on OVH, 1 trillion parameter LLM on SysEleven — BSI certified. No US providers.',
pause_after: 1500, pause_after: 1500,
}, },
], ],
@@ -467,13 +467,13 @@ export const PRESENTER_SCRIPT: SlideScript[] = [
duration: 40, duration: 40,
paragraphs: [ paragraphs: [
{ {
text_de: 'Die KI-Pipeline: RAG mit 2.274 Rechtstexten, Multi-Agent-System mit spezialisierten Compliance-Agenten, SAST- und DAST-Integration, automatische SBOM-Generierung und Jira-Integration mit Code-Fix-Vorschlägen.', text_de: 'Die KI-Pipeline: 38 Verordnungen indexiert, 6.259 Controls extrahiert, 325 Pflichten aus 9 Regulierungen abgeleitet. RAG mit 6 Qdrant-Collections, BGE-M3 Embeddings, Hybrid Search mit Cross-Encoder Re-Ranking.',
text_en: 'The AI pipeline: RAG with 2,274 legal texts, multi-agent system with specialized compliance agents, SAST and DAST integration, automatic SBOM generation and Jira integration with code fix suggestions.', text_en: 'The AI pipeline: 38 regulations indexed, 6,259 controls extracted, 325 obligations derived from 9 regulations. RAG with 6 Qdrant collections, BGE-M3 embeddings, hybrid search with cross-encoder re-ranking.',
pause_after: 2500, pause_after: 2500,
}, },
{ {
text_de: 'Vielen Dank für Ihre Aufmerksamkeit. Die Plattform läuft, die Module sind gebaut, die KI ist trainiert. Jetzt geht es um Skalierung.', text_de: 'Kernprinzip: Das LLM ist nicht die Wahrheitsquelle. Wahrheit gleich Regeln plus Evidenz. Das LLM ist Übersetzer und Subsumtions-Helfer. Deterministische Policy Engine mit 45 Regeln und Eskalationsstufen E0 bis E3.',
text_en: 'Thank you for your attention. The platform is running, the modules are built, the AI is trained. Now it is about scaling.', text_en: 'Core principle: The LLM is not the source of truth. Truth equals rules plus evidence. The LLM is translator and subsumption helper. Deterministic policy engine with 45 rules and escalation levels E0 to E3.',
pause_after: 2000, pause_after: 2000,
}, },
], ],