Project Type: Live

  • francisco-carracedo.com

    francisco-carracedo.com

    Por qué publicar un meta case study

    Lo más caro de evaluar a un desarrollador freelance es averiguar si de verdad construye lo que dice construir. La mayoría de portfolios resuelven ese problema listando logos de clientes y pidiéndote que confíes en el copy. Este lo resuelve siendo aquello que vende: cada decisión de arquitectura está en el código fuente que puedes inspeccionar desde tu navegador ahora mismo.

    El brief que me puse a mí mismo

    • Funcionar como prueba de lo que vendo — headless WordPress, Next.js, AEO, multilingüe.
    • Cargar rápido en una conexión móvil típica del Reino Unido, no solo en mi portátil.
    • Aparecer correctamente en AI Overviews, Perplexity y ChatGPT Search — answer-engine primero, page-rank después.
    • Funcionar sin sobrecarga DevOps mensual — un proyecto en Vercel, un hosting de WordPress, cero servidores que tenga que cuidar.

    Arquitectura

    WordPress es el CMS. Entradas, proyectos, servicios, taxonomías, grupos de campos ACF Pro — toda la superficie editorial vive ahí. El frontend es un build de Next.js 16 con App Router que consume vía WPGraphQL con revalidación tipo ISR: el contenido es dinámico para el editor pero estático para el visitante. El CMS y el frontend pueden caer de forma independiente — si WP se cae, el último contenido válido se sigue sirviendo desde el edge.

    Los dos sistemas están unidos solo por una variable de entorno del lado servidor, y el cliente GraphQL omite deliberadamente el prefijo NEXT_PUBLIC_ para que el endpoint nunca llegue al bundle del navegador. Ese detalle importa porque la instalación de WP es el único sistema que guarda secretos; si se filtrase al lado cliente, todas las demás capas serían una falsa sensación de seguridad.

    La superficie AEO

    Cada página emite un stack de schemas JSON-LD — Person, WebSite, Service, Article, BreadcrumbList, FAQPage — con valores @id estables para que los crawlers consoliden el site como una única entidad, no como un puñado de páginas casi duplicadas. Una ruta dinámica /llms.txt sirve el resumen canónico que los agentes de ingesta de LLMs piden cuando quieren el elevator pitch sin scrapear HTML. La sección FAQ de /services está escrita con pregunta-literal-como-título + respuesta-concisa-debajo — exactamente la forma que AI Overviews extrae literalmente.

    i18n bien hecho

    El portal se publica en inglés (mercado objetivo: UK) y español. El <html lang> es dinámico por locale, cada página genera alternates.languages con hreflang y x-default, el sitemap emite una entrada por URL por locale con alternates emparejados, y un script en build-time fuerza paridad entre los bundles EN y ES — el build falla si una clave existe en uno y no en el otro. Cuando el contenido del lado WP no está traducido (actualmente el caso para los cuerpos de los proyectos), aparece un banner discreto «Available in English» para los visitantes ES con un cambio directo de ruta. Sin fallback silencioso.

    Rendimiento

    Lighthouse 90+ es el suelo al que me comprometo en cada página. next/image sirve variantes AVIF/WebP con un hint sizes específico por contexto, la imagen LCP se carga con priority para tenerla cuanto antes, las fuentes están subsetadas, y la mayor parte del site renderiza como Server Components — el bundle de JS que llega al visitante es una fracción pequeña de lo que contiene la página.

    Lo que puedes verificar en 30 segundos

    • Ver Código Fuente en cualquier página — busca los bloques application/ld+json y las etiquetas hreflang.
    • Abre /llms.txt en tu navegador — esa es la página que ven los agentes LLM.
    • Abre /sitemap.xml — cada URL aparece una vez por locale con sus alternates.
    • Cambia el locale en la navbar — la URL se reescribe, el <html lang> cambia, y el case study en el que estás se intercambia limpiamente.
    • Ejecuta Lighthouse en cualquier ruta desde DevTools — comprueba el suelo.

    Lo que este case study no es

    No es un proyecto de cliente. Es el demostrador que construí entre proyectos de cliente para hacer concreto el resto de la oferta. Si estás considerando un build similar para tu propio negocio o el de un cliente, los patrones de aquí transfieren directamente — la instalación de WP está desacoplada, el setup de i18n es reutilizable, y la factory de JSON-LD es lo bastante genérica para meterla en cualquier proyecto Next App Router.

  • TrillAI Chat

    TrillAI Chat

    El problema

    Los comerciantes de WooCommerce pequeños y medianos no pueden permitirse un equipo de IA, un dashboard SaaS aparte ni un proyecto de integración de 6 semanas. Necesitan asistencia de IA que se instale como plugin, se configure en diez minutos y entienda su catálogo real — sin rediseñar la arquitectura de la tienda ni pagar una cuota por asiento por cada asistente de checkout.

    El enfoque

    TrillAI Chat es un plugin nativo de WordPress + WooCommerce. Una vez activado, ingiere el catálogo de productos a través de la propia REST API de WordPress, indexa los datos en un vector store para recuperación y expone un widget de chat en la tienda mediante shortcode o bloque Gutenberg. El plugin es agnóstico de proveedor — OpenAI y Anthropic están ambos soportados, así que el comerciante nunca queda atado a un único proveedor de LLM.

    Decisiones de arquitectura que merece la pena nombrar

    • Plugin-first, no SaaS-first. Los datos del cliente permanecen dentro de la instalación de WordPress del comerciante. La llamada al proveedor de IA es el único salto externo, y las claves viven en el propio admin del comerciante.
    • Por capacidades, no por feature flags. El tier gratuito incluye capacidades significativas (Q&A sobre catálogo, multilingüe EN/ES). Los tiers de pago añaden profundidad de razonamiento y la AI ROI Surface — instrumentación que mide la contribución del chat a los ingresos, no solo su número de mensajes.
    • Multilingüe desde el día uno. El widget opera en el mismo idioma que el locale de la tienda, con routing que respeta hreflang — de modo que un comprador español recibe un asistente en español en una tienda bilingüe.
    • Distribución vía WordPress.org. Listado en el directorio oficial de plugins, así que la instalación es un clic desde el admin de WP. Sin servidor de licencias, sin trucos de auto-actualización.

    Qué demuestra este case study

    Si eres un comerciante evaluando plugins de IA para WordPress, las preguntas que realmente necesitas hacer no son «¿funciona?» — todas las demos funcionan. Las preguntas reales son: dónde van los datos del cliente, qué pasa si el proveedor de LLM te aplica rate-limiting, cómo mides el ROI y cuál es el camino de upgrade cuando tu tienda cruza un umbral para el que el plugin no fue construido. TrillAI Chat es la respuesta práctica a esas cuatro preguntas, y es el ejemplo que cito cuando un cliente me pide añadir IA a su tienda WooCommerce existente.

    Estado

    Disponible en el directorio de plugins de WordPress.org. El desarrollo activo continúa en la AI ROI Surface y la profundidad de razonamiento de tier 2. Roadmap visible en trillai.io.

  • Senior WordPress Developer

    Senior WordPress Developer

    Por qué importa el rol en agencia cuando contratas freelance

    Las agencias son el sitio donde WordPress aparece bajo presión real: plazos ajustados, contenido multilingüe, presupuestos de rendimiento, gobernanza multisite, y los casos límite que solo te encuentras cuando una campaña dirige tráfico inesperado a una landing page en una tarde. Cuatro años de ese trabajo dan forma a cómo pienso cada proyecto que tomo fuera del día a día.

    Los patrones que aporto al trabajo bespoke

    No envío la primera cosa que compila. El contexto de agencia me enseñó a asumir que un proyecto va a ser editado por gente que no estaba en el build original, escalado más allá del brief inicial, y leído por un motor de búsqueda en más de un idioma. Cada build bespoke que entrego hereda esas asunciones:

    • Temas a medida con modelos de contenido que el editor puede usar realmente (bloques Gutenberg + ACF Pro, no page builders).
    • Tiendas WooCommerce conectadas con las integraciones que el merchant ya tiene en marcha (Klaviyo, Mailchimp, Stripe, reglas de envío, variaciones B2B).
    • Rendimiento blindado antes del lanzamiento — Lighthouse 90+ como suelo, no como algo que arreglamos después de que el cliente se queje.
    • Multilingüe estructurado correctamente con hreflang y workflows de traducción, no atornillado con un plugin de reemplazo de strings.

    Qué significa esto concretamente para tu proyecto

    Si me contratas para un WordPress a medida, te llevas los mismos patrones que envían a escala de agencia. Si me contratas para una tienda WooCommerce, te llevas a alguien que ha gestionado los modos de fallo de un portfolio de clientes real: pagos fallidos, casos límite en reglas de envío, matrices de precios B2B. El rol del día a día no reemplaza el trabajo bespoke — informa cada línea de él.

    Boundary

    Este caso de estudio describe mi rol y el valor que aporta. Los proyectos específicos de clientes de TFA son confidenciales y no se publican. Si el proyecto que estás considerando se solapa con patrones que he enviado antes, podemos hablarlo concretamente en una llamada de discovery.