Director of Engineering & CISO · 2023 - now
Consentio
Me uní a un equipo de cinco personas sobre un stack MySQL heredado a finales de 2023, y sigo escribiendo código cada semana. Tres años después, la plataforma funciona sobre PostgreSQL detrás de un firewall que escribí, ha superado dos auditorías ISO de seguimiento y el equipo se ha duplicado.
consentio.co- pedidos, hasta más de 500k al año
- 2×
- de los pedidos leídos de emails y PDF, 2023 → 2026
- 14% → ⅔
- personas en el equipo
- 5 → 10
- PR fusionadas al año, mías
- ~170
El problema
Consentio es una plataforma B2B de trading de productos frescos. Los proveedores publican ofertas, los compradores hacen pedidos y Magic Order, nuestro parser de IA, convierte los emails y PDF de pedido de los retailers en pedidos. Más de 1.500 proveedores han comerciado en ella, con retailers como Aldi, Carrefour, Kroger y Metro.
El producto es perecedero y los márgenes, ajustados. Había que seguir entregando producto mientras hacíamos una plataforma heredada lo bastante fiable y segura para grandes retailers y sus revisiones de seguridad.
Momentos clave
La noche del cambio
Pasar de MySQL a PostgreSQL no podía hacerse de golpe. Diseñé un entorno paralelo reimportado desde producción cada noche, escribí un runbook por entorno y ejecuté yo mismo la primera migración. El equipo escribió la mayor parte de los cambios de la aplicación; yo ordené el trabajo, retuve un merge para que dos releases arriesgadas no salieran juntas y después dirigí la noche del cambio en producción. Nueve meses, sin big bang, y el camino abierto hacia nuestros nuevos clústeres de Kubernetes.
Seis meses antes del primer bloqueo
Los grandes retailers se integran desde IP fijas, así que un firewall mal ajustado habría cortado a los clientes que más necesitábamos. Escribí el WAF de Cloud Armor y el rate limiting en Terraform, los activé primero en desarrollo y después los dejé en modo vista previa sobre seis meses de tráfico de producción, 24M de peticiones, reordenando las listas de permitidos de los partners antes de activarlos. Resultado: cero falsos positivos bloqueados. Por el camino enseñé Terraform a cada ingeniero de backend, para que los cambios de infraestructura ya no dependan de mí.
La peor caída de 2026
Una mañana de junio, en plena ventana de pedidos, la réplica de lectura se saturó y la plataforma cayó durante unos 80 minutos. Siguiendo la regla que di al equipo, primero reproducir y después corregir, rastreé la cadena: una actualización automática de Kubernetes en hora punta, una tormenta de reconexiones y una consulta que no podía usar un índice. Desplegué el índice yo mismo (de 570 ms a 6 ms) y moví las ventanas de mantenimiento fuera de hora punta esa misma semana; después escribí post-mortems sin culpables, internos y para el cliente, y abrí una auditoría de la base de datos con el equipo.
También entregué: el backend de ofertas en vivo, licitaciones y solicitudes de cambio · un framework de integración OAuth sobre el que se conectan las integraciones de partners · el exportador de pedidos al ERP de un retailer · nuestra librería de módulos de infraestructura como código · un servidor SFTP para clientes EDI · la mensajería NATS JetStream · agentes y herramientas internas de Claude Code.
Más allá del código
Equipo y contratación
- Hice crecer el equipo de 5 a unas 10 personas entre España y Colombia, escribiendo las descripciones de puesto y trabajando con agencias y escuelas de ingeniería, y preparé el business case de un product manager técnico.
- Puse en marcha un release train dos veces por semana, guardias y puertas de calidad, y llevé al equipo a programar con asistencia de IA con reglas de revisión escritas.
Clientes y producto
- Fui el responsable técnico designado del marketplace de proveedores de un gran retailer: talleres de integración en sus oficinas, la especificación de la API de partners y 14 ADR, del arranque a la Fase 1 en cinco meses.
- Fui el interlocutor técnico de una cooperativa de distribución cuyos pedidos se multiplicaron por unas 20 tras la puesta en producción, y asumí las especificaciones de producto cuando faltó capacidad.
Seguridad
- Como CISO, dirigí el programa ISO 27001, 27017 y 27018 en dos auditorías de seguimiento, además del primer pentest y las revisiones de seguridad de grandes clientes.
Decisiones y concesiones
Detuve una integración de marketplace antes de una auditoría de datos costosa, asumiendo mi error de alcance
Por qué: las direcciones de consumidores son datos personales y la auditoría costaba más de lo que justificaba la cuenta
Coste: trabajo de prueba de concepto archivado; el cliente arrancó por una vía más barata.
Parsing LLM de pedidos con varios proveedores y una cadena de respaldo, en lugar de un solo modelo
Por qué: ninguna caída de un proveedor detiene los pedidos
Coste: más piezas que vigilar. Marqué la dirección y escribí las especificaciones; el equipo lo construyó.
Contar la complejidad de los formatos, no formatos por semana, en los planes de entrega al cliente
Por qué: diez formatos difíciles no equivalen a diez fáciles
Coste: una promesa más difícil de vender, pero planes cumplibles. El CEO lo adoptó.
Un scoring ponderado en lugar de un solver de optimización para asignar proveedores
Por qué: un equipo pequeño debía mantenerlo y los compradores debían confiar en él
Coste: no es óptimo; la API deja sitio para un solver más adelante.
Stack
Go · TypeScript · React · PostgreSQL · NATS · GKE · Terraform · Cloud Armor · Vertex AI · Prometheus · Sentry · Vanta
Conclusión
La velocidad con grandes retailers vino de reducir riesgos, no de saltárselos: una copia de ensayo cada noche, runbooks escritos, seis meses de logs del firewall. Eso es lo que permitió a un equipo pequeño seguir entregando dos veces por semana mientras superaba revisiones de seguridad de grandes clientes.