Saltar al contenido

Proyectos seleccionados

Todo lo que ves funciona hoy en producción. Clientes y productos son anónimos; las cifras son mediciones reales.

Situaciones típicas que resuelvo

SaaS y LMS, sector educativo, desde 2025

Del prototipo con IA a un SaaS en producción

Rol: Arquitecto e ingeniero principal, de principio a fin

160
funciones serverless
1.048
archivos de tests
3
apps: web, iOS y Android
3.025
PRs fusionados en diez meses

Plataforma todo en uno y LMS para centros de formación que convierte la gestión diaria en evidencias de auditoría. Nació en un generador de apps con IA y hoy es un producto multi-tenant seguro, con apps web, iOS y Android.

Cómo lo hice
  • Arquitectura: React en Vercel, Supabase Postgres con seguridad a nivel de fila en cada tabla, 160 edge functions y 26 tareas programadas
  • Cursos y e-learning SCORM, planificación de sesiones, asistencia con firma electrónica y código QR, contratos y certificados
  • Flujos de financiación de la formación, un informe regulatorio anual, un CRM y un catálogo público con pago por Stripe
  • Módulo de auditoría de calidad: evidencias por indicador, auditoría simulada y modo presentación para el auditor
  • Agente de IA (Gemini) que edita registros tras un paso de confirmación, más un servidor MCP en producción: todo lo que haces en la interfaz también funciona desde Claude, ChatGPT o tu agente de programación, incluidos analíticas y datos de usuarios
  • Apps nativas Android e iOS (Kotlin/Compose, SwiftUI) con design tokens generados a partir del CSS web
  • Pipeline de releases: dry-run de las migraciones antes del merge, solo se despliegan las funciones cambiadas, smoke tests tras cada despliegue
  • Copias cifradas 7 veces al día, archivos replicados en Cloudflare R2, prueba de restauración cada noche en un proyecto gemelo

Resultado: 3.025 pull requests fusionados en diez meses, entregados en pasos pequeños y reversibles.

Stack: React, TypeScript, Supabase, PostgreSQL RLS, Deno, Vercel, Stripe, Gemini, MCP, Kotlin, SwiftUI, Cloudflare R2, Playwright

Servicio: Agentes de IA para WhatsApp, chat y tu web

Producto propio, 2026

Helptempo: un chat de ventas y soporte para cualquier web, construido como motor reutilizable

Rol: Product owner e ingeniero: diseño, desarrollo y empaquetado

~5 min
para integrarlo en una web
~9 KB
widget comprimido, sin dependencias
4
plataformas de hosting listas
3
APIs de modelos, más modelos locales

Un chat de IA listo para integrar, construido una vez y reutilizado en cada web; cada sitio solo aporta su propio archivo de conocimiento. Responde preguntas abiertas, cita solo los datos y precios que muestra la página, lleva a los visitantes a la sección adecuada con botones y sugiere la siguiente pregunta. La guía IA de esta web funciona con él: pruébala abajo a la derecha.

Cómo lo hice
  • Widget: un módulo ES en Shadow DOM, sin dependencias, unos 9 KB comprimido; funciona en HTML, WordPress, React y Next.js
  • Un backend para cualquier hosting: Next.js/Vercel, Azure Static Web Apps y Functions, Cloudflare Workers, Node/Express
  • Cualquier modelo: Gemini, Claude o cualquier API compatible con OpenAI, también modelos locales (Ollama, vLLM) y gateways (LiteLLM), con cadena de respaldo automática
  • Hecho para vender: las respuestas terminan con botones que llevan a la página y preguntas de seguimiento; cualifica visitantes y señala el siguiente paso
  • Respuestas preparadas para las preguntas iniciales (al instante, sin llamar a la API) y caché de respuestas en el servidor
  • Seguro por defecto: claves solo en el servidor, salida del modelo solo como texto, enlaces permitidos, límite de peticiones, límites de entrada, CORS denegado por defecto
  • Inglés, alemán, español y francés incluidos, claro y oscuro, diseño para móvil
  • Se integra en una web nueva en unos cinco minutos: instalar, un archivo de conocimiento y una configuración pequeña

