// ─── SECTIONS A: Nav, Hero, Ticker, Problem, Cases ───────────────────── const { useEffect: useEffectA, useState: useStateA, useRef: useRefA } = React; // ─── NAV ─────────────────────────────────────────────────────────────── function Nav() { const [scrolled, setScrolled] = useStateA(false); const [active, setActive] = useStateA(""); const [drawerOpen, setDrawerOpen] = useStateA(false); useEffectA(() => { const ids = ["casos", "metodo", "diferenciador", "resultados", "sobre-mi", "contacto"]; const onScroll = () => { setScrolled(window.scrollY > 32); const y = window.scrollY + window.innerHeight * 0.35; let found = ""; for (const id of ids) { const el = document.getElementById(id); if (!el) continue; const top = el.offsetTop; const bot = top + el.offsetHeight; if (y >= top && y <= bot) { found = id; break; } } setActive(found); }; window.addEventListener("scroll", onScroll, { passive: true }); onScroll(); return () => window.removeEventListener("scroll", onScroll); }, []); useEffectA(() => { document.body.style.overflow = drawerOpen ? "hidden" : ""; return () => { document.body.style.overflow = ""; }; }, [drawerOpen]); const links = [ { id: "casos", label: "Casos" }, { id: "metodo", label: "Método" }, { id: "diferenciador", label: "¿Por qué yo?" }, { id: "resultados", label: "Resultados" }, { id: "sobre-mi", label: "Sobre mí" }, ]; const go = (id) => { setDrawerOpen(false); setTimeout(() => { const el = document.getElementById(id); if (el) { const top = el.getBoundingClientRect().top + window.scrollY - 56; window.scrollTo({ top, behavior: "smooth" }); } }, 80); }; return ( <>
setDrawerOpen(false)} />
); } // ─── HERO ────────────────────────────────────────────────────────────── function Hero() { return (

Más
para tu negocio.

Consigo más clientes para cualquier negocio. Pero clientes de verdad, de los que quieren tu servicio y te contratan.

Sé que cada caso es distinto, pero tu negocio también puede ser el próximo caso de éxito. ¿Quieres comprobarlo?

