- Bulk-imported 67 umsatz + 78 kunden + 28 material rows to production WD
- Fix Bestandskunden annual column: show Dec value (point-in-time), not sum
- Fix tab labels: Umsatzerlöse, Liquidität (umlauts)
- Re-secure fp-patch endpoint
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move pill from SVG (behind HTML) to an absolutely-positioned HTML div
with zIndex:10 so it always renders above the milestone cards.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Increase timeline marginTop from 14→68 so it clears the absolute-positioned
Tip and Fortschritt elements at top:36.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep only the top-level GradientText h2; drop the redundant h1 and kicker
inside each slide canvas.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ArchitectureSlide: full light mode via useIsLight() hook, all inline styles adapt
- USPSlide: full light mode via useIsLight() hook, all inline styles adapt
- MilestonesSlide: new component — horizontal timeline with past/HEUTE/future,
THEMES object (dark + light), clickable milestone nodes and stat cards with
detail modal, bilingual (de/en), scaling via ResizeObserver
- PitchDeck: register new 'milestones' slide case
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Port Claude Design's USP v2 exactly: Compliance ↔ Code bridge with a
central glowing orb, two pillar rows per column, animated SVG flow
connectors, and four Under-the-Hood feature cards with live tickers.
Detail modal (Framer Motion AnimatePresence) slides in on click for
all 9 interactive elements. Star field background. All text is our
actual content (RFQ Verification, Process Compliance, Bidirectional
Sync, Continuous, End-to-End Traceability, Compliance Optimizer,
EU Trust Stack, killer quote). Full DE/EN i18n.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Port Claude Design's V4 design exactly: three 3D perspective slabs
(Application / Gateway / Infrastructure) with animated data-flow connectors
between them, per-node live activity tickers, and a slide-up detail panel.
Replaces metro map with V4's floating slab aesthetic — dark purple gradient
background, CSS perspective rotateX transforms, JetBrains Mono terminal
tickers, amber LiteLLM hub with pulse indicator. All node data (titles,
tech stacks, services) preserved from previous design.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove flex-1 trailing divider that was pushing pills left
- Increase map height 420→480px to give clearance between app labels and gateway circle
- Update SVG viewBox to 0 0 1100 480 (consistent with CONNS coordinates)
- Update cy% for all nodes to match new 480px coordinate space (app 22.1%, gateway 50%, inference 80%)
- Update SEP1/SEP2 to 36%/65% for new height
- Update all SVG element y-coords: track lines, tick marks, junction dots, gateway stub
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New architecture: CERTifAI (GenAI portal), COMPLAI (compliance), Scanner
(code security) — MCP bidirectional connection between COMPLAI and Scanner
- LiteLLM hub: token budget, PII guardrails, anon web search, no US providers
- Inference layer: Qwen3/DeepSeek (local LLM), bge-m3 embeddings, AI Tools
- Fix hover snapping: position wrapper (div) separate from scale (motion.button)
- Always-on data traffic packets on all connections
- Bidirectional MCP packets + MCP badge between COMPLAI and Scanner
- Live token ticker counter on active inference nodes
- BSI/EU sovereign badges on tier labels
- Spinning dashed ring on active LiteLLM hub
- Secondary infra chips in GenAI tier (PostgreSQL, Gitea, Orca, etc.)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace grid/SVG-line layout with archipelago map: organic island blobs,
quadratic bezier sea routes, circular map-marker nodes
- Fix SVG distortion: all strokes use vectorEffect=non-scaling-stroke
- No more preserveAspectRatio=none diagonal-line warping
- LiteLLM hub gets spinning ring + ripple pulse on active
- Ocean background with per-tier radial glows, dot grid, zone labels
- Switch dev server to --turbopack for faster HMR
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Group features into 7 thematic sections with colored headers
- Set isDiff=true (star) for all features where only ComplAI has it
- USP slide: remove "ohne es zu brechen" from quote
- Product slide: Privacy-Hardware card colored (emerald) like Cloud card
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove Use of Funds card from The Ask slide
- Remove Go-to-Market slide from deck
- Move Annahmen & Sensitivität after Finanzplan in slide order
- Update sidebar names in both DE and EN
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Kunden labels: 7px → 11px (matching MRR)
- EBIT negative: moved from inside bar (mt-1) to above bar (-mt-4)
- Liquidität negative: same fix (-mt-4 for all values)
- grossMargin + nrr added to FinanzplanSlide KPIs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Charts tab showed 0 for Gross Margin and NRR because these fields
were not computed in the FinanzplanSlide's own fpKPIs loading
(only existed in the useFpKPIs shared hook).
Added: grossMargin = (revenue - material) / revenue × 100
Added: nrr = revenue / prevYearRevenue × 100
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
Finanzplan Charts tab: new Unit Economics chart showing ACV, Gross Margin,
NRR, EBIT Margin as mini bar charts per year (2026-2030).
BusinessModelSlide: sub-text under Unit Economics increased from 10px → xs (12px).
DB: Removed "Container in Produktion" metric from pitch_metrics + all versions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
USP Slide:
- 4 MOAT cards (was 3): added "Compliance Optimizer"
"Not just allowed/forbidden but the maximum permissible configuration
of every AI use case. Deterministic constraint optimization."
- Killer quote: "Everyone can say what is forbidden. Almost no one can
say how far you can go without breaking it. That is our product."
- Grid: 3 cols → 2x2 for better readability
Executive Summary:
- Competitors: removed Invest column, larger font (9px → 10px)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bug: "SUMME Betriebliche Aufwendungen" excluded Personalkosten and
Abschreibungen because they have is_sum_row=true. Result: both sum
rows showed identical values.
Fix: explicitly include Personalkosten and Abschreibungen rows in
the SUMME Betriebliche calculation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Finanzplan is now read-only for investors:
- Removed "Berechnen" / "Compute" button
- Removed cell double-click editing
- Removed blue edit indicator dots
- All sums computed live in frontend (no manual recompute needed)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
getValues() now reads values_invest for investment rows.
Previously only read values/values_total/values_brutto, missing the
invest-specific field name.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Year navigation: "Alle Jahre" shows 5 annual columns, individual years show 12 months
- Default starts at single year view
- Annual view: flow rows show yearly sum, balance rows show Dec value
- Removed [section] labels from row display
- Footer sum only shown in monthly view (not annual)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extended live-compute to ALL tabs:
- Liquidität: "Summe ERTRÄGE" = sum of einzahlung rows,
"Summe AUSZAHLUNGEN" = sum of auszahlung rows
- Kunden: GESAMT rows = sum of tier detail rows
- Umsatz: GESAMTUMSATZ = sum of all revenue rows
- Materialaufwand: SUMME = sum of cost rows
ÜBERSCHUSS rows kept from DB (complex multi-step formula).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sum rows (is_sum_row=true) are now computed live in the frontend from
their detail rows, not read from stale DB values. This means:
- Category sums (Versicherungen, Marketing, Sonstige etc.) always match
- "Summe sonstige" = all non-personal, non-AfA rows
- "SUMME Betriebliche" = all rows including personal + AfA
- No more manual recompute needed after DB changes
Also: chart labels increased from 7-8px to 11px for readability.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Charts tab:
- All bar labels increased from 7-8px to 11px (readable)
- New: Liquidität (Jahresende) bar chart — shows cash position per year
- New: Umsatz vs. Gesamtkosten — side-by-side bars per year
- All charts read from fpKPIs (fp_* source of truth)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Churn model: 25% of new customers leave after 3 months (trial period).
Remaining customers have normal monthly churn (3% Starter, 2% Pro, 1% Ent).
Churn label shows "25% Trial + X%/Mon".
DB: section 'unit_cost' renamed to 'einkauf' (removed English label from UI).
Code: unit price detection updated for new section name.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Removed auto-generated SUMME footer from umsatzerloese, materialaufwand, kunden tabs
(GESAMTUMSATZ/Bestandskunden gesamt rows already exist in DB data)
- GESAMT/Total rows now have thicker top border (border-t-2 white/20)
- unit_cost rows show unit price instead of annual sum
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Einkaufspreis rows (Mac Mini/Studio) showed sum of 12 months (e.g. 38,400)
instead of the unit price (3,200). Now detected via section='unit_cost'
or label contains 'Einkaufspreis' and shows the price value instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bug: Finanzplan data grid always loaded Base Case (is_default=true)
even for Wandeldarlehen version, showing 35 employees + module-based
customers instead of lean 10-person plan.
Fix: isWandeldarlehen prop passed to FinanzplanSlide. On load, picks
Wandeldarlehen scenario by name match instead of is_default.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FinancialsSlide:
- Break-Even: shows year (2029) instead of formatted number (2.029)
- GuV tab: replaced AnnualPLTable (useFinancialModel) with fp_guv data table
Shows: Revenue, Personnel, EBIT, Taxes, Net Income per year
- Cashflow tab: replaced AnnualCashflowChart (useFinancialModel) with
fp_liquiditaet bar chart showing cash position + EBIT per year
- Both tabs now show "Quelle: Finanzplan" label
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>