Files
breakpilot-core/pitch-deck/components/slides/CapTableSlide.tsx
Benjamin Admin 3188054462 feat: Cap Table Folie + INVEST 20% + ESOP + Gründergehälter
Neue Folie "Investition & Cap Table" nach The Ask:
- Pie Chart: Gründer 75%, Investor 19,6%, ESOP 5,4%
- Pre-Seed Details: 4M Pre-Money, 975k Investment, 4,975M Post-Money
- Gründergehälter: 0 (2026) → 7k (2027) → 8k (2028) → 9,1k (2029+)
- Gewinnverwendung: 100% Reinvestition, kein Dividende bis Series A
- INVEST-Programm (BAFA): 20% Zuschuss = 195.000 EUR zurück
- ESOP: 5,4% für Schlüsselmitarbeiter, 4J Vesting, 1J Cliff
- Series A Ausblick: 15-25M Bewertung bei 3M+ ARR

Finanzplan: Gründer 7.000 EUR/Mo ab Jan 2027, 14% jährl. Erhöhung

FAQs: Cap Table + Gewinnverwendung als Fließtext

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 18:20:02 +01:00

218 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use client'
import { Language } from '@/lib/types'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import GlassCard from '../ui/GlassCard'
import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip } from 'recharts'
import { TrendingUp, Users, Briefcase, Target } from 'lucide-react'
interface CapTableSlideProps {
lang: Language
}
const COLORS = ['#6366f1', '#8b5cf6', '#f59e0b', '#94a3b8']
export default function CapTableSlide({ lang }: CapTableSlideProps) {
const de = lang === 'de'
const capTableData = [
{ name: 'Benjamin Bönisch (CEO)', value: 37.5, color: '#6366f1' },
{ name: 'Sharang Parnerkar (CTO)', value: 37.5, color: '#8b5cf6' },
{ name: de ? 'Pre-Seed Investor' : 'Pre-Seed Investor', value: 19.6, color: '#f59e0b' },
{ name: 'ESOP Pool', value: 5.4, color: '#94a3b8' },
]
return (
<div className="max-w-6xl mx-auto">
<FadeInView className="text-center mb-6">
<h2 className="text-3xl md:text-4xl font-bold mb-2">
<GradientText>{de ? 'Investition & Cap Table' : 'Investment & Cap Table'}</GradientText>
</h2>
<p className="text-sm text-white/50 max-w-2xl mx-auto">
{de ? '4 Mio. EUR Pre-Money Bewertung · 975.000 EUR Pre-Seed · Gründung Jul/Aug 2026' : 'EUR 4M pre-money valuation · EUR 975,000 pre-seed · Founding Jul/Aug 2026'}
</p>
</FadeInView>
<div className="grid md:grid-cols-2 gap-6 mb-6">
{/* Cap Table Pie Chart */}
<FadeInView delay={0.1}>
<GlassCard hover={false} className="p-5">
<h3 className="text-sm font-bold text-indigo-400 uppercase tracking-wider mb-4 text-center">
{de ? 'Anteilsverteilung nach Pre-Seed' : 'Share Distribution Post Pre-Seed'}
</h3>
<div className="flex items-center gap-6">
<div className="w-48 h-48">
<ResponsiveContainer width="100%" height="100%">
<PieChart>
<Pie data={capTableData} cx="50%" cy="50%" innerRadius={45} outerRadius={75} dataKey="value" stroke="none">
{capTableData.map((entry, idx) => (
<Cell key={idx} fill={entry.color} />
))}
</Pie>
<Tooltip
contentStyle={{ background: 'rgba(10,10,26,0.9)', border: '1px solid rgba(255,255,255,0.1)', borderRadius: 8, color: '#fff', fontSize: 12 }}
formatter={(value: number) => `${value}%`}
/>
</PieChart>
</ResponsiveContainer>
</div>
<div className="flex-1 space-y-2">
{capTableData.map((entry, idx) => (
<div key={idx} className="flex items-center gap-2">
<div className="w-3 h-3 rounded-full shrink-0" style={{ backgroundColor: entry.color }} />
<span className="text-xs text-white/70 flex-1">{entry.name}</span>
<span className="text-xs font-bold text-white/80 font-mono">{entry.value}%</span>
</div>
))}
</div>
</div>
</GlassCard>
</FadeInView>
{/* Investment Details */}
<FadeInView delay={0.15}>
<GlassCard hover={false} className="p-5">
<h3 className="text-sm font-bold text-amber-400 uppercase tracking-wider mb-4">
{de ? 'Pre-Seed Runde' : 'Pre-Seed Round'}
</h3>
<div className="space-y-3">
{[
{ label: 'Pre-Money Bewertung', value: '4.000.000 EUR', icon: Target },
{ label: 'Investment', value: '975.000 EUR', icon: Briefcase },
{ label: 'Post-Money', value: '4.975.000 EUR', icon: TrendingUp },
{ label: de ? 'Investoranteil' : 'Investor Share', value: '19,6%', icon: Users },
{ label: 'Instrument', value: de ? 'Stammkapital + Wandeldarlehen' : 'Equity + Convertible', icon: Briefcase },
].map((item, idx) => {
const Icon = item.icon
return (
<div key={idx} className="flex items-center justify-between">
<div className="flex items-center gap-2">
<Icon className="w-4 h-4 text-white/30" />
<span className="text-xs text-white/60">{item.label}</span>
</div>
<span className="text-sm font-bold text-white/80 font-mono">{item.value}</span>
</div>
)
})}
</div>
</GlassCard>
</FadeInView>
</div>
{/* Gründergehälter + Gewinnverwendung */}
<div className="grid md:grid-cols-2 gap-6 mb-6">
<FadeInView delay={0.2}>
<GlassCard hover={false} className="p-5">
<h3 className="text-sm font-bold text-emerald-400 uppercase tracking-wider mb-3">
{de ? 'Gründergehälter' : 'Founder Salaries'}
</h3>
<p className="text-xs text-white/50 mb-3">
{de
? 'Bewusst unter Markt — zeigt Investoren Skin in the Game und Kapitaldisziplin.'
: 'Deliberately below market — shows investors skin in the game and capital discipline.'}
</p>
<div className="space-y-2">
{[
{ period: '2026 (AugDez)', salary: de ? '0 EUR (unbezahlt)' : 'EUR 0 (unpaid)', note: de ? 'Gründungsphase' : 'Founding phase' },
{ period: '2027', salary: '7.000 EUR/Mo', note: de ? 'Unter Marktniveau' : 'Below market' },
{ period: '2028', salary: '~8.000 EUR/Mo', note: de ? 'Product-Market Fit' : 'Product-market fit' },
{ period: '2029+', salary: '~9.100 EUR/Mo', note: de ? 'Break-Even erreicht' : 'Break-even reached' },
].map((item, idx) => (
<div key={idx} className="flex items-center justify-between text-xs">
<span className="text-white/40 min-w-[100px]">{item.period}</span>
<span className="text-white/70 font-mono">{item.salary}</span>
<span className="text-white/30 text-[10px]">{item.note}</span>
</div>
))}
</div>
</GlassCard>
</FadeInView>
<FadeInView delay={0.25}>
<GlassCard hover={false} className="p-5">
<h3 className="text-sm font-bold text-purple-400 uppercase tracking-wider mb-3">
{de ? 'Gewinnverwendung' : 'Use of Profits'}
</h3>
<p className="text-xs text-white/50 mb-3">
{de
? '100% Reinvestition in Wachstum — Standard bei schnell wachsenden SaaS-Startups.'
: '100% reinvestment in growth — standard for fast-growing SaaS startups.'}
</p>
<div className="space-y-2">
{(de ? [
'Keine Gewinnausschüttung bis mindestens Series A',
'Jeder Euro in Wachstum bringt 3-5x Return in 2-3 Jahren',
'Investition in: Engineering, Vertrieb, EU-Expansion',
'Gründer partizipieren über Equity-Wertsteigerung, nicht Gehalt',
] : [
'No profit distribution until at least Series A',
'Every euro in growth returns 3-5x in 2-3 years',
'Investment in: engineering, sales, EU expansion',
'Founders participate through equity appreciation, not salary',
]).map((item, idx) => (
<p key={idx} className="text-xs text-white/60 pl-3 relative">
<span className="absolute left-0 top-1 w-1.5 h-1.5 rounded-full bg-purple-400/60" />
{item}
</p>
))}
</div>
</GlassCard>
</FadeInView>
</div>
{/* ESOP + INVEST + Series A */}
<div className="grid md:grid-cols-3 gap-4 mb-6">
<FadeInView delay={0.3}>
<GlassCard hover={false} className="p-4">
<h3 className="text-xs font-bold text-cyan-400 uppercase tracking-wider mb-2">
ESOP {de ? '(Mitarbeiterbeteiligung)' : '(Employee Stock Option Plan)'}
</h3>
<p className="text-xs text-white/60 leading-relaxed">
{de
? '5,4% ESOP-Pool für Schlüsselmitarbeiter. Vesting über 4 Jahre mit 1 Jahr Cliff. Besonders wichtig für frühe Hires (Security Engineer, CE-Ingenieur, Channel Manager), die unter Marktgehalt einsteigen. ESOP wird aus Gründeranteilen gestellt.'
: '5.4% ESOP pool for key employees. 4-year vesting with 1-year cliff. Especially important for early hires (security engineer, CE engineer, channel manager) who join below market salary. ESOP comes from founder shares.'}
</p>
</GlassCard>
</FadeInView>
<FadeInView delay={0.35}>
<GlassCard hover={false} className="p-4 border border-emerald-500/20">
<h3 className="text-xs font-bold text-emerald-400 uppercase tracking-wider mb-2">
INVEST {de ? '(Staatlicher Zuschuss)' : '(Government Subsidy)'}
</h3>
<p className="text-xs text-white/60 leading-relaxed mb-2">
{de
? 'Das BAFA-Programm "INVEST — Zuschuss für Wagniskapital" erstattet Business Angels 20% ihres Investments als nicht rückzahlbaren Zuschuss.'
: 'The BAFA program "INVEST — Venture Capital Grant" reimburses business angels 20% of their investment as a non-repayable grant.'}
</p>
<div className="space-y-1 text-xs">
<div className="flex justify-between"><span className="text-white/40">{de ? 'Zuschuss' : 'Grant'}</span><span className="text-emerald-300 font-bold">20%</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Bei 975k Investment' : 'On EUR 975k'}</span><span className="text-emerald-300 font-bold">195.000 EUR</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Max. pro Investor/Jahr' : 'Max. per investor/yr'}</span><span className="text-white/60">500.000 EUR</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Haltefrist' : 'Holding period'}</span><span className="text-white/60">{de ? '3 Jahre' : '3 years'}</span></div>
</div>
</GlassCard>
</FadeInView>
<FadeInView delay={0.4}>
<GlassCard hover={false} className="p-4">
<h3 className="text-xs font-bold text-blue-400 uppercase tracking-wider mb-2">
{de ? 'Series A Ausblick (Q1/Q2 2028)' : 'Series A Outlook (Q1/Q2 2028)'}
</h3>
<div className="space-y-1.5 text-xs">
<div className="flex justify-between"><span className="text-white/40">{de ? 'Bewertung' : 'Valuation'}</span><span className="text-white/70 font-mono">15-25 Mio. EUR</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Volumen' : 'Round size'}</span><span className="text-white/70 font-mono">5-15 Mio. EUR</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Verwässerung' : 'Dilution'}</span><span className="text-white/70 font-mono">20-25%</span></div>
<div className="flex justify-between"><span className="text-white/40">{de ? 'Gründer danach' : 'Founders post'}</span><span className="text-white/70 font-mono">~55-60%</span></div>
<p className="text-[10px] text-white/30 mt-2 italic">
{de ? 'Bei 3M+ ARR und 100+ Kunden' : 'At EUR 3M+ ARR and 100+ customers'}
</p>
</div>
</GlassCard>
</FadeInView>
</div>
</div>
)
}