\uD83C\uDFAF Quick Actions
\uD83D\uDCA1 Idee entwickeln
\uD83D\uDC68\u200D\uD83C\uDFEB Mentor fragen
\uD83E\uDDE0 XBRAIN Pipeline
\uD83E\uDD16 Agents starten
📈 Dein Fortschritt
Entscheidungen
${S.memory.decisions.length}
Erkenntnisse
${S.memory.insights.length}
Meilensteine
${S.memory.milestones.length}
`;
}
// ============================================================================
// XBRAIN VIEW — Wissenspipeline UI
// ============================================================================
function renderXBrain() {
const atomCount = S.maschinenraum?.atoms?.length || 0;
const synthCount = S.maschinenraum?.syntheses?.length || 0;
const sources = S.maschinenraum?.sources || [];
const recentAtoms = S.maschinenraum.atoms.slice(-10).reverse();
const latestSynthesis = S.maschinenraum.syntheses?.length > 0 ? S.maschinenraum.syntheses[S.maschinenraum.syntheses.length - 1] : null;
const clusters = S.maschinenraum.clusters || {};
const edges = S.maschinenraum.edges || [];
return `
🧠 XBRAIN — Wissenspipeline
🚀 Full Pipeline
+ Quelle
${Object.keys(clusters).length}
Cluster
${edges.length}
Verbindungen
📥 Quellen
${sources.map(src => `
${src.icon || '📦'}
${src.name}
${src.atomCount || 0} Atome
`).join('')}
📰 Newsroom sync
🏃 Sprints sync
🧬 Synthese
🧠 Deep Synthese
⚛️ Neueste Atome
${atomCount === 0 ? '
⚛️
Noch keine Atome. Starte die Pipeline oder füge eine Quelle hinzu.
' :
recentAtoms.map(atom => `
${atom.text.substring(0, 120)}
${atom.source} · ${new Date(atom.date).toLocaleDateString('de-DE')}
${atom.tags?.length ? '
' + atom.tags.map(t => '' + t + ' ').join('') + '
' : ''}
`).join('')}
🧬 Synthesen
${!latestSynthesis ? '
Noch keine Synthesen. Klicke auf "Synthese" oder starte die Full Pipeline.
' : `
Letzte Synthese: ${new Date(latestSynthesis.date).toLocaleDateString('de-DE')}
${(latestSynthesis.syntheses || []).map(s => `
${s.insight}
${s.action ? '
→ ' + s.action + '
' : ''}
👍 Nützlich
👎
`).join('')}
${latestSynthesis.blindspots?.length ? '
⚠️ Blindspots:
' + latestSynthesis.blindspots.map(b => '
• ' + b + '
').join('') + '
' : ''}
`}
📚 Akademisches Crawling
Generiere fundierte Wissensatome aus akademischen Quellen für jede Kategorie.
${Object.keys(S.maschinenraum?.clusters || {}).length > 0 ? Object.keys(S.maschinenraum.clusters).slice(0, 8).map(cat =>
'📚 ' + cat + ' '
).join('') : ['strategie', 'finanzen', 'marketing', 'produkt', 'kunden', 'technologie'].map(cat =>
'📚 ' + cat + ' '
).join('')}
`;
}
// ============================================================================
// GAP 1: IDEALAB RENDER
// ============================================================================
function renderIdeaLab() {
if (!S.idealab.tab) S.idealab.tab = 'ikigai';
if (!S.idealab.persona) S.idealab.persona = { name: '', alter: '', beruf: '', problem: '', ziel: '', budget: '' };
if (!S.idealab.psf) S.idealab.psf = { problem: '', existing: '', solution: '', unique: '', channel: '' };
const tab = S.idealab.tab;
const tabs = [
{ id: 'ikigai', label: 'Ikigai', icon: '🎯' },
{ id: 'persona', label: 'Persona', icon: '👤' },
{ id: 'psf', label: 'Problem-Solution', icon: '🔍' },
{ id: 'generator', label: 'AI Generator', icon: '🤖' },
];
let html = `
${tabs.map(t => `${t.icon} ${t.label} `).join('')}
`;
if (tab === 'persona') {
const p = S.idealab.persona;
html += `👤 Zielkunden-Persona
Definiere deinen idealen Kunden so konkret wie möglich.
🤖 AI Persona-Analyse
${S.idealab.personaInsight ? `
${S.idealab.personaInsight}
` : ''}
`;
} else if (tab === 'psf') {
const p = S.idealab.psf;
html += `🔍 Problem-Solution Fit
Validiere ob deine L\u00f6sung ein echtes Problem l\u00f6st.
Das Problem
Aktuelle L\u00f6sungen
Deine L\u00f6sung
Unfair Advantage
Erstkontakt-Kanal
🤖 AI Validierung
${S.idealab.psfResult ? `
${S.idealab.psfResult}
` : ''}
`;
} else if (tab === 'generator') {
html += `🤖 AI Ideen-Generator
Basierend auf deinem Ikigai, deiner Persona und XBRAIN Markt-Insights.
Ideen generieren `;
if (S.idealab.ideas.length > 0) {
html += `\uD83D\uDC8E Generierte Ideen `;
S.idealab.ideas.forEach((idea, idx) => {
const score = S.idealab.scores[idx] || 0;
const sc = score > 80 ? 'var(--green)' : score > 60 ? 'var(--yellow)' : 'var(--red)';
html += `
${idea}
Score: ${score}/100
`;
});
html += `
`;
}
} else {
// Ikigai tab (default)
html += `
🎯 Ikigai — Finde deine Bestimmung
Nutze das Ikigai-Framework, um deine perfekte Geschäftsidee zu entdecken.
`;
html += `
❤️ Was liebst du?
💪 Worin bist du gut?
🌍 Was braucht die Welt?
💰 Wofür zahlt man?
`;
} // end ikigai tab
return html;
}
async function generatePersonaInsights() {
const p = S.idealab.persona;
if (!p.problem || !p.beruf) { toast('Bitte mindestens Problem und Beruf ausf\u00fcllen', 'error'); return; }
toast('Analysiere Persona...', 'info');
const result = await ai([{role:'user',content:`Analysiere diese Zielkunden-Persona und gib mir 5 konkrete Insights:
Name: ${p.name}, Beruf: ${p.beruf}, Alter: ${p.alter}
Problem: ${p.problem}
Ziel: ${p.ziel}
Budget: ${p.budget}
Gib mir: 1. Kaufmotivation 2. Einw\u00e4nde 3. Beste Ansprache-Kan\u00e4le 4. Preisbereitschaft 5. Trigger-Events die zum Kauf f\u00fchren.`}],
'Du bist ein Customer Research Experte. Antworte auf Deutsch, konkret und actionable.');
if (result) { S.idealab.personaInsight = result; saveState(); render(); }
}
async function validatePSF() {
const p = S.idealab.psf;
if (!p.problem || !p.solution) { toast('Bitte Problem und L\u00f6sung ausf\u00fcllen', 'error'); return; }
toast('Validiere Problem-Solution Fit...', 'info');
const result = await ai([{role:'user',content:`Bewerte diesen Problem-Solution Fit auf einer Skala von 1-10:
PROBLEM: ${p.problem}
AKTUELLE L\u00d6SUNGEN: ${p.existing}
MEINE L\u00d6SUNG: ${p.solution}
UNFAIR ADVANTAGE: ${p.unique}
KANAL: ${p.channel}
Bewerte: 1. Problem-Gr\u00f6\u00dfe (1-10) 2. L\u00f6sungs-Fit (1-10) 3. Differenzierung (1-10) 4. Umsetzbarkeit (1-10)
Gib f\u00fcr jeden Punkt eine kurze Begr\u00fcndung und am Ende 3 konkrete n\u00e4chste Schritte.`}],
'Du bist ein Startup-Validator und Lean Startup Experte. Sei ehrlich und konstruktiv. Deutsch.');
if (result) { S.idealab.psfResult = result; saveState(); render(); }
}
async function generateIdeas() {
toast('Generiere Ideen mit AI + XBRAIN Markt-Insights...', 'info');
const ik = S.idealab.ikigai;
const p = S.idealab.persona;
const psf = S.idealab.psf;
let ctx = 'Generiere 5 konkrete, sofort umsetzbare One-Person-Business Ideen.\n\n';
if (ik.love) ctx += `IKIGAI:\n- Leidenschaft: ${ik.love}\n- F\u00e4higkeiten: ${ik.good}\n- Marktbedarf: ${ik.need}\n- Monetarisierung: ${ik.paid}\n\n`;
if (p.problem) ctx += `ZIELKUNDE: ${p.beruf}, Problem: ${p.problem}, Ziel: ${p.ziel}, Budget: ${p.budget}\n\n`;
if (psf.problem) ctx += `PROBLEM-SOLUTION: ${psf.problem} \u2192 ${psf.solution}\n\n`;
ctx += `F\u00fcr JEDE Idee gib:\n1. Name (kurz, pr\u00e4gnant)\n2. Ein-Satz-Beschreibung\n3. Gesch\u00e4ftsmodell (SaaS/Service/Produkt/Content)\n4. Ersten Schritt\n5. Umsatzpotenzial (niedrig/mittel/hoch)\n\nNummeriere die Ideen 1-5.`;
const result = await ai([{role:'user',content:ctx}],
'Du bist ein Solopreneur-Experte und Gesch\u00e4ftsideen-Generator. Fokus auf One-Person-Businesses die mit AI-Tools skalierbar sind. Deutsch, konkret, realistisch.');
if (result) {
const ideas = result.split('\n').filter(l => l.trim().match(/^\d+[\.\)]/)).map(l => l.replace(/^\d+[\.\)]\s*/, '').split(/[:\u2014\u2013–]/)[0].trim()).filter(i => i.length > 5);
S.idealab.ideas = ideas.slice(0, 5);
S.idealab.scores = S.idealab.ideas.map(() => Math.floor(Math.random() * 30 + 65));
S.idealab.fullResult = result;
saveState();
render();
toast(ideas.length + ' Ideen generiert!', 'success');
}
}
// ============================================================================
// GAP 2: COMPANY FOUNDATION RENDER
// ============================================================================
function renderCompany() {
let html = `
🏢 Unternehmensform wählen
Wähle die beste Rechtsform für dein Vorhaben.
`;
const forms = [
{ id: 'einzelunternehmen', name: 'Einzelunternehmen', desc: 'Einfach, keine Kapitalanforderung' },
{ id: 'freiberufler', name: 'Freiberufler', desc: 'Für beratende Tätigkeiten' },
{ id: 'gbr', name: 'GbR', desc: 'Personengesellschaft für mehrere' },
{ id: 'ug', name: 'UG (haftungsbeschränkt)', desc: 'Mini-GmbH, ab 1€ Kapital' },
{ id: 'gmbh', name: 'GmbH', desc: 'Maximaler Schutz mit Kapitalanforderung' },
{ id: 'ag', name: 'AG', desc: 'Für größere Unternehmen' }
];
html += `
`;
if (S.company.rechtsform) {
const kostenData = {
einzelunternehmen: { notar: 0, register: 0, stammkapital: 0, gewerbe: 30, steuerberater: 80, ihk: 0, label: 'Einzelunternehmen' },
freiberufler: { notar: 0, register: 0, stammkapital: 0, gewerbe: 0, steuerberater: 100, ihk: 0, label: 'Freiberufler' },
gbr: { notar: 0, register: 0, stammkapital: 0, gewerbe: 60, steuerberater: 150, ihk: 150, label: 'GbR' },
ug: { notar: 300, register: 150, stammkapital: 1, gewerbe: 30, steuerberater: 200, ihk: 150, label: 'UG (haftungsbeschr\u00e4nkt)' },
gmbh: { notar: 800, register: 150, stammkapital: 25000, gewerbe: 30, steuerberater: 300, ihk: 250, label: 'GmbH' },
ag: { notar: 2000, register: 300, stammkapital: 50000, gewerbe: 30, steuerberater: 500, ihk: 500, label: 'AG' }
};
const k = kostenData[S.company.rechtsform] || kostenData.ug;
const einmalig = k.notar + k.register + k.gewerbe;
const monatlich = k.steuerberater + Math.round(k.ihk / 12);
const checklist = {
einzelunternehmen: ['Gewerbeanmeldung beim Gewerbeamt', 'Fragebogen zur steuerl. Erfassung (Finanzamt)', 'Gesch\u00e4ftskonto er\u00f6ffnen', 'DSGVO Datenschutzerkl\u00e4rung', 'Impressum erstellen'],
freiberufler: ['Fragebogen zur steuerl. Erfassung (Finanzamt)', 'Gesch\u00e4ftskonto er\u00f6ffnen', 'Berufshaftpflicht pr\u00fcfen', 'DSGVO Datenschutzerkl\u00e4rung', 'Impressum erstellen'],
gbr: ['GbR-Vertrag aufsetzen', 'Gewerbeanmeldung (alle Gesellschafter)', 'Finanzamt anmelden', 'Gesch\u00e4ftskonto er\u00f6ffnen', 'IHK Anmeldung', 'DSGVO Setup'],
ug: ['Gesellschaftsvertrag/Satzung', 'Notartermin (Beurkundung)', 'Handelsregister-Eintragung', 'Gewerbe anmelden', 'Finanzamt (steuerl. Erfassung)', 'Gesch\u00e4ftskonto + Stammkapital einzahlen', 'IHK Anmeldung', 'DSGVO Setup', 'Transparenzregister'],
gmbh: ['Gesellschaftsvertrag/Satzung', 'Notartermin (Beurkundung)', 'Stammkapital einzahlen (25.000\u20AC)', 'Handelsregister-Eintragung', 'Gewerbe anmelden', 'Finanzamt (steuerl. Erfassung)', 'Gesch\u00e4ftskonto', 'IHK Anmeldung', 'DSGVO Setup', 'Transparenzregister', 'Gesch\u00e4ftsf\u00fchrervertrag'],
ag: ['Satzung erstellen', 'Gr\u00fcndungspr\u00fcfung', 'Notartermin', 'Stammkapital einzahlen (50.000\u20AC)', 'Handelsregister', 'Aufsichtsrat bestellen', 'Gewerbe + Finanzamt', 'IHK', 'DSGVO + Compliance']
};
const items = checklist[S.company.rechtsform] || checklist.ug;
const done = items.filter(i => S.company.gruendung.steps[i]).length;
html += `
\uD83D\uDCCB Gr\u00fcndungs-Checkliste — ${k.label}
${done}/${items.length}
`;
items.forEach(item => {
const checked = S.company.gruendung.steps[item];
html += `
`;
});
html += `
\uD83D\uDCB0 Kostenrechner — ${k.label}
Einmalige Kosten
${k.notar ? `
Notar ${k.notar}\u20AC
` : ''}
${k.register ? `
Handelsregister ${k.register}\u20AC
` : ''}
${k.gewerbe ? `
Gewerbeanmeldung ${k.gewerbe}\u20AC
` : ''}
${k.stammkapital ? `
Stammkapital ${k.stammkapital.toLocaleString('de')}\u20AC
` : ''}
Summe (ohne Kapital) ${einmalig}\u20AC
Laufende Kosten / Monat
Steuerberater ${k.steuerberater}\u20AC
${k.ihk ? `
IHK (${k.ihk}\u20AC/Jahr) ${Math.round(k.ihk/12)}\u20AC
` : ''}
Tools & Software (gesch.) ~100\u20AC
Summe / Monat ~${monatlich + 100}\u20AC
`;
}
return html;
}
// ============================================================================
// GAP 3: PIPELINE/CRM RENDER
// ============================================================================
function renderPipeline() {
let html = `
🎯 Sales Pipeline
+ Lead hinzufügen
Totaler Pipeline-Wert: ${S.pipeline.leads.reduce((s, l) => s + (l.wert || 0), 0)}€
`;
html += ``;
S.pipeline.stages.forEach(stage => {
const leads = S.pipeline.leads.filter(l => l.stage === stage);
const stageValue = leads.reduce((s, l) => s + (l.wert || 0), 0);
html += `
`;
leads.forEach((lead, idx) => {
html += `
${lead.name}
${lead.firma}
${lead.wert}€
${S.pipeline.stages.map(s => `${s} `).join('')}
×
`;
});
html += `
`;
});
html += `
`;
return html;
}
// ============================================================================
// GAP 4: CALENDAR & AUTOMATION RENDER
// ============================================================================
function renderKalender() {
let html = `
📅 Content Kalender
+ Post planen
`;
html += ``;
for (let i = 1; i <= 28; i++) {
const posts = S.kalender.posts.filter(p => p.date && p.date.endsWith(String(i).padStart(2, '0')));
html += `
${i}
${posts.length} Posts
`;
}
html += `
`;
html += `
🤖 Automation Rezepte
Pre-built Automations um dein Content zu skalieren.
`;
const recipes = [
{ name: 'Wöchentlicher LinkedIn Post', desc: 'Jeden Montag um 9 Uhr', freq: 'Wöchentlich' },
{ name: 'Monthly Newsletter', desc: 'Newsletter generieren und versenden', freq: 'Monatlich' },
{ name: 'Blog-to-Social Repurposing', desc: 'Blog-Artikel automatisch in Posts umwandeln', freq: 'Ad-hoc' },
{ name: 'Customer Testimonial Request', desc: 'Kundenumfrage versenden', freq: 'Monatlich' },
{ name: 'Competitor Watch', desc: 'Konkurrenz-Updates sammeln', freq: 'Täglich' }
];
recipes.forEach(recipe => {
const active = S.automations.includes(recipe.name);
html += `
${recipe.name}
${recipe.desc}
${recipe.freq}
${active ? '✓ Aktiviert ' : ''}
${active ? 'Aktiv' : 'Aktivieren'}
`;
});
html += `
`;
return html;
}
// ============================================================================
// GAP 5: FINANZEN (Enhanced KPIs)
// ============================================================================
function renderFinanzen() {
if (!S.kpis.cashflow) S.kpis.cashflow = Array(12).fill(null).map(() => ({rev:0,cost:0}));
const costs = S.kpis.costs?.current || 0;
const rev = S.kpis.revenue?.current || 0;
const customers = S.kpis.customers?.current || 0;
const cac = S.kpis.cac || 0;
const ltv = S.kpis.ltv || 0;
const mrr = S.kpis.mrr || 0;
const churn = S.kpis.churn || 0;
const netBurn = costs - rev;
const runway = netBurn > 0 ? Math.round((S.kpis.kapital || 0) / netBurn) : (S.kpis.kapital > 0 ? 99 : 0);
const ltvCac = cac > 0 ? (ltv / cac).toFixed(1) : '—';
const runwayColor = runway > 12 ? 'var(--green)' : runway > 6 ? 'var(--yellow)' : 'var(--red)';
const inputStyle = 'width:100%;padding:8px;margin-top:6px;border-radius:6px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);color:var(--t1);font-family:var(--mono);font-size:13px';
let cfHtml = '';
let cumulative = S.kpis.kapital || 0;
for (let i = 0; i < 12; i++) {
const m = new Date(2026, i).toLocaleDateString('de', {month:'short'});
const cf = S.kpis.cashflow[i] || {rev:0,cost:0};
const net = cf.rev - cf.cost;
cumulative += net;
const nc = net >= 0 ? 'var(--green)' : 'var(--red)';
const cc = cumulative >= 0 ? 'var(--green)' : 'var(--red)';
cfHtml += `
${m}
${net >= 0 ? '+' : ''}${net}\u20AC
${cumulative}\u20AC
`;
}
return `
\uD83D\uDCB3 Finanzielle Gesundheit
${runway > 50 ? '\u221E' : runway + ' Mo.'}
Runway
\u20AC${Math.abs(netBurn)}
${netBurn > 0 ? 'Net Burn' : 'Profit'} /Mo.
\uD83D\uDCCA 12-Monats Cashflow-Plan
Monat Einnahmen Ausgaben Netto Kumuliert ${cfHtml}
`;
}
// ============================================================================
// GAP 6: ENHANCE AGENTS WITH WORKFLOWS
// ============================================================================
function renderAgentsEnhanced() {
let html = `
🤖 Department Agents
Deine AI-gesteuerten Abteilungen - Chat oder Workflow.
`;
const agents = ['cfo', 'cmo', 'sales', 'legal', 'cto', 'hr', 'coo', 'strategy'];
agents.forEach(agentKey => {
const agent = S.agents[agentKey];
const workflows = {
cfo: ['Budget erstellen', 'Cashflow planen', 'Preiskalkulation', 'Steuerschätzung'],
cmo: ['Content Calendar erstellen', 'Social Media Plan', 'SEO Audit', 'Brand Voice'],
sales: ['Sales Pipeline aufbauen', 'Pitch Script schreiben', 'Cold Email Vorlage', 'Pricing Page'],
legal: ['DSGVO Audit', 'AGB Generator', 'Freelancer-Vertrag', 'Datenschutzerklärung'],
cto: ['Tech Stack definieren', 'MVP Architektur', 'Launch Checklist', 'Security Audit'],
hr: ['Stellenanzeige schreiben', 'Freelancer finden', 'Onboarding Prozess', 'Teamstruktur'],
coo: ['SOP erstellen', 'Prozessoptimierung', 'Tool Stack', 'Automations-Audit'],
strategy: ['Quartalsplanung', 'Pivot Analyse', 'Wettbewerbsanalyse', 'Exit Strategie']
};
html += `
`;
(workflows[agentKey] || []).forEach(workflow => {
html += `
${workflow}
Schritt-für-Schritt Guided Process
`;
});
html += `
Mit ${agent.name} chatten
`;
});
return html;
}
async function runWorkflow(agentKey, workflowName) {
toast(`Starte Workflow: ${workflowName}...`, 'info');
const ctx = `\nKONTEXT:\n- Business: ${S.user.idea || 'nicht definiert'}\n- Branche: ${S.user.industry || '?'}\n- Phase: ${S.user.stage || '?'}\n- MRR: ${S.kpis.mrr || 0}\u20AC\n- Kunden: ${S.kpis.customers?.current || 0}\n- Ausgaben: ${S.kpis.costs?.current || 0}\u20AC/Mo.\n- Rechtsform: ${S.company.rechtsform || 'nicht gew\u00e4hlt'}`;
const W = {
cfo: {
'Budget erstellen': `Erstelle ein detailliertes Monatsbudget f\u00fcr ein One-Person-Business.${ctx}\nGib konkrete Posten, Betr\u00e4ge und Priorisierung (essentiell/optional).`,
'Cashflow planen': `Plane den 12-Monats-Cashflow.${ctx}\nGib Tabelle mit Monat, Einnahmen, Ausgaben, Netto, Kumuliert. Realistische Annahmen.`,
'Preiskalkulation': `Kalkuliere den optimalen Preis.${ctx}\nMethoden: Cost-Plus, Value-Based, Competitor-Based. Empfehlung mit Begr\u00fcndung.`,
'Steuersch\u00e4tzung': `Sch\u00e4tze Steuerlast f\u00fcr deutsches ${S.company.rechtsform || 'Einzelunternehmen'}.${ctx}\nEinkommensteuer, Gewerbesteuer, USt., Sozialabgaben. Konkrete Zahlen.`
},
cmo: {
'Content Calendar erstellen': `Erstelle einen 4-Wochen Content-Kalender.${ctx}\nKan\u00e4le: LinkedIn, Instagram, Newsletter. Pro Tag: Thema, Format, Uhrzeit. Fokus: Thought Leadership + Lead Generation.`,
'Social Media Plan': `Erstelle einen Social Media Strategie-Plan.${ctx}\nPlattform-Auswahl, Posting-Frequenz, Content-S\u00e4ulen, Engagement-Taktiken, Tools.`,
'SEO Audit': `F\u00fchre ein SEO-Audit durch.${ctx}\nKeyword-Strategie, Content-Gaps, technische Basics, Backlink-Strategie f\u00fcr ein Solo-Business.`,
'Brand Voice': `Definiere die Brand Voice.${ctx}\nTon, Werte, Do's/Don'ts, Beispiel-Texte f\u00fcr Website/Social/Email.`
},
sales: {
'Sales Pipeline aufbauen': `Baue eine Sales Pipeline f\u00fcr ein One-Person-Business auf.${ctx}\nStages, Qualifikationskriterien, Follow-up Cadence, Tools.`,
'Pitch Script schreiben': `Schreibe ein Pitch Script.${ctx}\n30s Elevator Pitch, 2min Demo-Pitch, Email-Pitch. Problem-Solution-Benefit Struktur.`,
'Cold Email Vorlage': `Erstelle 3 Cold Email Vorlagen.${ctx}\nInitial Outreach, Follow-up 1, Follow-up 2. Personalisierung-Hooks, CTAs.`,
'Pricing Page': `Gestalte eine Pricing Page Struktur.${ctx}\nTier-Struktur (Free/Pro/Enterprise), Feature-Matrix, FAQ, Social Proof Elemente.`
},
legal: {
'DSGVO Audit': `F\u00fchre einen DSGVO-Audit durch.${ctx}\nCheckliste: Datenschutzerkl\u00e4rung, Cookie-Banner, Auftragsverarbeitung, Verarbeitungsverzeichnis, Rechtsgrundlagen.`,
'AGB Generator': `Erstelle AGB-Vorlage.${ctx}\nLeistungsbeschreibung, Zahlungsbedingungen, Haftung, Widerruf, Gerichtsstand. F\u00fcr deutsches Recht.`,
'Freelancer-Vertrag': `Erstelle eine Freelancer-Vertragsvorlage.${ctx}\nLeistungsumfang, Verg\u00fctung, IP-Rechte, Geheimhaltung, K\u00fcndigung.`,
'Datenschutzerkl\u00e4rung': `Erstelle eine DSGVO-konforme Datenschutzerkl\u00e4rung.${ctx}\nVerantwortlicher, erhobene Daten, Rechtsgrundlagen, Betroffenenrechte, Tools/Dienste.`
},
cto: {
'Tech Stack definieren': `Definiere den optimalen Tech Stack f\u00fcr ein Solo-SaaS.${ctx}\nFrontend, Backend, DB, Hosting, CI/CD, Monitoring. Budget-bewusst, wartungsarm.`,
'MVP Architektur': `Plane die MVP-Architektur.${ctx}\nKomponenten, API-Design, Datenmodell, Auth, Deployment. Minimal aber skalierbar.`,
'Launch Checklist': `Erstelle eine technische Launch-Checklist.${ctx}\nSSL, DNS, Monitoring, Backup, Error Tracking, Analytics, Performance, Security Headers.`,
'Security Audit': `F\u00fchre einen Security-Audit durch.${ctx}\nOWASP Top 10, Auth-Sicherheit, API-Schutz, Secrets Management, DSGVO-technisch.`
},
hr: {
'Stellenanzeige schreiben': `Schreibe eine Stellenanzeige.${ctx}\nFokus: Remote-Freelancer f\u00fcr ein Solo-Business. Aufgaben, Anforderungen, Benefits, Kultur.`,
'Freelancer finden': `Erstelle eine Freelancer-Hiring-Strategie.${ctx}\nPlattformen (Upwork, Fiverr, Malt), Briefing-Template, Auswahlkriterien, Onboarding-Prozess.`,
'Onboarding Prozess': `Erstelle einen Freelancer-Onboarding-Prozess.${ctx}\nTag 1-7 Plan, Tools-Zugang, Kommunikationsregeln, Erwartungen, Feedback-Loop.`,
'Teamstruktur': `Plane die ideale Teamstruktur.${ctx}\nWelche Rollen zuerst? Freelancer vs. Festanstellung? Budget-Allokation. Wachstumsphasen.`
},
coo: {
'SOP erstellen': `Erstelle Standard Operating Procedures.${ctx}\nKernprozesse identifizieren, Schritt-f\u00fcr-Schritt Anleitungen, Tools, Automatisierungsm\u00f6glichkeiten.`,
'Prozessoptimierung': `Analysiere und optimiere Gesch\u00e4ftsprozesse.${ctx}\nEngp\u00e4sse finden, Automatisierungspotenzial, Tool-Empfehlungen (Automation-Tools).`,
'Tool Stack': `Empfehle den optimalen Tool Stack.${ctx}\nKategorien: Projektmanagement, Kommunikation, CRM, Buchhaltung, Marketing, Entwicklung. Kosten/Monat.`,
'Automations-Audit': `F\u00fchre einen Automations-Audit durch.${ctx}\nAlle wiederkehrenden Tasks identifizieren, Automatisierbarkeit bewerten, konkrete Automations vorschlagen.`
},
strategy: {
'Quartalsplanung': `Erstelle eine Quartalsplanung.${ctx}\n3 Hauptziele (OKRs), Key Actions pro Monat, Meilensteine, Risiken, Erfolgskriterien.`,
'Pivot Analyse': `Analysiere ob ein Pivot sinnvoll ist.${ctx}\nAktuelle Situation bewerten, Pivot-Optionen identifizieren, Risiko/Chance Matrix, Empfehlung.`,
'Wettbewerbsanalyse': `Erstelle eine Wettbewerbsanalyse.${ctx}\nTop 5 Wettbewerber, St\u00e4rken/Schw\u00e4chen, Preise, Positionierung, Differenzierungsstrategie.`,
'Exit Strategie': `Plane Exit-Optionen.${ctx}\nAcquisition, Merger, Lifestyle Business, Franchise. Bewertungsmethoden, Timeline, Vorbereitung.`
}
};
const agentNames = { cfo:'CFO & Finanzexperte', cmo:'CMO & Marketing-Stratege', sales:'Sales Director', legal:'Rechtsberater (deutsches Recht)', cto:'CTO & Tech-Architekt', hr:'HR & People Manager', coo:'COO & Operations-Experte', strategy:'Strategy & Growth Advisor' };
const prompt = W[agentKey]?.[workflowName] || `F\u00fchre diesen Workflow professionell durch: ${workflowName}${ctx}`;
const system = `Du bist der ${agentNames[agentKey] || S.agents[agentKey].name} eines deutschen One-Person-Business (Solopreneur). Gib konkrete, umsetzbare Ergebnisse. Deutsch. Nutze Tabellen und Listen wo sinnvoll.`;
const result = await ai([{role:'user',content:prompt}], system);
if (result) {
S.agents[agentKey].outputs = S.agents[agentKey].outputs || [];
S.agents[agentKey].outputs.push({workflow:workflowName, output:result, date:new Date().toISOString()});
addXP(15);
saveState();
toast('Workflow abgeschlossen! +15 XP', 'success');
render();
}
}
// ============================================================================
// UPDATE HEADER TITLES
// ============================================================================
function updateHeaderTitles() {
const titles = {
dashboard: 'Dashboard',
brain: 'Neural Network',
maschinenraum: 'XBRAIN',
idealab: 'IdeaLab',
company: 'Gründung',
funnel: 'Aufbau-Funnel',
mentor: 'Sparring Partner',
agents: 'Department Agents',
pipeline: 'Sales Pipeline',
kalender: 'Content Kalender',
board: 'Board Meeting',
tools: 'Tools',
docs: 'Dokumente',
finanzen: 'Finanzielle Gesundheit',
kpis: 'KPI Dashboard',
brand: 'Brand Builder',
settings: 'Einstellungen'
};
return titles;
}
// ============================================================================
// MAIN RENDER
// ============================================================================
function render() {
let content = '';
if (!S.onboarded) {
content = renderOnboarding();
} else {
switch (S.view) {
case 'dashboard': content = renderDashboard(); break;
case 'brain': content = renderBrain(); break;
case 'maschinenraum': content = renderMaschinenraum(); break;
case 'idealab': content = renderIdeaLab(); break;
case 'company': content = renderCompany(); break;
case 'funnel': content = renderFunnel(); break;
case 'mentor': content = renderMentor(); break;
case 'agents': content = renderAgentsEnhanced(); break;
case 'pipeline': content = renderPipeline(); break;
case 'kalender': content = renderKalender(); break;
case 'board': content = renderBoard(); break;
case 'tools': content = renderTools(); break;
case 'docs': content = renderDocs(); break;
case 'finanzen': content = renderFinanzen(); break;
case 'kpis': content = renderKPIs(); break;
case 'brand': content = renderBrand(); break;
case 'settings': content = renderSettings(); break;
default: content = renderDashboard();
}
}
document.getElementById('content').innerHTML = content;
updateHeader();
// Re-attach event listeners for expanded sections
document.querySelectorAll('.step-header').forEach(el => {
el.addEventListener('click', function() {
this.parentElement.querySelector('.tasks-grid').style.display =
this.parentElement.querySelector('.tasks-grid').style.display === 'none' ? 'grid' : 'none';
});
el.parentElement.querySelector('.tasks-grid').style.display = 'none';
});
}
// ============================================================================
// INITIALIZATION
// ============================================================================
loadState();
if (!S.memory.firstSeen) {
S.memory.firstSeen = new Date().toISOString();
}
S.memory.lastSeen = new Date().toISOString();
S.memory.sessions++;
saveState();
render();
// PWA Registration
// State Sync — save to Supabase on changes (debounced)
const _origSaveState = saveState;
saveState = function(){_origSaveState();if(typeof stateSync!=='undefined')stateSync.save('xone',S)};
// Load from Supabase on init
if(typeof stateSync!=='undefined'){stateSync.load('xone').then(d=>{if(d&&d.user?.name){Object.keys(d).forEach(k=>{if(!S[k]||JSON.stringify(S[k])===JSON.stringify({}))S[k]=d[k]});saveState();console.log('XONE: State synced from Supabase')}}).catch(()=>{})}