feat: RAG-Zahlen korrigiert + Branchen-Regulierungs-Matrix

- Alle Zahlen aktualisiert: 170+ Originaldokumente, 40.000+ Controls,
  84 Regularien, 9 Branchen (statt 57 Module / 19 Regularien / 2.274 Texte)
- Neue Folie: Regulatorische Landschaft mit Branchen-Regulierungs-Matrix
- Konsistent in: Solution, Executive Summary (Slide+PDF), Competition,
  AI Pipeline, SDK Demo, Presenter Script, FAQ

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-26 15:40:44 +01:00
parent 4bce3724f2
commit 32616504a6
11 changed files with 297 additions and 55 deletions

View File

@@ -23,6 +23,7 @@ import ExecutiveSummarySlide from './slides/ExecutiveSummarySlide'
import CoverSlide from './slides/CoverSlide'
import ProblemSlide from './slides/ProblemSlide'
import SolutionSlide from './slides/SolutionSlide'
import RegulatoryLandscapeSlide from './slides/RegulatoryLandscapeSlide'
import ProductSlide from './slides/ProductSlide'
import HowItWorksSlide from './slides/HowItWorksSlide'
import MarketSlide from './slides/MarketSlide'
@@ -126,6 +127,8 @@ export default function PitchDeck({ lang, onToggleLanguage }: PitchDeckProps) {
return <ProblemSlide lang={lang} />
case 'solution':
return <SolutionSlide lang={lang} />
case 'regulatory-landscape':
return <RegulatoryLandscapeSlide lang={lang} />
case 'product':
return <ProductSlide lang={lang} products={data.products} />
case 'how-it-works':

View File

@@ -75,8 +75,8 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
bg: 'bg-emerald-500/10 border-emerald-500/20',
title: de ? '3. Vektorspeicher' : '3. Vector Store',
items: de
? ['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 (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'],
? ['Qdrant Vector DB (Hetzner, API-Key gesichert)', '6 Collections: CE, Recht, Gesetze, Datenschutz, DSFA, Templates', 'MinIO Object Storage (Hetzner, S3-kompatibel, TLS)', '170+ Dokumente · 40.000+ Controls · HNSW-Index']
: ['Qdrant Vector DB (Hetzner, API-key secured)', '6 Collections: CE, Law, Statutes, Privacy, DSFA, Templates', 'MinIO object storage (Hetzner, S3-compatible, TLS)', '170+ documents · 40,000+ controls · HNSW index'],
},
{
icon: Search,

View File

@@ -193,14 +193,14 @@ const ALL_FEATURES: ComparisonFeature[] = [
// Top 5 Differentiators (isDiff=true) — no other vendor has ANY of these
{ de: 'Self-Hosted / On-Premise', en: 'Self-Hosted / On-Premise', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
{ de: 'Code-Security & DevSecOps (6 Tools)', en: 'Code Security & DevSecOps (6 Tools)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
{ de: '57 SDK-Compliance-Module', en: '57 SDK Compliance Modules', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
{ de: '84 Regularien, 170+ Originaldokumente im RAG', en: '84 Regulations, 170+ Original Documents in RAG', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
{ de: 'Hardware-Moat (Mac Mini/Studio)', en: 'Hardware Moat (Mac Mini/Studio)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
{ de: 'PII-Redaction LLM Gateway', en: 'PII Redaction LLM Gateway', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: true, isUSP: true },
// More USPs
{ de: 'IPFS Dokumenten-Archivierung', en: 'IPFS Document Archiving', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
{ de: 'SBOM-Generator (CycloneDX/SPDX)', en: 'SBOM Generator (CycloneDX/SPDX)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
{ de: 'Multi-Framework Consent SDK', en: 'Multi-Framework Consent SDK', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
{ de: 'RAG mit 2.274 Rechtstexten', en: 'RAG with 2,274 Legal Texts', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
{ de: 'RAG mit 40.000+ Controls', en: 'RAG with 40,000+ Controls', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
// Pentesting & Code-Security (kein Compliance-Wettbewerber hat dies)
{ de: 'SAST (Static Application Security Testing)', en: 'SAST (Static Application Security Testing)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
{ de: 'DAST (Dynamic Application Security Testing)', en: 'DAST (Dynamic Application Security Testing)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: true },
@@ -280,7 +280,7 @@ const PRICING_COMPARISON: CompetitorPricing[] = [
model: 'Self-Hosted',
publicPricing: true,
tiers: [
{ name: { de: 'Starter', en: 'Starter' }, price: '€990/mo', annual: '€11.880/yr', notes: { de: 'Mac Mini, 30B LLM, 57 Module', en: 'Mac Mini, 30B LLM, 57 modules' } },
{ name: { de: 'Starter', en: 'Starter' }, price: '€990/mo', annual: '€11.880/yr', notes: { de: 'Mac Mini, 30B LLM, 84 Regularien', en: 'Mac Mini, 30B LLM, 84 regulations' } },
{ name: { de: 'Professional', en: 'Professional' }, price: '€1.490/mo', annual: '€17.880/yr', notes: { de: 'Mac Studio, 70B LLM, Priority', en: 'Mac Studio, 70B LLM, priority' } },
{ name: { de: 'Enterprise', en: 'Enterprise' }, price: '€2.990/mo', annual: '€35.880/yr', notes: { de: '2x Mac Studio, 1000B Cloud-LLM', en: '2x Mac Studio, 1000B cloud LLM' } },
],

View File

@@ -135,20 +135,20 @@ export default function ExecutiveSummarySlide({ lang, data }: ExecutiveSummarySl
<div class="section-title">${es.keyMetrics}</div>
<div class="grid3">
<div class="card kpi">
<div class="value">57</div>
<div class="label">${es.modules}</div>
<div class="value">170+</div>
<div class="label">${es.documents}</div>
</div>
<div class="card kpi">
<div class="value">19</div>
<div class="value">40.000+</div>
<div class="label">${es.controls}</div>
</div>
<div class="card kpi">
<div class="value">84</div>
<div class="label">${es.regulations}</div>
</div>
<div class="card kpi">
<div class="value">2.274</div>
<div class="label">${es.legalTexts}</div>
</div>
<div class="card kpi">
<div class="value">45</div>
<div class="label">${es.containers}</div>
<div class="value">9</div>
<div class="label">${es.industries}</div>
</div>
<div class="card kpi">
<div class="value">761K</div>
@@ -243,10 +243,10 @@ export default function ExecutiveSummarySlide({ lang, data }: ExecutiveSummarySl
<FadeInView delay={0.4} className="mb-5">
<div className="grid grid-cols-3 md:grid-cols-6 gap-3">
{[
{ value: '57', label: es.modules, icon: Brain, color: '#6366f1' },
{ value: '19', label: es.regulations, icon: FileText, color: '#a78bfa' },
{ value: '2.274', label: es.legalTexts, icon: Shield, color: '#60a5fa' },
{ value: '45', label: es.containers, icon: Server, color: '#34d399' },
{ value: '170+', label: es.documents, icon: FileText, color: '#6366f1' },
{ value: '40.000+', label: es.controls, icon: Shield, color: '#a78bfa' },
{ value: '84', label: es.regulations, icon: Brain, color: '#60a5fa' },
{ value: '9', label: es.industries, icon: Server, color: '#34d399' },
{ value: '761K', label: es.linesOfCode, icon: Target, color: '#fbbf24' },
{ value: amountLabel, label: es.theAsk, icon: TrendingUp, color: '#f472b6' },
].map((kpi, idx) => (

View File

@@ -0,0 +1,163 @@
'use client'
import { Language } from '@/lib/types'
import { t } from '@/lib/i18n'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import GlassCard from '../ui/GlassCard'
import KPICard from '../ui/KPICard'
import {
Shield, Lock, Brain, Globe, Package, Landmark, Heart, ShoppingCart,
Activity, Cpu, Bot, Radio, Monitor, Building2
} from 'lucide-react'
interface RegulatoryLandscapeSlideProps {
lang: Language
}
// Regulation categories with their color
const CATEGORIES = [
{ id: 'privacy', color: '#6366f1', icon: Shield },
{ id: 'cyber', color: '#ef4444', icon: Lock },
{ id: 'ai', color: '#a855f7', icon: Brain },
{ id: 'markets', color: '#22c55e', icon: Globe },
{ id: 'product', color: '#f97316', icon: Package },
{ id: 'finance', color: '#10b981', icon: Landmark },
{ id: 'health', color: '#ec4899', icon: Heart },
{ id: 'consumer', color: '#f59e0b', icon: ShoppingCart },
]
// Industry → which categories apply (derived from INDUSTRY_REGULATION_MAP)
const INDUSTRY_MATRIX: { id: string; icon: typeof Shield; categories: string[]; regCount: number }[] = [
{ id: 'allIndustries', icon: Building2, categories: ['privacy'], regCount: 3 },
{ id: 'health', icon: Heart, categories: ['privacy', 'cyber', 'ai', 'product', 'health'], regCount: 9 },
{ id: 'finance', icon: Landmark, categories: ['privacy', 'cyber', 'ai', 'markets', 'finance'], regCount: 11 },
{ id: 'ecommerce', icon: ShoppingCart, categories: ['privacy', 'markets', 'product', 'finance', 'consumer'], regCount: 23 },
{ id: 'tech', icon: Cpu, categories: ['privacy', 'cyber', 'ai', 'markets'], regCount: 9 },
{ id: 'iot', icon: Activity, categories: ['privacy', 'cyber', 'ai', 'product'], regCount: 6 },
{ id: 'ai', icon: Bot, categories: ['privacy', 'ai', 'product', 'markets'], regCount: 5 },
{ id: 'kritis', icon: Lock, categories: ['privacy', 'cyber', 'ai', 'finance'], regCount: 6 },
{ id: 'media', icon: Monitor, categories: ['privacy', 'markets', 'ai'], regCount: 6 },
{ id: 'public', icon: Radio, categories: ['privacy', 'cyber', 'ai', 'markets', 'health'], regCount: 7 },
]
export default function RegulatoryLandscapeSlide({ lang }: RegulatoryLandscapeSlideProps) {
const i = t(lang)
const rl = i.regulatoryLandscape
const categoryLabels: Record<string, string> = {
privacy: rl.categoryPrivacy,
cyber: rl.categoryCyber,
ai: rl.categoryAI,
markets: rl.categoryMarkets,
product: rl.categoryProduct,
finance: rl.categoryFinance,
health: rl.categoryHealth,
consumer: rl.categoryConsumer,
}
const industryLabels: Record<string, string> = {
allIndustries: rl.allIndustries,
health: rl.health,
finance: rl.finance,
ecommerce: rl.ecommerce,
tech: rl.tech,
iot: rl.iot,
ai: rl.ai,
kritis: rl.kritis,
media: rl.media,
public: rl.public,
}
return (
<div className="max-w-6xl mx-auto">
<FadeInView className="text-center mb-6">
<h2 className="text-3xl md:text-5xl font-bold mb-2">
<GradientText>{rl.title}</GradientText>
</h2>
<p className="text-base text-white/50 max-w-2xl mx-auto">{rl.subtitle}</p>
</FadeInView>
{/* KPI Row */}
<div className="grid grid-cols-4 gap-3 mb-6">
<KPICard label={rl.documents} value={170} suffix="+" color="#6366f1" delay={0.1} />
<KPICard label={rl.controls} value={40000} suffix="+" color="#a78bfa" delay={0.2} />
<KPICard label={rl.regulations} value={84} color="#60a5fa" delay={0.3} />
<KPICard label={rl.industries} value={9} color="#34d399" delay={0.4} />
</div>
{/* Matrix */}
<FadeInView delay={0.5}>
<GlassCard hover={false} className="p-4 overflow-x-auto">
{/* Category Legend */}
<div className="flex flex-wrap gap-3 mb-4 justify-center">
{CATEGORIES.map((cat) => (
<div key={cat.id} className="flex items-center gap-1.5">
<div className="w-2.5 h-2.5 rounded-full" style={{ backgroundColor: cat.color }} />
<span className="text-[10px] text-white/50">{categoryLabels[cat.id]}</span>
</div>
))}
</div>
{/* Matrix Grid */}
<div className="space-y-1.5">
{/* Header row */}
<div className="grid items-center gap-1" style={{ gridTemplateColumns: '140px repeat(8, 1fr) 50px' }}>
<div className="text-[9px] text-white/30 uppercase tracking-wider pl-1">
{lang === 'de' ? 'Branche' : 'Industry'}
</div>
{CATEGORIES.map((cat) => {
const CatIcon = cat.icon
return (
<div key={cat.id} className="flex justify-center">
<CatIcon className="w-3.5 h-3.5 opacity-50" style={{ color: cat.color }} />
</div>
)
})}
<div className="text-[9px] text-white/30 text-center">#</div>
</div>
{/* Industry rows */}
{INDUSTRY_MATRIX.map((industry, idx) => {
const Icon = industry.icon
return (
<div
key={industry.id}
className="grid items-center gap-1 py-1.5 rounded-lg hover:bg-white/[0.04] transition-colors"
style={{ gridTemplateColumns: '140px repeat(8, 1fr) 50px' }}
>
<div className="flex items-center gap-2 pl-1">
<Icon className="w-3.5 h-3.5 text-white/40" />
<span className="text-[11px] text-white/70 font-medium truncate">
{industryLabels[industry.id]}
</span>
</div>
{CATEGORIES.map((cat) => {
const applies = industry.categories.includes(cat.id)
return (
<div key={cat.id} className="flex justify-center">
{applies ? (
<div
className="w-4 h-4 rounded-full flex items-center justify-center"
style={{ backgroundColor: `${cat.color}20` }}
>
<div className="w-2 h-2 rounded-full" style={{ backgroundColor: cat.color }} />
</div>
) : (
<div className="w-4 h-4 rounded-full bg-white/[0.03]" />
)}
</div>
)
})}
<div className="text-center">
<span className="text-xs font-bold text-white/80">{industry.regCount}</span>
</div>
</div>
)
})}
</div>
</GlassCard>
</FadeInView>
</div>
)
}

View File

@@ -31,7 +31,7 @@ const SCREENSHOTS = [
{ file: '15-document-generator.png', de: 'Dokumenten-Generator', en: 'Document Generator', category: 'docs' },
{ file: '16-einwilligungen.png', de: 'Einwilligungsmanagement', en: 'Consent Management', category: 'legal' },
{ file: '22-iace.png', de: 'CE-Compliance (IACE)', en: 'CE Compliance (IACE)', category: 'analysis' },
{ file: '20-rag.png', de: 'Legal RAG — 2.274 Rechtstexte', en: 'Legal RAG — 2,274 Legal Texts', category: 'ai' },
{ file: '20-rag.png', de: 'Legal RAG — 170+ Dokumente, 40.000+ Controls', en: 'Legal RAG — 170+ Documents, 40,000+ Controls', category: 'ai' },
{ file: '19-training.png', de: 'Compliance-Schulungen', en: 'Compliance Training', category: 'ops' },
{ file: '23-incidents.png', de: 'Incident Response', en: 'Incident Response', category: 'ops' },
{ file: '24-reporting.png', de: 'Reporting', en: 'Reporting', category: 'ops' },