Resultado: Una página de producto nueva tiene en minutos un asesor de ventas multilingüe que funciona y solo cita lo que muestra la propia página.

Stack: Web Components, Shadow DOM, TypeScript types, Gemini, Claude, OpenAI-compatible APIs, Ollama / vLLM, Azure Functions, Vercel, Cloudflare Workers, Node.js

Servicio: Agentes de IA para WhatsApp, chat y tu web

Cliente, escuela de surf y hostel, Portugal, desde 2026

Plataforma de reservas y operaciones para hostelería

Rol: Arquitecto e ingeniero principal, de principio a fin

64
pantallas para 7 roles
107
funciones serverless
4.958
tests unitarios + 77 specs end-to-end
2.133
PRs fusionados en seis meses

Me hice cargo de un prototipo generado con IA y lo convertí en la plataforma que gestiona reservas, pagos, operaciones del equipo, ventas, marketing y mensajes a huéspedes por WhatsApp de una escuela de surf con hostel.

Cómo lo hice
  • Embudos de reserva para clases de surf, campamentos, coworking, estancias en el hostel, pases de varias semanas y paquetes de fin de semana
  • Configurador de estancias con precios en vivo del sistema del hostel; la reserva se registra en el sistema del hostel tras el pago
  • Panel del equipo con 64 pantallas y 7 roles: calendario, clientes sin reserva, check-in con tasa turística, presupuestos, bonos, alquileres, finanzas
  • CRM de ventas con puntuación de leads por IA, borradores de respuesta e informe de ventas para la dirección
  • Agente de IA en WhatsApp (Gemini) cuya base de conocimiento crece con las respuestas del equipo; el conocimiento nuevo solo se publica con aprobación del responsable
  • Calendario de marketing y campañas para todo el equipo
  • API pública de solo lectura y servidor MCP (sin datos personales, claves con hash) con los que el cliente automatiza la planificación semanal
  • Separación staging/producción, trabajo solo con PRs, copias cifradas cada 4 horas independientes del proveedor de hosting
  • Watchdogs: sondas cada hora del embudo de reserva, un pago sintético diario y una alerta si dejan de entrar reservas

Resultado: Cuando el proveedor del sistema del hostel cambió su API sin avisar, las sondas lo detectaron y las estancias volvieron a ser reservables el mismo día.

Stack: React, TypeScript, Supabase, PostgreSQL, Vercel, Stripe, Hostel PMS API, Twilio WhatsApp, Gemini, MCP, Playwright, GitHub Actions

Servicio: Agentes de IA para WhatsApp, chat y tu web

Hostelería y SaaS educativo, 2025–2026

CRM de ventas propio con puntuación de leads por IA

Rol: Arquitecto e ingeniero principal, de principio a fin

2
plataformas con CRM propio integrado

El pipeline de ventas vive dentro de la plataforma con la que ya funciona el negocio, junto a reservas, pagos y marketing. La IA puntúa los leads y redacta las respuestas, y la dirección ve las cifras en un solo informe.

Cómo lo hice
  • CRM de ventas desde la primera consulta hasta la reserva
  • Puntuación de leads con IA (Gemini) para que el equipo llame primero a los mejores
  • Borradores de respuesta con IA que el equipo edita y envía
  • Un informe de ventas para la dirección
  • El SaaS educativo también tiene su propio módulo CRM, junto a los flujos de financiación y el catálogo de cursos

Resultado: Ventas, reservas y marketing en un solo sistema, con la IA haciendo el primer borrador.

Stack: React, TypeScript, Supabase, PostgreSQL, Gemini

Servicio: Agentes de IA para WhatsApp, chat y tu web

Plataforma europea de hostelería, 2026

GEO: hacer visible una red de restaurantes en la búsqueda con IA

