// 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
{[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
{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;