// VoiceMockup: animated phone-call visual for the Voice AI hero const VoiceMockup = () => { const [tick, setTick] = React.useState(0); React.useEffect(() => { const id = setInterval(() => setTick(t => t+1), 1200); return () => clearInterval(id); }, []); const lines = [ { who: 'caller', text: 'Guten Tag, ich brauche einen Termin nächste Woche.' }, { who: 'ai', text: 'Gerne! Welcher Tag passt Ihnen am besten?' }, { who: 'caller', text: 'Mittwoch wäre gut, am Vormittag.' }, { who: 'ai', text: 'Mittwoch um 10:00 Uhr ist frei. Soll ich das eintragen?' }, ]; const visible = Math.min(lines.length, tick % (lines.length + 2) + 1); return (
Goma Voice AI · Live-Demo
Live · {String(Math.floor(tick/2)).padStart(2,'0')}:{String((tick*7)%60).padStart(2,'0')}
{[0,1,2,3,4].map(i => (
))}
{lines.slice(0, visible).map((l, i) => (
{l.text}
))}
); }; // WorkflowMockup: animated nodes/edges visual for Prozess-Automatisierung const WorkflowMockup = () => { const [step, setStep] = React.useState(0); React.useEffect(() => { const id = setInterval(() => setStep(s => (s+1) % 4), 1200); return () => clearInterval(id); }, []); const nodes = [ { x: 40, y: 60, label:'E-Mail', icon:'mail' }, { x: 200, y: 30, label:'KI-Agent', icon:'sparkle' }, { x: 200, y: 150, label:'PDF (OCR)', icon:'file' }, { x: 360, y: 90, label:'SevDesk', icon:'check' }, ]; const edges = [[0,1],[0,2],[1,3],[2,3]]; return (
n8n Workflow · Rechnungs-Eingang
{edges.map(([a,b], i) => { const active = (step >= 1 && i < step + 1); return ( ); })} {nodes.map((n,i)=>{ const active = i <= step; return ( {n.label} ); })}
{[0,1,2,3].map(i => (
))}
); }; // ChatbotMockup: web-chat widget for Smarte Web-Chatbots const ChatbotMockup = () => { const [tick, setTick] = React.useState(0); React.useEffect(() => { const id = setInterval(() => setTick(t => t+1), 1400); return () => clearInterval(id); }, []); const lines = [ { who:'bot', text:'Hallo! Wonach suchen Sie heute?' }, { who:'user', text:'Was kostet eine neue Wärmepumpe?' }, { who:'bot', text:'Gerne! Wie groß ist das Haus ungefähr?' }, { who:'bot', text:'📅 Termin frei: Di 14:00 — buchen?' }, ]; const visible = Math.min(lines.length, tick % (lines.length + 2) + 1); return (
ihre-website.at
Goma-Verkäufer
● online
{lines.slice(0, visible).map((l,i)=>(
{l.text}
))}
); }; // ContentMockup: voice → multi-channel fan-out const ContentMockup = () => { const [step, setStep] = React.useState(0); React.useEffect(() => { const id = setInterval(() => setStep(s => (s+1) % 5), 900); return () => clearInterval(id); }, []); const outs = [ { label:'Blogartikel', icon:'fileText' }, { label:'LinkedIn-Post', icon:'share' }, { label:'Newsletter', icon:'mail' }, { label:'Insta-Skript', icon:'play' }, ]; return (
Input
Sprachnotiz
{[0,1,2,3,4,5,6,7].map(i => (
))}
3:24 min
Output
{outs.map((o,i)=>{ const active = step >= i+1 || step === 0; return (
{o.label}
); })}
); }; // RagMockup: search-with-citations interface const RagMockup = () => { const [typed, setTyped] = React.useState(0); const query = 'Wie reiche ich Urlaub ein?'; React.useEffect(() => { const id = setInterval(() => setTyped(t => (t+1) % (query.length + 14)), 80); return () => clearInterval(id); }, []); const showAnswer = typed > query.length + 4; return (
Goma Wissens-KI · intern
{query.slice(0, Math.min(typed, query.length))} |
{showAnswer && (
Urlaubsanträge laufen über das HR-Tool BambooHR. Mindestens 2 Wochen vorher beantragen, der Vorgesetzte erhält automatisch die Genehmigungs-Mail.
)} {showAnswer && (
Quellen
{['Mitarbeiterhandbuch.pdf · S. 12','HR-Onboarding 2025.docx'].map((s,i)=>(
{s}
))}
)}
); }; window.VoiceMockup = VoiceMockup; window.WorkflowMockup = WorkflowMockup; window.ChatbotMockup = ChatbotMockup; window.ContentMockup = ContentMockup; window.RagMockup = RagMockup;