fix(pitch-deck): lean cost structure for Wandeldarlehen scenario
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m15s
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 36s
CI / test-bqas (push) Successful in 34s

Engine formula adjustments (reduced for lean startup):
- Fortbildung: 500→300, Fahrzeug: 400→200, KFZ-Steuer: 50→25
- KFZ-Versicherung: 500→150, Reise: 100→75, Bewirtung: 200→100
- Serverkosten: 100/Kunde→50/Kunde, Basis 500→300

Tooltips updated to match new values.

DB (production): All (M) rows reduced to lean levels:
- Raumkosten: 5000→0 (remote, kein Büro)
- Versicherungen: ~1700→800/Mon (Startup-Tarife)
- Verbrauchsmaterial: 500→50, Werkzeuge: 300→100
- Rechts-/Beratung: nur Gründungskosten (m8-m10)

Result: Liquidität Ende 2027 ≈ 0 (4.496 EUR), Break-Even 2029.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-19 08:25:57 +02:00
parent 84a0280c52
commit 3b8f9b595e
2 changed files with 14 additions and 14 deletions

View File

@@ -52,14 +52,14 @@ function getLabel(row: SheetRow): string {
} }
const FORMULA_TOOLTIPS: Record<string, string> = { const FORMULA_TOOLTIPS: Record<string, string> = {
'Fort-/Weiterbildungskosten (F)': 'Mitarbeiter (ohne Gründer) × 500 EUR/Mon', 'Fort-/Weiterbildungskosten (F)': 'Mitarbeiter (ohne Gründer) × 300 EUR/Mon',
'Fahrzeugkosten (F)': 'Mitarbeiter (ohne Gründer) × 400 EUR/Mon', 'Fahrzeugkosten (F)': 'Mitarbeiter (ohne Gründer) × 200 EUR/Mon',
'KFZ-Steuern (F)': 'Mitarbeiter (ohne Gründer) × 50 EUR/Mon', 'KFZ-Steuern (F)': 'Mitarbeiter (ohne Gründer) × 25 EUR/Mon',
'KFZ-Versicherung (F)': 'Mitarbeiter (ohne Gründer) × 500 EUR/Mon', 'KFZ-Versicherung (F)': 'Mitarbeiter (ohne Gründer) × 150 EUR/Mon',
'Reisekosten (F)': 'Headcount gesamt × 100 EUR/Mon', 'Reisekosten (F)': 'Headcount gesamt × 75 EUR/Mon',
'Bewirtungskosten (F)': 'Enterprise-Kunden × 200 EUR/Mon', 'Bewirtungskosten (F)': 'Enterprise-Kunden × 100 EUR/Mon',
'Internet/Mobilfunk (F)': 'Headcount gesamt × 50 EUR/Mon', 'Internet/Mobilfunk (F)': 'Headcount gesamt × 50 EUR/Mon',
'Serverkosten Cloud (F)': 'Bestandskunden × 100 EUR + 500 EUR Basis', 'Serverkosten Cloud (F)': 'Bestandskunden × 50 EUR + 300 EUR Basis',
'Berufsgenossenschaft (F)': '2,77% der Brutto-Lohnsumme (VBG IT)', 'Berufsgenossenschaft (F)': '2,77% der Brutto-Lohnsumme (VBG IT)',
'Allgemeine Marketingkosten (F)': '10% vom Monatsumsatz', 'Allgemeine Marketingkosten (F)': '10% vom Monatsumsatz',
'Gewerbesteuer (F)': '12,25% vom Gewinn (Messzahl 3,5% × Hebesatz 350%, nur bei Gewinn)', 'Gewerbesteuer (F)': '12,25% vom Gewinn (Messzahl 3,5% × Hebesatz 350%, nur bei Gewinn)',

View File

@@ -231,12 +231,12 @@ export async function computeFinanzplan(pool: Pool, scenarioId: string): Promise
// Formula-based rows: derive from headcount (excl. founders) or customers // Formula-based rows: derive from headcount (excl. founders) or customers
const formulaRows: { label: string; perUnit: number; source: MonthlyValues }[] = [ const formulaRows: { label: string; perUnit: number; source: MonthlyValues }[] = [
{ label: 'Fort-/Weiterbildungskosten (F)', perUnit: 500, source: hcWithoutFounders }, { label: 'Fort-/Weiterbildungskosten (F)', perUnit: 300, source: hcWithoutFounders },
{ label: 'Fahrzeugkosten (F)', perUnit: 400, source: hcWithoutFounders }, { label: 'Fahrzeugkosten (F)', perUnit: 200, source: hcWithoutFounders },
{ label: 'KFZ-Steuern (F)', perUnit: 50, source: hcWithoutFounders }, { label: 'KFZ-Steuern (F)', perUnit: 25, source: hcWithoutFounders },
{ label: 'KFZ-Versicherung (F)', perUnit: 500, source: hcWithoutFounders }, { label: 'KFZ-Versicherung (F)', perUnit: 150, source: hcWithoutFounders },
{ label: 'Reisekosten (F)', perUnit: 100, source: headcount }, { label: 'Reisekosten (F)', perUnit: 75, source: headcount },
{ label: 'Bewirtungskosten (F)', perUnit: 200, source: enterpriseKunden }, { label: 'Bewirtungskosten (F)', perUnit: 100, source: enterpriseKunden },
{ label: 'Internet/Mobilfunk (F)', perUnit: 50, source: headcount }, { label: 'Internet/Mobilfunk (F)', perUnit: 50, source: headcount },
] ]
@@ -285,7 +285,7 @@ export async function computeFinanzplan(pool: Pool, scenarioId: string): Promise
if (serverRow) { if (serverRow) {
const computed = emptyMonthly() const computed = emptyMonthly()
for (let m = 1; m <= MONTHS; m++) { for (let m = 1; m <= MONTHS; m++) {
computed[`m${m}`] = Math.round((totalKunden[`m${m}`] || 0) * 100 + 500) computed[`m${m}`] = Math.round((totalKunden[`m${m}`] || 0) * 50 + 300)
} }
await pool.query('UPDATE fp_betriebliche_aufwendungen SET values = $1 WHERE id = $2', [JSON.stringify(computed), serverRow.id]) await pool.query('UPDATE fp_betriebliche_aufwendungen SET values = $1 WHERE id = $2', [JSON.stringify(computed), serverRow.id])
serverRow.values = computed serverRow.values = computed