Rol: Consultor GEO: análisis, línea base, experimentos y pruebas de concepto

10
experimentos priorizados por impacto
~150
landing pages en la investigación de prompts
3
fases: analizar, elegir, ejecutar

Una plataforma con una gran red de webs de restaurantes quería que los clientes encontraran y reservaran restaurantes a través de ChatGPT, Gemini y las respuestas de IA de Google. Medí de dónde llega hoy el tráfico desde IA, monté la investigación de prompts y convertí los hallazgos en experimentos priorizados con pruebas de concepto funcionando.

Cómo lo hice
  • Línea base de visitas y conversiones llegadas desde IA junto a la búsqueda clásica, a partir de la analítica web y Google Search Console
  • Investigación de prompts para unas 150 landing pages: preguntas realistas de clientes generadas con un LLM a partir del sitemap y seguidas en Semrush
  • Evaluación de herramientas de visibilidad en IA y de fichas, incluidas las preguntas legales y de protección de datos
  • Comparación de plataformas de fichas para publicar datos de restaurantes en portales de terceros por API
  • 10 experimentos priorizados por impacto y esfuerzo, elegidos en un taller y ejecutados en sprints
  • Pruebas de concepto: publicación automática en portales de terceros y un generador de artículos SEO/GEO

Resultado: Una línea base medida y una hoja de ruta priorizada en lugar de intuiciones, más herramientas que el equipo sigue usando.

Stack: Semrush, Google Search Console, Web analytics, Open LLMs, Schema.org, Listing APIs, Python

Servicio: GEO y SEO: visible en respuestas de IA y buscadores

Plataforma de tecnología de medios, 2026

Kubernetes híbrido para broadcast en directo

Rol: Ingeniero de plataforma en el equipo principal

130
releases de la demo
~120×
importación de VM más rápida
2
mundos: bare metal + AWS

Las funciones de medios para producción en directo se ejecutan como cargas reservadas bajo demanda en Kubernetes: en bare metal on-prem tras una VPN y en AWS. Construí la demo de reservas y gran parte de la integración que hizo la plataforma operable en directo.

Cómo lo hice
  • Demo de reservas en Go y Angular: reservar una producción, ver su despliegue y previsualizarla por WebRTC; Helm chart y despliegue GitOps en ambos clústeres
  • Servidor de orquestación Windows como VM en KubeVirt dentro del clúster bare metal; importación de imágenes por VPN unas 120 veces más rápida
  • Cassandra y OpenSearch movidos al clúster para que la plataforma funcione sin conexión externa (air-gapped)
  • Límites de coste en el código: entorno dev eliminado cada noche, entornos de preview con caducidad, limpieza de volúmenes huérfanos, etiquetas de coste obligatorias en el plan, alertas de tráfico entre zonas
  • Alertas de salud de FluxCD al chat, SSO con Keycloak para Grafana, External Secrets, oauth2-proxy delante de herramientas internas
  • Operé y depuré clústeres Talos en bare metal y EC2 con Karpenter; envié correcciones de red a un proyecto open source de transporte de medios

Resultado: Las producciones se reservan y despliegan bajo demanda, y el entorno dev está apagado por defecto cada noche y cada fin de semana.

Stack: Kubernetes, Talos, KubeVirt, AWS EC2, Karpenter, FluxCD, Helm, Go, Angular, Cassandra, OpenSearch, Keycloak, Prometheus, Grafana, Loki, Terraform

Servicio: Optimización de costes cloud (FinOps), Orquestación y optimización de Kubernetes, IA local y privada para datos sensibles, Migración a la nube y modernización de sistemas legacy

Plataforma europea de datos retail, 2026

FinOps en Azure y dimensionamiento de Kubernetes

Rol: Único ingeniero DevOps, responsable del programa de costes

−48 %
costes totales de Azure, en cinco semanas
7 → 4
nodos de Kubernetes
~40×
menos carga en Cosmos DB
~35
cambios en un mes, un ticket cada uno

