/* Geishia — Sections: Soluciones, Servicios, Diagnostico, Diferenciadores, Confiaron */ const { useEffect: useEffectS, useRef: useRefS, useState: useStateS } = React; /* Spotlight cursor effect helper */ function useSpotlight() { const ref = useRefS(null); useEffectS(() => { const el = ref.current; if (!el) return; const move = (e) => { const rect = el.getBoundingClientRect(); el.style.setProperty('--mx', `${e.clientX - rect.left}px`); el.style.setProperty('--my', `${e.clientY - rect.top}px`); }; el.addEventListener('mousemove', move, { passive: true }); return () => el.removeEventListener('mousemove', move); }, []); return ref; } /* ---------- Soluciones (refined: 2x2, more breathing, featured visible) ---------- */ const Soluciones = () => { const cards = [ { icon: window.Icons.FileText, title: 'Facturación y cobranzas', desc: 'Extracción automática de facturas, validación AFIP, recordatorios de cobro inteligentes y conciliación bancaria con Claude.', integrations: ['AFIP', 'MercadoPago', 'WhatsApp', 'Gmail', 'Sheets', 'Tango'], href: './soluciones/facturacion.html', featured: false, }, { icon: window.Icons.ShoppingCart, title: 'Operaciones de ecommerce', desc: 'Sincronización en tiempo real entre tu marketplace, tu tienda y tu catálogo. Alertas de reposición priorizadas y respuestas automáticas.', integrations: ['MercadoLibre', 'Tiendanube', 'WooCommerce', 'Shopify', 'n8n', 'Claude'], href: './soluciones/pedidos.html', featured: true, }, { icon: window.Icons.MessagesSquare, title: 'Atención al cliente', desc: 'Clasificación inteligente de consultas. Las repetitivas las responde Claude en segundos, las complejas llegan a tu equipo con contexto.', integrations: ['WhatsApp', 'Gmail', 'Instagram', 'Notion', 'Slack', 'Claude'], href: './soluciones/clientes.html', featured: false, }, { icon: window.Icons.BarChart, title: 'Reportes y dashboards', desc: 'Datos consolidados de todos tus sistemas, analizados por Claude. Reportes ejecutivos automáticos los lunes 8 AM en tu inbox.', integrations: ['Sheets', 'BigQuery', 'Looker', 'Metabase', 'Slack', 'Claude'], href: './soluciones/reportes.html', featured: false, }, ]; return (
Soluciones

Nuestras soluciones

Cuatro categorías core de automatización para Empresas. Si tu caso es distinto, también lo resolvemos.

{cards.map((c, i) => ( ))}
); }; const SolCard = ({ icon: Icon, title, desc, integrations, href, featured }) => { const ref = useSpotlight(); return (

{title}

{desc}

Integraciones
{integrations.map(name => {name})}
Conocer más
); }; /* ---------- Servicios (4 cards: Web · IA · Soluciones · Estrategia) ---------- */ const Servicios = () => (
QUÉ HACEMOS

Nuestros servicios

Cuatro frentes complementarios para que tu Empresa tenga la presencia digital, la inteligencia y los sistemas operativos que necesita.

); const ServCard = ({ icon: Icon, title, subtitle, desc, href, decor, cta = 'Conocer más' }) => { const ref = useSpotlight(); const DecorEl = decor === 'web' ? WebDecor : decor === 'ai' ? AiDecor : decor === 'sol' ? SolDecor : decor === 'strat' ? StratDecor : WebDecor; return (

{title}

{subtitle}

{desc}

{cta}
); }; const WebDecor = () => ( ); const AiDecor = () => ( ); const SolDecor = () => ( {/* stacked layered blocks suggesting modular solutions */} ); const StratDecor = () => ( {/* concentric target rings */} {/* cross-hair */} {/* center dot */} {/* small channel pins around */} ); /* ---------- Diagnóstico interactivo ---------- */ const Diagnostico = () => { const [step, setStep] = useStateS(0); const [answers, setAnswers] = useStateS({ proceso: null, equipo: null, horas: null }); const [showResult, setShowResult] = useStateS(false); const [analyzing, setAnalyzing] = useStateS(false); const [hasSeenAnalyzing, setHasSeenAnalyzing] = useStateS(false); const [animatedHours, setAnimatedHours] = useStateS({ low: 0, high: 0 }); const [animatedArs, setAnimatedArs] = useStateS(0); const procesos = [ { key: 'facturacion', label: 'Facturación', factor: 0.70 }, { key: 'pedidos', label: 'Carga de pedidos', factor: 0.65 }, { key: 'clientes', label: 'Respuesta a clientes', factor: 0.55 }, { key: 'reportes', label: 'Reportes', factor: 0.80 }, ]; const equipos = [ { key: '1', label: '1', mult: 1.0 }, { key: '2-3', label: '2 a 3', mult: 1.15 }, { key: '4-6', label: '4 a 6', mult: 1.3 }, { key: '6+', label: 'Más de 6', mult: 1.45 }, ]; const horasOptions = [ { key: '<5', label: 'Menos de 5', value: 3 }, { key: '5-15', label: '5 a 15', value: 10 }, { key: '15-30', label: '15 a 30', value: 22 }, { key: '30+', label: 'Más de 30', value: 40 }, ]; const workflowsByProceso = { facturacion: [ { name: 'Extractor de facturas con validación AFIP', href: './soluciones/facturacion.html#extractor-facturas' }, { name: 'Recordatorios de cobranza con tono adaptado', href: './soluciones/facturacion.html#recordatorios-cobranza' }, { name: 'Conciliación bancaria con Claude', href: './soluciones/facturacion.html#conciliacion-bancaria' }, ], pedidos: [ { name: 'Sincronización stock multicanal', href: './soluciones/pedidos.html#sincronizacion-stock' }, { name: 'Alertas inteligentes de reposición', href: './soluciones/pedidos.html#alertas-reposicion' }, { name: 'Respondedor en MercadoLibre', href: './soluciones/pedidos.html#preguntas-publicaciones' }, ], clientes: [ { name: 'Clasificador de consultas', href: './soluciones/clientes.html#clasificador-consultas' }, { name: 'Base de conocimiento conversacional', href: './soluciones/clientes.html#base-conocimiento' }, { name: 'Seguimiento de tickets y SLAs', href: './soluciones/clientes.html#seguimiento-tickets' }, ], reportes: [ { name: 'Reporte ejecutivo semanal automático', href: './soluciones/reportes.html#dashboard-ejecutivo' }, { name: 'Alertas de desvíos en tiempo real', href: './soluciones/reportes.html#alertas-desvios' }, { name: 'Consolidación multi-fuente', href: './soluciones/reportes.html#consolidacion-multifuente' }, ], }; function calculate(a = answers) { const proc = procesos.find(p => p.key === a.proceso); const eq = equipos.find(e => e.key === a.equipo); const hr = horasOptions.find(h => h.key === a.horas); if (!proc || !eq || !hr) return null; const base = hr.value * proc.factor * eq.mult * 4.33; const low = Math.round(base * 0.85); const high = Math.round(base * 1.15); const mid = Math.round(base); const ars = mid * 12000; return { low, high, mid, ars, procesoLabel: proc.label.toLowerCase(), workflows: workflowsByProceso[a.proceso] || [] }; } function handleAnswer(field, value) { const next = { ...answers, [field]: value }; setAnswers(next); if (step < 2) { setTimeout(() => setStep(step + 1), 280); } else { if (!hasSeenAnalyzing) { setAnalyzing(true); setTimeout(() => { setAnalyzing(false); setShowResult(true); setHasSeenAnalyzing(true); }, 1200); } else { setShowResult(true); } } } function reset() { setAnswers({ proceso: null, equipo: null, horas: null }); setStep(0); setShowResult(false); setAnimatedHours({ low: 0, high: 0 }); setAnimatedArs(0); } useEffectS(() => { if (!showResult) return; const result = calculate(); if (!result) return; const start = performance.now(); const duration = 800; let raf; function tick(now) { const t = Math.min((now - start) / duration, 1); const eased = 1 - Math.pow(1 - t, 4); setAnimatedHours({ low: Math.floor(result.low * eased), high: Math.floor(result.high * eased), }); setAnimatedArs(Math.floor(result.ars * eased)); if (t < 1) raf = requestAnimationFrame(tick); else { setAnimatedHours({ low: result.low, high: result.high }); setAnimatedArs(result.ars); } } raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, [showResult, answers]); const result = showResult ? calculate() : null; return (
Diagnóstico

Tres preguntas. Una estimación honesta.

Respondé en 60 segundos y te decimos qué automatizar primero, con estimación de ahorro concreto.

{!analyzing && !showResult && ( <>
{[0,1,2].map(i => ( ))}
Paso {step+1} de 3
{step === 0 && (

¿Cuál proceso repetitivo te consume más horas por semana?

{procesos.map(p => ( ))}
)} {step === 1 && (

¿Cuántas personas de tu equipo lo ejecutan?

{equipos.map(e => ( ))}
)} {step === 2 && (

¿Cuántas horas semanales se van en eso?

{horasOptions.map(h => ( ))}
)} )} {analyzing && (
Analizando tu caso
Calculando impacto en tu proceso
Cruzando con casos comparables
Ajustando por tamaño del equipo
)} {showResult && result && (
TU RESULTADO

Con tu proceso de {result.procesoLabel} automatizado, tu equipo recupera

entre {animatedHours.low} y {animatedHours.high} horas mensuales

Equivale a aproximadamente ARS {animatedArs.toLocaleString('es-AR')} mensuales en horas de equipo recuperadas.

3 automatizaciones recomendadas para tu caso
{result.workflows.map((wf, i) => ( {wf.name} ))}

Estimación basada en implementaciones comparables. El resultado real depende de tus sistemas actuales y la complejidad específica de tu proceso.

)}
); }; /* ---------- Diferenciadores 2x2 ---------- */ const Diferenciadores = () => { const items = [ { title: 'Arquitectura visible', desc: 'Te mostramos cómo funciona cada workflow. Diagramas, código, decisiones técnicas. Nada de cajas negras.' }, { title: 'Contexto argentino', desc: 'AFIP, MercadoPago, Tiendanube, WhatsApp Business. Conocemos el terreno y las particularidades fiscales.' }, { title: 'Criterio técnico', desc: 'Modelos adecuados para cada tarea. Claude Haiku para extracción masiva, Sonnet para razonamiento. No usamos GPT-4 para contar palabras.' }, { title: 'Foco en back-office', desc: 'No hacemos chatbots de ventas. Hacemos que tu operación funcione sola. Cobranzas, facturación, reportes, atención.' }, ]; return (
Lo que nos diferencia

No somos una agencia de chatbots.

Cuatro decisiones que tomamos por defecto y que cambian todo el resultado.

{items.map((it, i) => (
0{i+1}

{it.title}

{it.desc}

))}
); }; /* ---------- Confiaron (refined: real-client cards + industry chips) ---------- */ const Confiaron = () => { const realClients = [ { mark: 'Kusaga Argentina', industry: 'Servicios B2B', project: 'Integración Microsoft Teams + workflows internos' }, { mark: 'PL Deco', industry: 'Retail / Ecommerce', project: 'Media Buyer Agent + automatización Meta Ads' }, ]; const industries = [ { name: 'Estudio Contable', icon: window.Icons.Calculator }, { name: 'Distribuidora B2B', icon: window.Icons.Truck }, { name: 'Retail Online', icon: window.Icons.ShoppingBag }, { name: 'Consultora', icon: window.Icons.Briefcase }, { name: 'Servicios Profesionales', icon: window.Icons.UserCheck }, { name: 'Industria', icon: window.Icons.Factory }, ]; return (
Confiaron en nosotros

Clientes y proyectos

Marcas e industrias con las que hemos trabajado en proyectos de automatización.

{realClients.map((c, i) => (
CLIENTE

{c.mark}

{c.industry}

{c.project}

))}
También trabajamos con
{industries.map((ind, i) => { const Icon = ind.icon; return (
{ind.name}
); })}

Las industrias representadas son perfiles de proyectos abordados. Por confidencialidad, no todos los nombres específicos pueden listarse públicamente.

); }; window.Soluciones = Soluciones; window.Servicios = Servicios; window.Diagnostico = Diagnostico; window.Diferenciadores = Diferenciadores; window.Confiaron = Confiaron;