fix(pitch-deck): sync Executive Summary + BusinessModel with compute engine
Some checks failed
Build pitch-deck / build-push-deploy (push) Failing after 35s
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 35s
CI / test-python-voice (push) Successful in 33s
CI / test-bqas (push) Successful in 33s
Some checks failed
Build pitch-deck / build-push-deploy (push) Failing after 35s
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 35s
CI / test-python-voice (push) Successful in 33s
CI / test-bqas (push) Successful in 33s
ExecutiveSummarySlide: - Unternehmensentwicklung: hardcoded table → useFinancialModel + computeAnnualKPIs (MA, Kunden, ARR now computed from finanzplan DB for all versions) - Pricing: aligned with BusinessModelSlide tiers (Starter/Professional/Enterprise) Enterprise: 40k → 50k (matching Folie 11) BusinessModelSlide: - ACV: hardcoded "15–50k" → computed from summary.final_arr / final_customers - Gross Margin: hardcoded "> 80%" → computed from lastResult.gross_margin_pct All financial numbers on all slides now flow from the same compute engine. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,9 +61,14 @@ export default function BusinessModelSlide({ lang, investorId }: BusinessModelSl
|
||||
},
|
||||
]
|
||||
|
||||
const grossMargin = lastResult?.gross_margin_pct ?? 0
|
||||
const acvLabel = acv > 0
|
||||
? (de ? `${(acv / 1000).toFixed(1).replace('.', ',')}k EUR` : `EUR ${(acv / 1000).toFixed(1)}k`)
|
||||
: '—'
|
||||
|
||||
const metrics = [
|
||||
{ icon: DollarSign, color: 'text-indigo-400', label: 'ACV', value: de ? '15 – 50k EUR' : '15 – 50k EUR', sub: de ? 'Durchschnittlicher Vertragswert' : 'Average Contract Value' },
|
||||
{ icon: TrendingUp, color: 'text-emerald-400', label: 'Gross Margin', value: '> 80%', sub: de ? 'Cloud-native, keine Hardware-Kosten' : 'Cloud-native, no hardware costs' },
|
||||
{ icon: DollarSign, color: 'text-indigo-400', label: 'ACV (2030)', value: acvLabel, sub: de ? 'Durchschnittlicher Vertragswert (berechnet)' : 'Average Contract Value (computed)' },
|
||||
{ icon: TrendingUp, color: 'text-emerald-400', label: 'Gross Margin', value: `${Math.round(grossMargin)}%`, sub: de ? 'Cloud-native, keine Hardware-Kosten' : 'Cloud-native, no hardware costs' },
|
||||
{ icon: Repeat, color: 'text-purple-400', label: 'NRR Ziel', value: '> 120%', sub: de ? 'Upsell: mehr Module, mehr Nutzer' : 'Upsell: more modules, more users' },
|
||||
{ icon: Target, color: 'text-amber-400', label: 'Payback', value: de ? '< 3 Monate' : '< 3 Months', sub: de ? 'Ersparnis übersteigt Kosten ab Q1' : 'Savings exceed costs from Q1' },
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user