Como único ingeniero DevOps de una plataforma en AKS, Postgres y Cosmos DB, reduje los costes totales de Azure (gasto mensual) un 48 % en cinco semanas sin ningún cambio visible para los clientes.

Cómo lo hice
  • Línea base de costes amortizada por recurso desde la API de Cost Management, con un modelo de gasto previsto en vez de esperar a la factura
  • Una comprobación en vivo antes de cada recomendación: qué corre ahí, quién lo usa, carga pico en vez de medias
  • Dimensionamiento de Kubernetes según el uso p95 de Prometheus y luego menos nodos; reservas devueltas el mismo día en que salía una máquina
  • Réplicas de base de datos y retención ajustadas a la necesidad real; bases de datos de clientes movidas al clúster con CloudNativePG, con recuentos y checksums idénticos
  • Stack de monitorización trasladado de su propia VM a AKS; menos logging de depuración en almacenamiento de pago
  • Una corrección de consulta redujo la carga de una Cosmos DB serverless unas 40 veces, con el mismo resultado
  • Informe diario de costes en el chat, presupuestos con alertas de previsión, un esquema de etiquetas y un informe semanal para la dirección con previsión a dos meses

Resultado: Cada cambio con su impacto, riesgo y forma de revertirlo, un ticket por cambio. No se tocó nada que los clientes pudieran notar.

Stack: Azure AKS, Cost Management API, Reservations, PostgreSQL, CloudNativePG, Cosmos DB, Prometheus, Grafana, Loki, Terraform

Servicio: Optimización de costes cloud (FinOps), Orquestación y optimización de Kubernetes

Patrón en plataformas SaaS, broadcast y retail, 2026

Monitorización de resultados de negocio y copias probadas cada noche

Rol: Diseñado y construido en cada plataforma

10 min
comprobaciones externas
diario
prueba de restauración
143
reglas de alerta en Kubernetes

Los dashboards pueden seguir en verde mientras los clientes no pueden pagar. Monto una monitorización que comprueba lo que importa al negocio y limita las alertas a lo justo para que se sigan leyendo.

Cómo lo hice
  • Comprobaciones sintéticas desde fuera cada 10 minutos, un recorrido cada hora del embudo de reserva y un pago de prueba diario
  • Watchdogs de resultado contra la fuente de verdad: pagado pero sin reserva, visitas pero sin reservas
  • Controles de release: dry-run de las migraciones antes del merge y un smoke test tras cada despliegue que lo marca en rojo si se rompe una ruta vital
  • Control del ruido: una issue de GitHub por incidencia, abierta y cerrada automáticamente, sin duplicados y con límite por hora
  • Prometheus, Grafana, Loki y Alertmanager con 143 reglas de alerta en una plataforma Kubernetes
  • Copias cifradas cada 3–4 horas fuera del proveedor, restauradas cada noche en un gemelo aislado
  • Registro de auditoría en S3 Object Lock (escritura única, 90 días) con credenciales de solo escritura

Resultado: Las copias se restauran cada noche en lugar de darlas por buenas, y los canales de alertas siguen siendo legibles.

Stack: Prometheus, Grafana, Loki, Alertmanager, FluxCD, GitHub Actions, Playwright, pg_dump, age / GPG, Cloudflare R2, S3 Object Lock, Azure Monitor

Servicio: Orquestación y optimización de Kubernetes, Seguridad empresarial y escalado

Herramienta propia, 2026

Tests de navegador con IA: describe un flujo, recibe un veredicto

Rol: Creador

9
pasos para crear un test, no ~200
6+
proyectos verificados

Un agente de IA controla un Chrome real mediante Playwright. Describes un flujo de usuario en lenguaje natural; lo recorre y devuelve un resultado estructurado con errores de consola, peticiones fallidas y una propuesta de corrección.

