feat(pitch-deck): Pricing slide, GuV hierarchy, Problem/Solution cards, engine fixes
Some checks failed
Build pitch-deck / build-push-deploy (push) Successful in 1m52s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-python-voice (push) Has been cancelled
CI / test-bqas (push) Has been cancelled
CI / test-go-consent (push) Has been cancelled

- BusinessModel → Pricing: remove Unit Economics, fullwidth tiers
- GuV: major sums (EBIT, Rohergebnis, Jahresüberschuss) larger font + border
- Engine: compute Rohergebnis, dynamic financing row matching
- Problem slide: amber/orange "Die Konsequenz" card
- Solution slide: larger Compliance Optimizer card
- DB patch: Stammkapital, 2. Finanzierungsrunde 500k, GuV sort order

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-21 20:33:35 +02:00
parent 43418d46fd
commit 111e5d546f
8 changed files with 133 additions and 135 deletions

View File

@@ -513,10 +513,18 @@ export async function computeFinanzplan(pool: Pool, scenarioId: string): Promise
const sonstigeAnnual = annualSums(totalSonstige)
// Write GuV rows
// Rohergebnis = Gesamtleistung - Materialaufwand
const rohergebnis: AnnualValues = {}
for (let y = 2026; y <= 2030; y++) {
const k = `y${y}`
rohergebnis[k] = Math.round((umsatzAnnual[k] || 0) - (materialAnnual[k] || 0))
}
const guvUpdates: { label: string; values: AnnualValues }[] = [
{ label: 'Umsatzerlöse', values: umsatzAnnual },
{ label: 'Gesamtleistung', values: umsatzAnnual },
{ label: 'Summe Materialaufwand', values: materialAnnual },
{ label: 'Rohergebnis', values: rohergebnis },
{ label: 'Löhne und Gehälter', values: personalBruttoAnnual },
{ label: 'Soziale Abgaben', values: personalSozialAnnual },
{ label: 'Summe Personalaufwand', values: personalAnnual },

View File

@@ -18,7 +18,7 @@ const translations = {
'Modularer Baukasten',
'So funktioniert\'s',
'Markt',
'Geschäftsmodell',
'Pricing',
'Meilensteine',
'Wettbewerb',
'Team',
@@ -188,8 +188,8 @@ const translations = {
growth: 'Wachstum p.a.',
},
businessModel: {
title: 'Geschäftsmodell',
subtitle: 'Modulares SaaS mit Savings-Argument',
title: 'Pricing',
subtitle: 'Mitarbeiterbasiertes SaaS — Kunden sparen mehr als sie zahlen',
unitEconomics: 'Unit Economics',
amortization: 'Amortisation',
margin: 'Marge',
@@ -314,7 +314,7 @@ const translations = {
'Modular Toolkit',
'How It Works',
'Market',
'Business Model',
'Pricing',
'Milestones',
'Competition',
'Team',
@@ -484,8 +484,8 @@ const translations = {
growth: 'Growth p.a.',
},
businessModel: {
title: 'Business Model',
subtitle: 'Modular SaaS with Savings Argument',
title: 'Pricing',
subtitle: 'Employee-based SaaS — customers save more than they pay',
unitEconomics: 'Unit Economics',
amortization: 'Amortization',
margin: 'Margin',