This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/pitch-deck/components/slides/AnnexRAGSlide.tsx
BreakPilot Dev b464366341
Some checks failed
ci/woodpecker/push/integration Pipeline failed
ci/woodpecker/push/main Pipeline failed
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
feat: Add staged funding model, financial compute engine, annex slides and UI enhancements
Restructure financial plan from single 200k SAFE to realistic staged funding
(25k Stammkapital, 25k Angel, 200k Wandeldarlehen, 1M Series A = 1.25M total).
Add 60-month compute engine with CAPEX/OPEX accounting, cash constraints,
hardware financing (30% upfront / 70% leasing), and revenue-based hiring caps.
Rebuild TheAskSlide with 4-event funding timeline, update i18n (DE/EN),
chat agent core messages, and add 15 new annex/technology slides with
supporting UI components (KPICard, RunwayGauge, WaterfallChart, etc.).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:20:02 +01:00

205 lines
6.4 KiB
TypeScript

'use client'
import { motion } from 'framer-motion'
import { Database, FileSearch, Layers, BarChart3, FileUp, ScanLine, Brain } from 'lucide-react'
import { Language } from '@/lib/types'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
interface AnnexRAGSlideProps {
lang: Language
}
export default function AnnexRAGSlide({ lang }: AnnexRAGSlideProps) {
const pipelineSteps = [
{
icon: FileUp,
labelDE: 'Dokument Upload',
labelEN: 'Document Upload'
},
{
icon: ScanLine,
labelDE: 'OCR Verarbeitung',
labelEN: 'OCR Processing'
},
{
icon: Layers,
labelDE: 'Chunking',
labelEN: 'Chunking'
},
{
icon: Brain,
labelDE: 'Embedding',
labelEN: 'Embedding'
},
{
icon: Database,
labelDE: 'Vector Store',
labelEN: 'Vector Store'
}
]
const features = [
{
titleDE: 'Qdrant Vector DB',
titleEN: 'Qdrant Vector DB',
icon: Database,
pointsDE: [
'High-performance vector search',
'Hybrid search: semantisch + keyword',
'Filter nach Metadaten (Typ, Datum, Vorschrift)',
'99.2% Retrieval-Genauigkeit'
],
pointsEN: [
'High-performance vector search',
'Hybrid search: semantic + keyword',
'Filters by metadata (document type, date, regulation)',
'99.2% retrieval accuracy'
]
},
{
titleDE: 'Embedding Pipeline',
titleEN: 'Embedding Pipeline',
icon: FileSearch,
pointsDE: [
'PaddleOCR für Dokumentenscanning',
'Chunk-Größe: 512 Tokens, Overlap: 64',
'Sentence-Transformers für Embedding',
'Automatische Spracherkennung'
],
pointsEN: [
'PaddleOCR for document scanning',
'Chunk size: 512 tokens, overlap: 64',
'Sentence-Transformers for embedding',
'Automatic language detection'
]
},
{
titleDE: 'Hybrid Search',
titleEN: 'Hybrid Search',
icon: Layers,
pointsDE: [
'Kombiniert dense + sparse Vektoren',
'BM25 für Keyword-Matching',
'Cosine-Similarity für semantische Suche',
'Re-Ranking für optimale Ergebnisse'
],
pointsEN: [
'Combines dense + sparse vectors',
'BM25 for keyword matching',
'Cosine similarity for semantic search',
'Re-ranking for optimal results'
]
},
{
titleDE: 'Retrieval Metrics',
titleEN: 'Retrieval Metrics',
icon: BarChart3,
pointsDE: [
'Precision@5: 94.3%',
'Recall@10: 97.1%',
'MRR: 0.89',
'Avg. Latenz: 120ms'
],
pointsEN: [
'Precision@5: 94.3%',
'Recall@10: 97.1%',
'MRR: 0.89',
'Avg latency: 120ms'
]
}
]
return (
<div className="max-w-6xl mx-auto px-4">
{/* Header */}
<FadeInView>
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold mb-4">
<GradientText>
{lang === 'de' ? 'RAG Pipeline & Vektordatenbank' : 'RAG Pipeline & Vector Database'}
</GradientText>
</h2>
<p className="text-xl text-white/60">
{lang === 'de'
? 'Präzise Antworten durch intelligentes Retrieval'
: 'Precise answers through intelligent retrieval'}
</p>
</div>
</FadeInView>
{/* Pipeline Visualization */}
<FadeInView delay={0.2}>
<div className="mb-12">
<div className="relative flex items-center justify-between gap-2">
{pipelineSteps.map((step, index) => {
const Icon = step.icon
return (
<div key={index} className="flex items-center flex-1">
<motion.div
initial={{ opacity: 0, scale: 0.8 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ delay: 0.3 + index * 0.1 }}
className="flex-1"
>
<div className="bg-white/[0.04] border border-white/[0.06] rounded-xl p-4 text-center hover:bg-white/[0.06] transition-all duration-300">
<Icon className="w-8 h-8 mx-auto mb-2 text-blue-400" />
<p className="text-sm text-white/80">
{lang === 'de' ? step.labelDE : step.labelEN}
</p>
</div>
</motion.div>
{index < pipelineSteps.length - 1 && (
<motion.div
initial={{ scaleX: 0 }}
animate={{ scaleX: 1 }}
transition={{ delay: 0.4 + index * 0.1, duration: 0.3 }}
className="flex-shrink-0 mx-2 origin-left"
>
<div className="h-0.5 w-8 bg-gradient-to-r from-blue-500 to-purple-500" />
</motion.div>
)}
</div>
)
})}
</div>
</div>
</FadeInView>
{/* Feature Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
{features.map((feature, index) => {
const Icon = feature.icon
return (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.6 + index * 0.1 }}
className="bg-white/[0.04] border border-white/[0.06] rounded-xl p-4 hover:bg-white/[0.06] transition-all duration-300"
>
<div className="flex items-center gap-3 mb-3">
<div className="p-2 bg-blue-500/10 rounded-lg">
<Icon className="w-5 h-5 text-blue-400" />
</div>
<h3 className="text-lg font-semibold text-white">
{lang === 'de' ? feature.titleDE : feature.titleEN}
</h3>
</div>
<ul className="space-y-2">
{(lang === 'de' ? feature.pointsDE : feature.pointsEN).map((point, idx) => (
<li key={idx} className="text-sm text-white/70 flex items-start">
<span className="text-blue-400 mr-2"></span>
<span>{point}</span>
</li>
))}
</ul>
</motion.div>
)
})}
</div>
</div>
)
}