Cómo lo hice
  • Escenarios de prueba en lenguaje natural con veredicto JSON: aprobado, expectativas fallidas, errores de consola, fallos de red, propuesta de corrección
  • Mapa de rutas con perfiles de sesión ya iniciados; un fallback con IA avisa de rutas que han cambiado
  • Pruebas multirrol: un rol actúa y la pantalla de otro debe actualizarse sin recargar, midiendo el retraso
  • Emulación de iPhone y de navegadores in-app para reproducir errores reportados por usuarios finales

Resultado: La comprobación estándar antes y después de cada release en dos plataformas en producción.

Stack: Node.js, Claude Code, Playwright MCP, Chrome, WebKit

Proyecto propio de hardware

Robot con IA offline sobre un ESP32

Rol: Diseño y construcción

0
servicios cloud necesarios
100%
voz e IA locales

Un pequeño robot construido desde cero: un ESP32 con servos, sensores y una pantalla OLED. La voz y la IA funcionan con un modelo Whisper local y un LLM local, así que escucha, piensa y se mueve sin nada de internet.

Cómo lo hice
  • Firmware del ESP32 con PlatformIO y el framework Arduino: servos, sensores y una pantalla SSD1306
  • Reconocimiento de voz en un servidor Whisper local y respuestas de un LLM local
  • Sin conexión externa por diseño, con su propio hotspot de respaldo y control por wifi
  • El mismo patrón que uso para IA privada en empresas: ningún dato sale del dispositivo

Resultado: Un robot que funciona con voz e IA completamente offline.

Stack: ESP32, PlatformIO, C++, Arduino, SSD1306 OLED, Whisper, Local LLM

Servicio: IA local y privada para datos sensibles

Banco minorista británico, 2023–2024

Release engineering para apps bancarias con millones de usuarios

Rol: Ingeniero DevOps de los pipelines de release móviles

~40%
ciclos de release más rápidos
2
tiendas, iOS y Android
4
etapas de pipeline hasta producción

Toda una familia de apps de banca minorista en App Store y Google Play, con multibanca para cuentas de otros bancos. Construí los pipelines que las compilan, protegen, firman y publican, en uno de los sectores más regulados que existen.

Cómo lo hice
  • Pipelines en varias etapas (Dev, PoC, QA, Prod) que compilan, firman y publican las apps de iOS y Android en TestFlight, App Store, Firebase, Google Play y SauceLabs
  • Multibanca en la app: cuentas y movimientos de otros bancos junto a los propios, publicados con los mismos pipelines
  • Bastionado de las apps con Promon y escaneos de seguridad MobSF automáticos en cada pipeline
  • Builds nocturnos que detectan pronto los cambios que rompen algo
  • Compatibilidad de versiones entre backend, web y móvil, con rollback sin caída del servicio

Resultado: Ciclos de release alrededor de un 40 % más rápidos, en un entorno muy regulado.

Stack: iOS, Android, Fastlane, Jenkins, TestFlight, Firebase, Google Play, SauceLabs, Promon, MobSF

Servicio: Seguridad empresarial y escalado

Fabricante de automóviles, 2022–2023

Una carga regulada se muda a Azure, todo en Terraform

Rol: Ingeniero Azure DevOps: migración, Terraform y gobierno

~25%
menos costes cloud
100%
infraestructura como código Terraform

Una aplicación de detección de tuning, relevante para la regulación, tenía que pasar a Azure Kubernetes Service sin relajar ni un solo control. Todo entró como código, con reglas que se aplican a todos los equipos.

Cómo lo hice
  • Migré la aplicación regulatoria de detección de tuning a Azure Kubernetes Service, todo en Terraform
  • Azure Policies y Blueprints que aplican líneas base de seguridad y reglas de red en todos los equipos
  • Observabilidad con Azure Monitor, Defender y Grafana
  • Control de costes y una estrategia de etiquetado, para que cada euro tenga responsable

Resultado: Costes cloud alrededor de un 25 % menores, con líneas base de seguridad aplicadas como código en todos los equipos.

