From 38363b28376336ebc26cf28ae65986f80f76b250 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 20 Mar 2026 08:26:20 +0100 Subject: [PATCH] feat(pitch-deck): rewrite CompetitionSlide with 6 detailed competitor profiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Vanta, Drata, Sprinto (international) alongside Proliance, DataGuard, heyData (DACH) - Each card: HQ city/country, offices, employees, revenue, customers + countries, funding, investors, AI badge - Two tabs: Overview & Comparison / Feature Matrix (Detail) - 44-feature comparison table with collapsible sections: Top 5 Unterschiede, Alle Features, USP - Efficiency ratios table (revenue/employee, customers/employee) - DACH landscape note (Secjur, Usercentrics, Caralegal, 2B Advice, OneTrust) - Research-backed data: Vanta $220M/$4.15B, Drata $100M/$2B, Sprinto $38M, DataGuard €52M, heyData €15M - Dynamic feature/USP counts in subtitle - Bilingual (de/en) with i18n subtitle update Co-Authored-By: Claude Opus 4.6 --- .../components/slides/CompetitionSlide.tsx | 668 ++++++++++++++++-- pitch-deck/lib/i18n.ts | 4 +- 2 files changed, 593 insertions(+), 79 deletions(-) diff --git a/pitch-deck/components/slides/CompetitionSlide.tsx b/pitch-deck/components/slides/CompetitionSlide.tsx index 0b28554..305e1f2 100644 --- a/pitch-deck/components/slides/CompetitionSlide.tsx +++ b/pitch-deck/components/slides/CompetitionSlide.tsx @@ -1,11 +1,14 @@ 'use client' +import { useState } from 'react' import { Language, PitchFeature, PitchCompetitor } from '@/lib/types' import { t } from '@/lib/i18n' -import { ShieldCheck, Code2, ScanLine, FileSearch, Package, Bug } from 'lucide-react' +import { + ChevronDown, ChevronRight, Globe, Building2, Users, TrendingUp, + DollarSign, Cpu, Star, Check, X, Minus, +} from 'lucide-react' import GradientText from '../ui/GradientText' import FadeInView from '../ui/FadeInView' -import FeatureMatrix from '../ui/FeatureMatrix' import GlassCard from '../ui/GlassCard' import BrandName from '../ui/BrandName' @@ -15,93 +18,604 @@ interface CompetitionSlideProps { competitors: PitchCompetitor[] } -const securityFeatures = { - de: [ - { icon: ShieldCheck, title: 'Self-Hosted + PII-Redaction', desc: 'Einziger Anbieter mit On-Premise-Deployment. LLM Gateway maskiert personenbezogene Daten vor KI-Verarbeitung' }, - { icon: ScanLine, title: 'DevSecOps Security Suite', desc: 'Semgrep, Gitleaks, Trivy, Grype — 6 integrierte Tools scannen Code, Container und Dependencies kontinuierlich' }, - { icon: Bug, title: 'SBOM + CI/CD Evidence', desc: 'CycloneDX/SPDX SBOM-Generator + automatische Compliance-Nachweise direkt aus der Build-Pipeline' }, - { icon: Package, title: 'Multi-Framework SDK', desc: 'Consent-Banner und Compliance-Widgets fuer React, Vue, Angular, iOS, Android, Flutter' }, - { icon: FileSearch, title: 'IPFS Dokumenten-Archivierung', desc: 'Dezentrale, manipulationssichere Archivierung mit kryptographischem Nachweis der Unveraendertheit' }, - { icon: Code2, title: 'KI-Compliance-Advisor (RAG)', desc: '2.274 indexierte Rechtstexte, KI-gestuetzte Dokumentenerstellung, Scope Engine L1-L4' }, - ], - en: [ - { icon: ShieldCheck, title: 'Self-Hosted + PII Redaction', desc: 'Only provider with on-premise deployment. LLM Gateway masks personal data before AI processing' }, - { icon: ScanLine, title: 'DevSecOps Security Suite', desc: 'Semgrep, Gitleaks, Trivy, Grype — 6 integrated tools continuously scan code, containers and dependencies' }, - { icon: Bug, title: 'SBOM + CI/CD Evidence', desc: 'CycloneDX/SPDX SBOM generator + automatic compliance evidence directly from the build pipeline' }, - { icon: Package, title: 'Multi-Framework SDK', desc: 'Consent banners and compliance widgets for React, Vue, Angular, iOS, Android, Flutter' }, - { icon: FileSearch, title: 'IPFS Document Archiving', desc: 'Decentralized, tamper-proof archiving with cryptographic proof of integrity' }, - { icon: Code2, title: 'AI Compliance Advisor (RAG)', desc: '2,274 indexed legal texts, AI-powered document generation, Scope Engine L1-L4' }, - ], +// ─── Extended Competitor Data ────────────────────────────────────────────────── + +interface ExtendedCompetitor { + name: string + flag: string + hq: string + hqCountry: string + offices: string[] + founded: number + employees: number + revenue: string + revenueNum: number + customers: number + customerCountries: string + fundingTotal: string + fundingRound: string + investors: string[] + aiUsage: 'full' | 'partial' | 'none' + aiDetail: { de: string; en: string } + market: { de: string; en: string } + pricing: string + isInternational: boolean } +const EXTENDED_COMPETITORS: ExtendedCompetitor[] = [ + { + name: 'Vanta', + flag: '🇺🇸', + hq: 'San Francisco, CA', + hqCountry: 'USA', + offices: ['New York', 'Dublin', 'London', 'Sydney'], + founded: 2018, + employees: 1695, + revenue: '$220M ARR', + revenueNum: 220_000_000, + customers: 12000, + customerCountries: '58 Laender', + fundingTotal: '$504M', + fundingRound: 'Series D ($150M, $4.15B val.)', + investors: ['Sequoia Capital', 'Wellington Mgmt', 'Craft Ventures', 'CrowdStrike', 'Goldman Sachs', 'Y Combinator'], + aiUsage: 'full', + aiDetail: { de: 'Vanta AI Agent: Agentic Compliance, Policy-Gen, VRM-Agent, ISO 42001', en: 'Vanta AI Agent: Agentic compliance, policy gen, VRM agent, ISO 42001' }, + market: { de: 'Global — SOC 2, ISO 27001, HIPAA, PCI DSS', en: 'Global — SOC 2, ISO 27001, HIPAA, PCI DSS' }, + pricing: '$10K–80K/yr', + isInternational: true, + }, + { + name: 'Drata', + flag: '🇺🇸', + hq: 'San Diego, CA', + hqCountry: 'USA', + offices: ['San Diego'], + founded: 2020, + employees: 732, + revenue: '$100M ARR', + revenueNum: 100_000_000, + customers: 8000, + customerCountries: '80+ Laender', + fundingTotal: '$328M', + fundingRound: 'Series C ($200M, $2B val.)', + investors: ['ICONIQ Growth', 'GGV Capital', 'Salesforce Ventures', 'SentinelOne'], + aiUsage: 'full', + aiDetail: { de: 'AI Agent: VRM, Doc-Review, Risiko-Scoring, SafeBase AIQA', en: 'AI Agent: VRM, doc review, risk scoring, SafeBase AIQA' }, + market: { de: 'Global — SOC 2, ISO, HIPAA, GDPR (oberfl.)', en: 'Global — SOC 2, ISO, HIPAA, GDPR (shallow)' }, + pricing: '$10K–100K/yr', + isInternational: true, + }, + { + name: 'Sprinto', + flag: '🇮🇳', + hq: 'Bangalore', + hqCountry: 'Indien', + offices: ['Bangalore'], + founded: 2020, + employees: 316, + revenue: '$38M ARR', + revenueNum: 38_000_000, + customers: 3000, + customerCountries: '75+ Laender', + fundingTotal: '$32M', + fundingRound: 'Series B ($20M, 2024)', + investors: ['Accel', 'Elevation Capital', 'Blume Ventures'], + aiUsage: 'full', + aiDetail: { de: 'Autonomous Compliance Engine, No-Code AI Agent Builder', en: 'Autonomous compliance engine, no-code AI agent builder' }, + market: { de: 'Global SMBs — SOC 2, ISO, GDPR', en: 'Global SMBs — SOC 2, ISO, GDPR' }, + pricing: '$6K–25K/yr', + isInternational: true, + }, + { + name: 'Proliance', + flag: '🇩🇪', + hq: 'Muenchen', + hqCountry: 'Deutschland', + offices: ['Muenchen'], + founded: 2017, + employees: 65, + revenue: '~€3.9M', + revenueNum: 3_900_000, + customers: 2000, + customerCountries: 'DACH', + fundingTotal: 'Pre-Seed', + fundingRound: 'Pre-Seed (Possible Ventures)', + investors: ['Possible Ventures'], + aiUsage: 'none', + aiDetail: { de: 'Basis-Risikoerkennung, keine LLM/Agenten', en: 'Basic risk detection, no LLM/agents' }, + market: { de: 'DACH — DSGVO, ePrivacy, KMUs', en: 'DACH — GDPR, ePrivacy, SMBs' }, + pricing: '€1.5K–5.7K/yr', + isInternational: false, + }, + { + name: 'DataGuard', + flag: '🇩🇪', + hq: 'Muenchen', + hqCountry: 'Deutschland', + offices: ['Muenchen', 'Berlin', 'London', 'Wien', 'Stockholm'], + founded: 2017, + employees: 250, + revenue: '~€52M', + revenueNum: 52_000_000, + customers: 4000, + customerCountries: '50+ Laender', + fundingTotal: '€80M', + fundingRound: 'Series B (€61M, €341M val.)', + investors: ['Morgan Stanley Expansion', 'One Peak Partners'], + aiUsage: 'partial', + aiDetail: { de: 'Marketing: 40% weniger Aufwand, keine Agenten/LLM', en: 'Marketing: 40% effort reduction, no agents/LLM' }, + market: { de: 'DACH + UK — GDPR, ISO 27001, TISAX', en: 'DACH + UK — GDPR, ISO 27001, TISAX' }, + pricing: '€6K–24K+/yr', + isInternational: false, + }, + { + name: 'heyData', + flag: '🇩🇪', + hq: 'Berlin', + hqCountry: 'Deutschland', + offices: ['Berlin'], + founded: 2020, + employees: 58, + revenue: '~€15M', + revenueNum: 15_000_000, + customers: 2000, + customerCountries: 'EU', + fundingTotal: '€18.3M', + fundingRound: 'Series A ($16.5M, Jan 2026)', + investors: ['Riverside Acceleration Capital'], + aiUsage: 'partial', + aiDetail: { de: 'KI-Marketing, keine sichtbaren Agenten', en: 'AI marketing, no visible agents' }, + market: { de: 'DACH + EU — DSGVO, Kleinunternehmen', en: 'DACH + EU — GDPR, small businesses' }, + pricing: '€1K–3.8K/yr', + isInternational: false, + }, +] + +// ─── Feature Comparison Data ─────────────────────────────────────────────────── + +type FeatureStatus = true | false | 'partial' + +interface ComparisonFeature { + de: string + en: string + bp: FeatureStatus + vanta: FeatureStatus + drata: FeatureStatus + sprinto: FeatureStatus + proliance: FeatureStatus + dataguard: FeatureStatus + heydata: FeatureStatus + isDiff: boolean + isUSP: boolean +} + +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: '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 }, + // Compliance Features (shared) + { de: 'DSGVO / GDPR', en: 'GDPR', bp: true, vanta: 'partial', drata: 'partial', sprinto: 'partial', proliance: true, dataguard: true, heydata: true, isDiff: false, isUSP: false }, + { de: 'AI Act', en: 'AI Act', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'Cyber Resilience Act (CRA)', en: 'Cyber Resilience Act (CRA)', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'NIS2-Richtlinie', en: 'NIS2 Directive', bp: true, vanta: false, drata: 'partial', sprinto: false, proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'SOC 2', en: 'SOC 2', bp: 'partial', vanta: true, drata: true, sprinto: true, proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'ISO 27001', en: 'ISO 27001', bp: true, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'HIPAA', en: 'HIPAA', bp: false, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'TISAX', en: 'TISAX', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'HinSchG (Whistleblower)', en: 'HinSchG (Whistleblower)', bp: true, vanta: false, drata: false, sprinto: false, proliance: 'partial', dataguard: false, heydata: false, isDiff: false, isUSP: false }, + // Functional Features + { de: 'VVT (Art. 30 DSGVO)', en: 'Records of Processing (Art. 30)', bp: true, vanta: false, drata: false, sprinto: false, proliance: true, dataguard: true, heydata: true, isDiff: false, isUSP: false }, + { de: 'TOM-Dokumentation', en: 'TOM Documentation', bp: true, vanta: false, drata: false, sprinto: false, proliance: true, dataguard: true, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'DSFA (Art. 35 DSGVO)', en: 'DPIA (Art. 35 GDPR)', bp: true, vanta: false, drata: false, sprinto: false, proliance: true, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Loeschkonzept / Loeschfristen', en: 'Deletion Concept / Retention', bp: true, vanta: false, drata: false, sprinto: false, proliance: 'partial', dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Auftragsverarbeiter-Mgmt', en: 'Vendor/Processor Management', bp: true, vanta: true, drata: true, sprinto: 'partial', proliance: true, dataguard: true, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'Consent Management', en: 'Consent Management', bp: true, vanta: false, drata: false, sprinto: false, proliance: 'partial', dataguard: false, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'Betroffenenrechte (DSR)', en: 'Data Subject Requests', bp: true, vanta: false, drata: false, sprinto: false, proliance: true, dataguard: true, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'Risikobewertung', en: 'Risk Assessment', bp: true, vanta: true, drata: true, sprinto: true, proliance: 'partial', dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Audit-Management', en: 'Audit Management', bp: true, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Schulungs-Management', en: 'Training Management', bp: true, vanta: 'partial', drata: 'partial', sprinto: 'partial', proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Policy-Generator', en: 'Policy Generator', bp: true, vanta: true, drata: true, sprinto: 'partial', proliance: true, dataguard: true, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'Incident Response', en: 'Incident Response', bp: true, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + // Technical Features + { de: 'KI-gestuetzte Analyse', en: 'AI-Powered Analysis', bp: true, vanta: true, drata: true, sprinto: 'partial', proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Automatische Evidence-Sammlung', en: 'Automatic Evidence Collection', bp: true, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Continuous Monitoring', en: 'Continuous Monitoring', bp: true, vanta: true, drata: true, sprinto: true, proliance: false, dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Integrations (Slack, Jira, etc.)', en: 'Integrations (Slack, Jira, etc.)', bp: 'partial', vanta: true, drata: true, sprinto: true, proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'API / SDK', en: 'API / SDK', bp: true, vanta: true, drata: true, sprinto: 'partial', proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Datensouveraenitaet (EU)', en: 'Data Sovereignty (EU)', bp: true, vanta: false, drata: false, sprinto: false, proliance: true, dataguard: true, heydata: true, isDiff: false, isUSP: false }, + { de: 'Mehrmandantenfaehig', en: 'Multi-Tenancy', bp: true, vanta: true, drata: true, sprinto: true, proliance: 'partial', dataguard: true, heydata: false, isDiff: false, isUSP: false }, + { de: 'Data Mapping / Datenfluss', en: 'Data Mapping / Data Flow', bp: true, vanta: 'partial', drata: 'partial', sprinto: false, proliance: false, dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Cookie-Banner Generator', en: 'Cookie Banner Generator', bp: true, vanta: false, drata: false, sprinto: false, proliance: 'partial', dataguard: false, heydata: 'partial', isDiff: false, isUSP: false }, + { de: 'Dokument-Generator (61 Vorlagen)', en: 'Document Generator (61 Templates)', bp: true, vanta: 'partial', drata: 'partial', sprinto: false, proliance: 'partial', dataguard: 'partial', heydata: false, isDiff: false, isUSP: false }, + { de: 'Whistleblower-Portal', en: 'Whistleblower Portal', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'Maschinenbau-Branchenfokus', en: 'Manufacturing Industry Focus', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'Firmware & Embedded-Security', en: 'Firmware & Embedded Security', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, + { de: 'Autonomer KI-Support-Agent', en: 'Autonomous AI Support Agent', bp: true, vanta: false, drata: false, sprinto: false, proliance: false, dataguard: false, heydata: false, isDiff: false, isUSP: false }, +] + +// ─── DACH Landscape Note ─────────────────────────────────────────────────────── + +const DACH_NOTE = { + de: 'Weitere DACH-Anbieter: Secjur (Hamburg, KI-Compliance, ~€5.5M Seed), Usercentrics (nur CMP, $117M Rev), Caralegal (Privacy/Risk, M&A 2025), 2B Advice (Legacy, 20+ J.), OneTrust (US-Enterprise, $500M+ ARR). Keiner kombiniert DSGVO + Code-Security + Self-Hosted KI.', + en: 'Other DACH players: Secjur (Hamburg, AI compliance, ~€5.5M seed), Usercentrics (CMP only, $117M rev), Caralegal (privacy/risk, M&A 2025), 2B Advice (legacy, 20+ yrs), OneTrust (US enterprise, $500M+ ARR). None combines GDPR + code security + self-hosted AI.', +} + +// ─── Helpers ─────────────────────────────────────────────────────────────────── + +function StatusIcon({ value }: { value: FeatureStatus }) { + if (value === true) return + if (value === 'partial') return + return +} + +function AiBadge({ level, lang }: { level: 'full' | 'partial' | 'none'; lang: Language }) { + const colors = { full: 'bg-green-500/15 text-green-400', partial: 'bg-yellow-500/15 text-yellow-400', none: 'bg-white/5 text-white/30' } + const labels = { full: { de: 'KI', en: 'AI' }, partial: { de: 'Basis', en: 'Basic' }, none: { de: 'Keine', en: 'None' } } + return ( + + + {labels[level][lang]} + + ) +} + +function ratio(a: number, b: number): string { + if (b === 0) return '—' + const r = a / b + if (r >= 1_000_000) return `${(r / 1_000_000).toFixed(1)}M` + if (r >= 1_000) return `${(r / 1_000).toFixed(0)}k` + return r.toFixed(0) +} + +// ─── Section Accordion ───────────────────────────────────────────────────────── + +function SectionHeader({ + label, + count, + open, + onToggle, + accent, +}: { + label: string + count: number + open: boolean + onToggle: () => void + accent?: string +}) { + return ( + + ) +} + +// ─── Component ───────────────────────────────────────────────────────────────── + +type ViewTab = 'overview' | 'features' + export default function CompetitionSlide({ lang, features, competitors }: CompetitionSlideProps) { const i = t(lang) - const coreFeatures = features.filter(f => f.category !== 'security') - const secFeats = securityFeatures[lang] + const [activeTab, setActiveTab] = useState('overview') + const [openSections, setOpenSections] = useState>(new Set(['top5'])) + + const toggleSection = (key: string) => { + setOpenSections(prev => { + const next = new Set(prev) + if (next.has(key)) next.delete(key) + else next.add(key) + return next + }) + } + + const top5 = ALL_FEATURES.filter(f => f.isDiff) + const usps = ALL_FEATURES.filter(f => f.isUSP) + const allFeatures = ALL_FEATURES + + const competitorCols = ['bp', 'vanta', 'drata', 'sprinto', 'proliance', 'dataguard', 'heydata'] as const + const competitorLabels = ['ComplAI', 'Vanta', 'Drata', 'Sprinto', 'Proliance', 'DataGuard', 'heyData'] + + const featureCount = ALL_FEATURES.length + const uspCount = usps.length + const subtitle = lang === 'de' + ? `${featureCount} Features, ${uspCount} USPs — kein Anbieter kombiniert DSGVO + Code-Security + Self-Hosted KI` + : `${featureCount} features, ${uspCount} USPs — no provider combines GDPR + code security + self-hosted AI` return ( -
- -

+
+ {/* Header */} + +

{i.competition.title}

-

{i.competition.subtitle}

+

{subtitle}

- {/* Feature Matrix (Core Compliance) */} - - - - - - - {/* Security & Developer Features — nur bei ComplAI */} - -
-

- - {lang === 'de' ? <>Integrierte Security & Developer Tools — nur bei : <>Integrated Security & Developer Tools — only} -

-
- {secFeats.map((feat, idx) => { - const Icon = feat.icon - return ( - -
-
- - {feat.title} -
-

{feat.desc}

-
-
- ) - })} -
-
-
- - {/* Competitor Summary */} -
- {competitors.map((c, idx) => ( - -
-
-

{c.name}

- {c.customers_count.toLocaleString()} {lang === 'de' ? 'Kunden' : 'customers'} -
-

{c.pricing_range}

-
- {(c.weaknesses || []).slice(0, 2).map((w, widx) => ( - - {w} - - ))} -
-
-
+ {/* Tab Bar */} + + {([ + { key: 'overview' as ViewTab, de: 'Ueberblick & Vergleich', en: 'Overview & Comparison' }, + { key: 'features' as ViewTab, de: 'Feature-Matrix (Detail)', en: 'Feature Matrix (Detail)' }, + ]).map(tab => ( + ))} + + + {/* ─── Tab: Overview ─── */} + {activeTab === 'overview' && ( + + {/* Competitor Profiles */} +
+ {/* International */} +
+ + {lang === 'de' ? 'International' : 'International'} +
+
+ {EXTENDED_COMPETITORS.filter(c => c.isInternational).map(c => ( + + ))} +
+ + {/* DACH */} +
+ + DACH +
+
+ {EXTENDED_COMPETITORS.filter(c => !c.isInternational).map(c => ( + + ))} +
+
+ + {/* Efficiency Ratios */} + +

+ + {lang === 'de' ? 'Effizienz-Kennzahlen' : 'Efficiency Ratios'} +

+
+ + + + + {EXTENDED_COMPETITORS.map(c => ( + + ))} + + + + + + {EXTENDED_COMPETITORS.map(c => ( + + ))} + + + + {EXTENDED_COMPETITORS.map(c => ( + + ))} + + + + {EXTENDED_COMPETITORS.map(c => ( + + ))} + + +
{lang === 'de' ? 'Kennzahl' : 'Metric'}{c.flag} {c.name}
{lang === 'de' ? 'Umsatz / Mitarbeiter' : 'Revenue / Employee'} + ${ratio(c.revenueNum, c.employees)} +
{lang === 'de' ? 'Kunden / Mitarbeiter' : 'Customers / Employee'} + {(c.customers / c.employees).toFixed(0)} +
{lang === 'de' ? 'Mitarbeiter' : 'Employees'} + {c.employees.toLocaleString()} +
+
+
+ + {/* DACH Landscape Note */} +
+ {DACH_NOTE[lang]} +
+
+ )} + + {/* ─── Tab: Feature Matrix ─── */} + {activeTab === 'features' && ( + +
+ {/* Top 5 Differences */} +
+ toggleSection('top5')} + accent="text-yellow-400" + /> + {openSections.has('top5') && ( + + )} +
+ + {/* All Features */} +
+ toggleSection('all')} + /> + {openSections.has('all') && ( + + )} +
+ + {/* USPs */} +
+ toggleSection('usp')} + accent="text-indigo-400" + /> + {openSections.has('usp') && ( + + )} +
+
+ + {/* Score Summary */} +
+ {[ + { name: 'ComplAI', score: ALL_FEATURES.filter(f => f.bp === true).length, color: 'text-indigo-400' }, + { name: 'Vanta', score: ALL_FEATURES.filter(f => f.vanta === true).length, color: 'text-white/50' }, + { name: 'Drata', score: ALL_FEATURES.filter(f => f.drata === true).length, color: 'text-white/50' }, + { name: 'Sprinto', score: ALL_FEATURES.filter(f => f.sprinto === true).length, color: 'text-white/50' }, + { name: 'Proliance', score: ALL_FEATURES.filter(f => f.proliance === true).length, color: 'text-white/50' }, + { name: 'DataGuard', score: ALL_FEATURES.filter(f => f.dataguard === true).length, color: 'text-white/50' }, + { name: 'heyData', score: ALL_FEATURES.filter(f => f.heydata === true).length, color: 'text-white/50' }, + ].map(item => ( +
+
{item.score}/{ALL_FEATURES.length}
+
{item.name}
+
+ ))} +
+
+ )} +
+ ) +} + +// ─── Sub-Components ──────────────────────────────────────────────────────────── + +function CompetitorCard({ competitor: c, lang }: { competitor: ExtendedCompetitor; lang: Language }) { + return ( +
+ {/* Header */} +
+
+ {c.flag} + {c.name} +
+ +
+ {/* HQ + Offices */} +
1 ? ` | Offices: ${c.offices.join(', ')}` : '')}> + {c.hq}, {c.hqCountry} + {c.offices.length > 1 && ( + + {c.offices.join(', ')} + )} +
+ {/* KPIs */} +
+
+ {lang === 'de' ? 'Gr.' : 'Est.'} + {c.founded} +
+
+ + {c.employees.toLocaleString()} +
+
+ + {c.revenue} +
+
+ + {c.customers.toLocaleString()} {lang === 'de' ? 'Kd.' : 'cust.'} ({c.customerCountries}) +
+
+ {/* Funding + Investors */} +
+
+ {c.fundingTotal} + {c.fundingRound} +
+ {c.investors.length > 0 && ( +
+ {c.investors.slice(0, 3).join(', ')}{c.investors.length > 3 ? ' +' + (c.investors.length - 3) : ''} +
+ )} +
+ {/* Market */} +
+ {c.market[lang]}
) } + +function FeatureTable({ + features, + lang, + cols, + labels, + highlight, +}: { + features: ComparisonFeature[] + lang: Language + cols: readonly string[] + labels: string[] + highlight?: boolean +}) { + return ( +
+ + + + + {labels.map((l, idx) => ( + + ))} + + + + {features.map((f, i) => ( + + + {cols.map(col => ( + + ))} + + ))} + +
Feature + {idx === 0 ? : l} +
+ {f.isDiff && } + + {lang === 'de' ? f.de : f.en} + + + +
+
+ ) +} diff --git a/pitch-deck/lib/i18n.ts b/pitch-deck/lib/i18n.ts index b34b8e6..57db096 100644 --- a/pitch-deck/lib/i18n.ts +++ b/pitch-deck/lib/i18n.ts @@ -137,7 +137,7 @@ const translations = { }, competition: { title: 'Wettbewerb', - subtitle: '44 Features vs. ~15-25 bei Wettbewerbern — 9 einzigartige USPs', + subtitle: '44 Features, 9 USPs — kein Anbieter kombiniert DSGVO + Code-Security + Self-Hosted KI', feature: 'Feature', selfHosted: 'Self-Hosted', integratedAI: 'Integrierte KI', @@ -357,7 +357,7 @@ const translations = { }, competition: { title: 'Competition', - subtitle: '44 features vs. ~15-25 competitors — 9 unique USPs', + subtitle: '44 features, 9 USPs — no provider combines GDPR + code security + self-hosted AI', feature: 'Feature', selfHosted: 'Self-Hosted', integratedAI: 'Integrated AI',