Rol: Arquitecto e ingeniero principal, de principio a fin
160160
funciones serverless
1.0481.048
archivos de tests
33
apps: web, iOS y Android
3.0253.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.
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~5 min
para integrarlo en una web
~9 KB~9 KB
widget comprimido, sin dependencias
44
plataformas de hosting listas
33
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.
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
6464
pantallas para 7 roles
107107
funciones serverless
4.9584.958
tests unitarios + 77 specs end-to-end
2.1332.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.
CRM de ventas propio con puntuación de leads por IA
Rol: Arquitecto e ingeniero principal, de principio a fin
22
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.
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
1010
experimentos priorizados por impacto
~150~150
landing pages en la investigación de prompts
33
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
Rol: Ingeniero de plataforma en el equipo principal
130130
releases de la demo
~120×~120×
importación de VM más rápida
22
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.
Rol: Único ingeniero DevOps, responsable del programa de costes
−48 %−48 %
costes totales de Azure, en cinco semanas
7 → 4
nodos de Kubernetes
~40×~40×
menos carga en Cosmos DB
~35~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.
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 min10 min
comprobaciones externas
diario
prueba de restauración
143143
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.
Tests de navegador con IA: describe un flujo, recibe un veredicto
Rol: Creador
99
pasos para crear un test, no ~200
6+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
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
Release engineering para apps bancarias con millones de usuarios
Rol: Ingeniero DevOps de los pipelines de release móviles
~40%~40%
ciclos de release más rápidos
22
tiendas, iOS y Android
44
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.
Una carga regulada se muda a Azure, todo en Terraform
Rol: Ingeniero Azure DevOps: migración, Terraform y gobierno
~25%~25%
menos costes cloud
100%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
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
00
registros perdidos
22
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.
Sincronización ERP ⇄ CRM en ambos sentidos con los dos sistemas en uso
Rol: Construí la sincronización de principio a fin
2-way2-way
sincronización, ERP ⇄ CRM
22
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.
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
33
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.