PDF: @page 297mm x 680mm mit 30mm Margins (passt zum getesteten Format)
Personal: 35 Positionen (5/10/17/25/35 MA pro Jahr)
Kunden: ~20/122/379/733/1213 verteilt auf 4 Pricing-Tiers
Startup 60%, KMU klein 25%, KMU mittel 10%, Enterprise 5%
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CE-SW-Risiko: "auf Code-Basis schon in der Entwicklung"
- "Compliance GPT" ohne "Echtzeit"
- Problem +Bullet: "EU-Regulierung unterscheidet nicht klein/groß"
- Sicherheitskontrollen → Prüfaspekte (Hero + KPI-Kachel)
- Pricing: "Startup" ohne "/ <10"
- Markt: SOM mit * "nur Anlagen- und Maschinenbau"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Problem: "Hohe Kosten für Pentests und Audits — nur einmal im Jahr"
Lösung: +CE-SW-Risikobeurteilung Echtzeit, +Compliance GPT,
Pflichten statt CE-Risikobewertungen, Jira entfernt
Spalten: grid-cols-4 / grid-cols-6 gleichmäßig verteilt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Vollstaendiger Disclaimer-Text (DE + EN) am Ende der Executive Summary:
- Slide: Dezente Box mit 7px Schrift, vor dem Download-Button
- PDF (DIN A3): Gleicher Text in #94a3b8 vor dem Footer
Inhalt: Keine Anlageberatung, zukunftsgerichtete Aussagen,
Team Breakpilot (noch keine GmbH), Vertraulichkeit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CSS-Variablen-basiertes Theming (globals.css)
- .theme-light Klasse auf html-Element schaltet alles um
- Toggle-Button oben rechts (Sonne/Mond Icon)
- Light Mode: helle Hintergruende, dunkle Texte, gedaempfte Glass-Effekte
- Alle text-white/* Klassen werden per CSS Override umgemapped
- Partikel-Background auf 8% Opacity im Light Mode
- Kein text-shadow-glow im Light Mode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GuV hat Jahres-Keys (y2026) statt Monats-Keys (m1-m60).
Eigene Tabelle mit 5 Jahrsspalten, Jahresnavigation ausgeblendet.
Alle Summenzeilen (EBIT, Ergebnis, Jahresueberschuss) hervorgehoben.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nach dem Audit: Haupt-/Nebenabweichungen automatisch abarbeiten —
Rollen zuweisen, Stichtage, Tickets, Nachweise einfordern,
Eskalation an GF. Kein Excel, kein Hinterherlaufen.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Echte KMU-Sorgen statt irrelevante 4.1B-Statistik:
1. KI-Dilemma: Wollen KI, aber keinen Copilot/Claude im Code
2. Patriots Act: Selbst EU-Server der US-Player unsicher
3. Regulierungs-Tsunami: 5+ Gesetze, 50k/Jahr Stichproben
Quote: "Maschinenbauer brauchen eine KI-Loesung, die in Deutschland
laeuft, ihren Code schuetzt und Compliance automatisiert."
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Maschinenbau als neue Kern-Branche in Matrix (15 Regularien)
- Alle Branchen-Counts aktualisiert (synced mit breakpilot-lehrer)
- 9→10 Branchen ueberall konsistent (i18n, KPIs, Presenter, FAQ)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Neue Folie als erste Content-Slide (nach Intro) mit kompakter
Investor-Uebersicht: Problem/Loesung, KPIs, Markt, Team, Funding.
PDF-Download via window.print() ohne zusaetzliche Dependencies.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Screenshots were owned by root but Next.js standalone runs as nextjs user,
causing image optimization to fail with 'not a valid image' error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restructure all pitch messaging: Cloud-based SDK platform with 65+ modules
is the CORE product. Mac Mini/Studio repositioned as side product for small
firms. Updated presenter scripts (20 slides), FAQ (35 entries), and chat
system prompt with new Kernbotschaften covering company compliance, Code/CE
scanning, EU AI hosting, Jira integration, and additional features.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Chat answers are now read aloud via Edge TTS (auto, with mute toggle)
- FAQ team answer: vague text → Benjamin Boenisch (CEO) + Sharang (CTO)
- System prompt: explicit instruction to always cite team names from DB
- Speaker icon in chat header shows speaking state, click to mute/unmute
- Audio stops on new message, chat close, or mute
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Concatenate all paragraphs + transition hint into one TTS call per slide
→ natural prosody, zero gaps within a slide
- Pre-fetch next slide's audio during current playback → seamless transitions
- Advance slide during transition phrase ("Let us look at...")
- Pause/resume without destroying audio → instant continue
- Subtitle display synced to playback position via timeupdate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
useSlideNavigation.ts has 'use client' — server API routes can't import
from it. Move SLIDE_ORDER to lib/slide-order.ts (no 'use client') and
re-export from useSlideNavigation for backwards compat.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
stateRef was still 'resuming' when advanceRef.current() ran,
causing it to bail out. Now sync stateRef immediately before advance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Browser autoplay policy blocks audio.play() outside user gesture.
Use AudioContext to unlock audio immediately in click handler.
Add console logging for TTS debugging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New API route /api/presenter/tts proxies to compliance-tts-service
- usePresenterMode now uses Audio element with Piper-generated MP3
- Client-side audio caching (text hash → blob URL) avoids re-synthesis
- Graceful fallback to word-count timer if TTS service unavailable
- Add TTS_SERVICE_URL env var to pitch-deck Docker config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Integrate Web Speech API into usePresenterMode for text-to-speech
- Speech-driven paragraph advancement (falls back to timer if TTS unavailable)
- TTS toggle button (Volume2/VolumeX) in PresenterOverlay
- Chrome keepAlive workaround for long speeches
- Voice selection: prefers premium/neural voices, falls back to any matching lang
- Fix all German umlauts across presenter-script, presenter-faq, i18n, route.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Migrate chat API from Ollama to LiteLLM (OpenAI-compatible SSE)
- Add 15-min presenter storyline with bilingual scripts for all 20 slides
- Add FAQ system (30 entries) with keyword matching for instant answers
- Add IntroPresenterSlide with avatar placeholder and start button
- Add PresenterOverlay (progress bar, subtitle text, play/pause/stop)
- Add AvatarPlaceholder with pulse animation during speaking
- Add usePresenterMode hook (state machine: idle→presenting→paused→answering→resuming)
- Add 'P' keyboard shortcut to toggle presenter mode
- Support [GOTO:slide-id] markers in chat responses
- Dynamic slide count (was hardcoded 13, now from SLIDE_ORDER)
- TTS stub prepared for future Piper integration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ChatInterface.tsx war falsch — der echte Investor Agent laeuft in
ChatFAB.tsx. Animierte Punkte + firstChunk-Logik dort implementiert.
Session-History laeuft bereits korrekt (FAB permanent gemountet).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
isWaiting im async Closure war immer true — lokale Variable
firstChunk ersetzt den State-Check zuverlaessig.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Drei animierte Punkte (iMessage-Style) erscheinen sofort nach dem
Absenden und verschwinden wenn der erste Token eintrifft.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Qwen3.5 denkt standardmaessig intern durch (think: true) — das
ueberschreitet den 2-Minuten-Timeout des Investor Agents.
think: false + num_ctx 8192 sorgt fuer schnelle direkte Antworten.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>