fix(pitch-deck): AppSec tab — remove Compliance USPs, reorder sections
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m11s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 34s
CI / test-python-voice (push) Successful in 35s
CI / test-bqas (push) Successful in 32s

- Removed USP section (GDPR, AI Act, CRA etc.) — these are Compliance, not AppSec
- Removed Compliance-only features from APPSEC_FEATURES array
- Reordered: Competitors → Effizienz-Kennzahlen → AppSec Features → Score Summary

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-20 19:03:51 +02:00
parent fde1673bdd
commit 96cd79dec5

View File

@@ -404,15 +404,7 @@ interface AppSecFeature {
} }
const APPSEC_FEATURES: AppSecFeature[] = [ const APPSEC_FEATURES: AppSecFeature[] = [
// ComplAI USPs — kein AppSec-Anbieter hat dies // Pure AppSec Features only (Compliance USPs removed — belong on Compliance tabs)
{ de: 'DSGVO / GDPR Compliance', en: 'GDPR Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: 'AI Act Compliance', en: 'AI Act Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: 'CRA & NIS2 Compliance', en: 'CRA & NIS2 Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: '57 Compliance-Module (SDK)', en: '57 Compliance Modules (SDK)', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: 'Self-Hosted KI (On-Premise)', en: 'Self-Hosted AI (On-Premise)', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: 'PII-Redaction LLM Gateway', en: 'PII Redaction LLM Gateway', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
{ de: 'Firmware & Embedded-Security', en: 'Firmware & Embedded Security', bp: true, snyk: false, veracode: 'partial', checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
// Shared AppSec Features
{ de: 'SAST (Static Analysis)', en: 'SAST (Static Analysis)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: true, semgrep: true, pentera: false, invicti: false, intruder: false, isUSP: false }, { de: 'SAST (Static Analysis)', en: 'SAST (Static Analysis)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: true, semgrep: true, pentera: false, invicti: false, intruder: false, isUSP: false },
{ de: 'DAST (Dynamic Analysis)', en: 'DAST (Dynamic Analysis)', bp: true, snyk: false, veracode: true, checkmarx: true, sonar: false, semgrep: false, pentera: true, invicti: true, intruder: true, isUSP: false }, { de: 'DAST (Dynamic Analysis)', en: 'DAST (Dynamic Analysis)', bp: true, snyk: false, veracode: true, checkmarx: true, sonar: false, semgrep: false, pentera: true, invicti: true, intruder: true, isUSP: false },
{ de: 'SCA (Software Composition)', en: 'SCA (Software Composition)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: 'partial', semgrep: 'partial', pentera: false, invicti: false, intruder: false, isUSP: false }, { de: 'SCA (Software Composition)', en: 'SCA (Software Composition)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: 'partial', semgrep: 'partial', pentera: false, invicti: false, intruder: false, isUSP: false },
@@ -814,33 +806,6 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
</div> </div>
</div> </div>
{/* AppSec Feature Matrix */}
<div className="space-y-2">
<div>
<SectionHeader
label={lang === 'de' ? 'USP — nur COMPLAI' : 'USP — COMPLAI only'}
count={APPSEC_FEATURES.filter(f => f.isUSP).length}
open={openSections.has('appsec-usp')}
onToggle={() => toggleSection('appsec-usp')}
accent="text-indigo-400"
/>
{openSections.has('appsec-usp') && (
<AppSecFeatureTable features={APPSEC_FEATURES.filter(f => f.isUSP)} lang={lang} highlight />
)}
</div>
<div>
<SectionHeader
label={lang === 'de' ? 'Alle AppSec Features' : 'All AppSec Features'}
count={APPSEC_FEATURES.length}
open={openSections.has('appsec-all')}
onToggle={() => toggleSection('appsec-all')}
/>
{openSections.has('appsec-all') && (
<AppSecFeatureTable features={APPSEC_FEATURES} lang={lang} />
)}
</div>
</div>
{/* Efficiency Ratios — AppSec */} {/* Efficiency Ratios — AppSec */}
<GlassCard className="!p-3 mt-4 mb-4" hover={false}> <GlassCard className="!p-3 mt-4 mb-4" hover={false}>
<h4 className="text-xs font-semibold text-white/60 mb-2 flex items-center gap-1.5"> <h4 className="text-xs font-semibold text-white/60 mb-2 flex items-center gap-1.5">
@@ -879,6 +844,21 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
</div> </div>
</GlassCard> </GlassCard>
{/* AppSec Feature Matrix */}
<div className="space-y-2 mt-4">
<div>
<SectionHeader
label={lang === 'de' ? 'Alle AppSec Features' : 'All AppSec Features'}
count={APPSEC_FEATURES.length}
open={openSections.has('appsec-all')}
onToggle={() => toggleSection('appsec-all')}
/>
{openSections.has('appsec-all') && (
<AppSecFeatureTable features={APPSEC_FEATURES} lang={lang} />
)}
</div>
</div>
{/* Score Summary */} {/* Score Summary */}
<div className="mt-4 flex items-center justify-center gap-4 flex-wrap"> <div className="mt-4 flex items-center justify-center gap-4 flex-wrap">
{[ {[