Quiero hablar con Joel Ver casos reales
Joel Mateo
Fundador
+ años En marketing digital
M€ Inversión gestionada
+ Clientes con resultados
× ROI medio · mes 1
); } // ─── HERO LIVE PANEL ─────────────────────────────────────────────────── // ─── REVIEWS STRIP ───────────────────────────────────────────────────── function Star() { return ( ); } function ReviewsStrip() { return (
{ e.preventDefault(); const el = document.getElementById("testimonios"); if (el) { const top = el.getBoundingClientRect().top + window.scrollY - 64; window.scrollTo({ top, behavior: "smooth" }); } }} > 5,0 / 5,0
); } function HeroLive() { const items = [ { time: "Hace 12 min", what: "+5 leads cualificados", who: "Bufete Tena · Madrid" }, { time: "Hace 28 min", what: "Cita agendada", who: "Clínica Riera · Barcelona" }, { time: "Hace 1 h", what: "Presupuesto enviado", who: "Cocinas Modernas · BCN" }, { time: "Hace 2 h", what: "Hoja de encargo firmada", who: "Delusio Abogados · Valencia" }, { time: "Hace 3 h", what: "Onboarding nuevo cliente", who: "Inmo Roca · Palma" }, { time: "Esta mañana", what: "3 exclusivas captadas", who: "Habitat.cat · Catalunya" }, ]; return ( ); } // ─── ROTATING WORD ───────────────────────────────────────────────────── function RotatingWord() { const words = ["clientes", "casos", "pacientes", "presupuestos", "firmas", "reservas", "ventas", "matrículas"]; const [i, setI] = useStateA(0); useEffectA(() => { const id = setInterval(() => setI((p) => (p + 1) % words.length), 2200); return () => clearInterval(id); }, []); // measure width of widest word for stable layout const measureRef = useRefA(null); const [width, setWidth] = useStateA("auto"); useEffectA(() => { if (!measureRef.current) return; const measure = () => { const spans = measureRef.current.querySelectorAll("span"); let max = 0; spans.forEach((s) => { max = Math.max(max, s.getBoundingClientRect().width); }); setWidth(`${Math.ceil(max)}px`); }; measure(); const ro = new ResizeObserver(measure); ro.observe(measureRef.current); return () => ro.disconnect(); }, []); return ( <> {/* hidden measure layer */} {words.map((w) => ( {w} ))} ); } // ─── TICKER ──────────────────────────────────────────────────────────── function Ticker() { return (
( {item} )} /> ); } // ─── PROBLEM (FAQ) ───────────────────────────────────────────────────── function Problem() { const items = [ { tag: "Primera vez", q: "Nunca he hecho marketing digital. ¿Por dónde empiezo?", a: "Por aquí. Una llamada de quince minutos, sin tecnicismos. Te cuento cómo funciona el sistema con un ejemplo concreto de tu sector, qué presupuesto mínimo tiene sentido y qué esperar el primer mes. Si decides no seguir, igualmente te llevas una hoja de ruta que vale para ir a cualquier otro sitio.", }, { tag: "Ya has probado", q: "Ya he probado antes con otra agencia. ¿Cómo sé que esta vez sí?", a: "Es la pregunta más frecuente que recibo. Te respondo con tres cosas. Uno: yo ejecuto, no hay gestor intermedio que diluya la responsabilidad. Dos: en la primera semana ya tienes datos reales en la mano, no promesas a tres meses. Tres: si en el primer mes no hay tracción, te lo digo yo antes de que tú lo veas — y se ajusta, o paramos.", }, { tag: "Garantías", q: "¿Y si no funciona, qué pasa?", a: "Lo sabes antes de pagar tu segundo mes. Reviso números a diario, no mensualmente. Si en treinta días no veo una curva clara de mejora, paramos o reestructuramos. No vivo de cobrar a quien no debería estar conmigo — y mi cartera está llena precisamente porque ese filtro lo aplico al inicio.", }, { tag: "Sector", q: "¿Para mi sector también funciona?", a: "Si hay un proceso de venta claro y un cliente dispuesto a pagar, hay sistema. El noventa por ciento de los negocios que llegan aquí tienen mecánica similar: atraer a la persona correcta, calificarla y entregarla a tu equipo de cierre. Lo que cambia entre sectores es el mensaje y los canales, no la metodología.", }, { tag: "Tiempo", q: "¿Cuánto tarda en verse?", a: "Primera semana: datos reales — coste por contacto, perfil que entra, mensaje que resuena. Primer mes: primeros contratos cerrados en la mayoría de sectores. Tres meses: el sistema funciona en automático y solo se afina. No es magia: es metodología ya rodada con más de 50 clientes.", }, ]; return (
01 Las preguntas que me hacen

Probablemente te estás preguntando
algo de esto.

Hay cinco preguntas que escucho casi en cada primera llamada. Las respondo aquí con la misma honestidad con la que las contesto en directo. Si tienes una sexta, la hablamos por WhatsApp.

{items.map((it, i) => (
{String(i + 1).padStart(2, "0")}
{it.tag} {it.q}
{it.a}
))}
¿Tienes la sexta? Pregúntamela por WhatsApp
); } // ─── CASES ───────────────────────────────────────────────────────────── function Cases() { const cols = [[], [], []]; CASES.forEach((c, i) => cols[i % 3].push(c)); // duplicate so the marquee loops smoothly const renderColumn = (items, duration) => (
{[...items, ...items].map((c, i) => ( ))}
); return (
02 Casos · 11 sectores · 50+ clientes

Nombres reales.
Números reales.

Sin nombres tachados ni capturas borrosas. Cada uno de estos negocios facturando más este trimestre que el anterior, con métodos que se pueden auditar.

{renderColumn(cols[0], 65)} {renderColumn(cols[1], 85)} {renderColumn(cols[2], 55)}

¿Tu sector no aparece? Si hay proceso de venta, hay sistema.

Te cuento cómo lo plantearía para ti
); } function CaseCard({ c }) { return (
{c.group} · {c.sector}
{c.headline}
{c.headlineUnit} · {c.sub}
{c.body}
{c.client} — {c.contact}
); } Object.assign(window, { Nav, Hero, ReviewsStrip, Ticker, Problem, Cases });