Stack: Azure AKS, Terraform, Azure Policy, Azure Blueprints, Azure Monitor, Microsoft Defender for Cloud, Grafana

Servicio: Optimización de costes cloud (FinOps), Migración a la nube y modernización de sistemas legacy, Seguridad empresarial y escalado

Sector público, sanidad, 2019–2022

Datos sanitarios sensibles entre dos sistemas públicos, sin perder ninguno

Rol: Ingeniero cloud y representante del cliente en un comité de dirección intercantonal

0
registros perdidos
2
sistemas públicos de salud conectados

Dos sistemas públicos de salud tenían que intercambiar registros muy sensibles de forma fiable. Construí el middleware serverless entre ambos y representé al cliente en el comité que planificaba los releases con los demás cantones.

Cómo lo hice
  • Middleware serverless en Azure Functions (TypeScript) que mueve registros muy sensibles entre dos sistemas públicos de salud
  • Azure Queue Storage entre los sistemas: si un lado no está disponible, los registros esperan en la cola en vez de perderse
  • Primero suplente y después representante del cliente en un comité de dirección intercantonal
  • Planificación de releases entre cantones, para que los cambios de ambos lados salieran a la vez

Resultado: Ni un solo registro perdido entre los dos sistemas.

Stack: Azure Functions, TypeScript, Azure Queue Storage, REST APIs

Servicio: IA local y privada para datos sensibles, Migración a la nube y modernización de sistemas legacy, Seguridad empresarial y escalado

Servicios profesionales, ERP y CRM, 2019–2022

Sincronización ERP ⇄ CRM en ambos sentidos con los dos sistemas en uso

Rol: Construí la sincronización de principio a fin

2-way
sincronización, ERP ⇄ CRM
2
sistemas en uso todo el tiempo

Ventas trabajaba en HubSpot, finanzas y proyectos en Maconomy, y nadie podía parar para un cambio de golpe. Construí una sincronización bidireccional para que ambos sistemas siguieran en uso con los mismos datos.

Cómo lo hice
  • Sincronización bidireccional entre Maconomy (ERP) y HubSpot (CRM)
  • Ambos sistemas siguieron en uso todo el tiempo, sin cambio de golpe
  • Los cambios fluyen en los dos sentidos, así ventas y finanzas trabajan con los mismos datos de clientes

Resultado: Un único registro de cliente entre ERP y CRM, sin detener ninguno de los dos sistemas.

Stack: Maconomy, HubSpot, REST APIs

Servicio: Migración a la nube y modernización de sistemas legacy

Consultoría, seguridad de la información, 2019–2022

Herramienta de certificación ISO 27001 con apps nativas

Rol: Desarrollador: backend Spring Boot y apps nativas

3
partes: backend, app Android e iOS

Obtener y mantener la ISO 27001 significa una larga lista de controles y la evidencia de cada uno. Esta herramienta dio al personal un único lugar para ello: un backend en Spring Boot y apps nativas de Android e iOS.

Cómo lo hice
  • Backend en Spring Boot con APIs REST para controles, evidencias y su estado
  • Apps nativas de Android e iOS, para que el personal gestione controles y evidencias desde cualquier sitio
  • Un único lugar para toda la certificación en vez de hojas de cálculo y carpetas compartidas

Resultado: Controles y evidencias en un solo lugar, usados por el personal a diario.

Stack: Spring Boot, Java, REST APIs, Android, iOS

Servicio: Seguridad empresarial y escalado

    Hablemos

    Cuéntame qué estás construyendo; te respondo en 1 o 2 días laborables.

    Dominik Heinrich
    Empresa
    MADO Consulting

    Disponible en todo el mundo en remoto. Presencial bajo petición, según el país.

    Te respondo en 1 o 2 días laborables. Huecos libres: mira el calendario

    Abre aquí el calendario de reservas de Calendly. Al cargarlo se envían datos a Calendly (ver aviso legal).