Más de 10 años construyendo plataformas, sistemas distribuidos y equipos.
Sep 2023 — PresenteAhoraTiempo completo
Improving
Senior Software Engineer · Remoto
Contractor a tiempo completo en Improving, integrado en los equipos de sus clientes: primero Diligent, en backend y React, y desde julio de 2024 Cinemark, en la plataforma digital de venta de boletos.
CinemarkJul 2024 — Presente
Canal digital de la cadena de cines: cartelera, selección de butaca y compra de boletos. Microservicios en NestJS con Azure Event Hubs, React en el frontend y despliegue por Azure DevOps.
DiligentSep 2023 — Jul 2024
Plataforma de gobierno corporativo y cumplimiento: servicios de backend e interfaces de producto en React, de punta a punta.
El backend de Cinemark son microservicios en NestJS con PostgreSQL y Redis, y Azure Event Hubs para los flujos asíncronos entre servicios. El frontend es React y los pipelines van por Azure DevOps.
Mantengo las integraciones con la pasarela de pagos, con los sistemas de taquilla y con SendGrid. Son de terceros y no se pueden cambiar a voluntad, así que el trabajo está en aislar sus fallos y sus tiempos.
La carga se concentra en los días de estreno, de modo que la medida real del trabajo es que la compra aguante el pico sin degradarse.
En Diligent el trabajo fue de punta a punta sobre la misma plataforma: los servicios de backend y las interfaces de producto en React.
Lidero la arquitectura técnica y entrega de soluciones backend escalables para clientes enterprise: microservicios en Python (Django/FastAPI), servicios en Rails y pipelines CI/CD con IaC.
MoverisDic 2025 — Presente
Antifraude e identidad digital: APIs de liveness humano en tiempo real e identificación de contenido y video generado por IA.
Lidero el trabajo de ingeniería para clientes enterprise a través de la plataforma Torc de Randstad Digital. Responsable de la arquitectura técnica, la coordinación del equipo y la entrega de soluciones backend escalables.
Diseño y construyo microservicios y capas de API en Python con Django y FastAPI, con énfasis en modularidad, observabilidad y patrones de servicio tenant-aware.
Implemento servicios en Ruby on Rails para herramientas internas, paneles de administración y middleware de integración que conecta los sistemas del cliente con APIs y proveedores de datos de terceros.
Desarrollo interfaces front-end en React para gestión de proyectos y seguimiento de entregas, con visibilidad en tiempo real del avance de ingeniería y la asignación de recursos.
Establezco pipelines CI/CD, patrones de IaC (Terraform/Pulumi) y estrategias de despliegue para soportar iteración rápida en múltiples entornos de cliente.
PythonDjangoFastAPIRuby on RailsReactTerraformPulumiCI/CD
Jun 2025 — Sep 2025Independiente
Fuse
Senior Backend Engineer · LATAM · Remoto
Construí la arquitectura backend de una fintech de pagos: onboarding, KYC con integraciones bancarias, colas de pago (Celery/Redis) y arquitectura event-driven con Kafka.
Apoyé la base técnica de una fintech en etapa temprana enfocada en pagos digitales y servicios financieros alternativos en EE. UU. y LATAM, en un contrato freelance de corta duración.
Diseñé e implementé la arquitectura backend core con Python (Django/FastAPI), priorizando escalabilidad, modularidad y diseño de servicios tenant-aware desde el primer día. Construí ejecutores de tareas asíncronas con Celery y Redis para las colas de procesamiento de pagos.
Desarrollé los servicios iniciales de onboarding de usuarios, verificación de identidad (KYC) y creación de cuentas virtuales integrando APIs de terceros como socios bancarios y proveedores de verificación. Implementé el flujo de orquestación de KYC en Python con lógica de reintentos y callbacks por webhook.
Construí un panel de administración interno en React para que los equipos de compliance revisaran envíos de KYC, marcaran cuentas sospechosas y gestionaran flujos de aprobación en tiempo real.
Establecí una arquitectura orientada a eventos con Kafka para flujos asíncronos de notificaciones, conciliación de transacciones y operaciones de compliance.
Definí flujos CI/CD reproducibles y gestioné la infraestructura cloud con Terraform y Pulumi para agilizar los despliegues en staging y producción.
Vía Revelo, ingeniero dedicado a StyleSeat: construí y operé los flujos con agentes que quitan trabajo repetitivo a los profesionales, además de las features de reservas y las integraciones de Braze y Segment.
StyleSeatEne 2024 — Jul 2026
Marketplace de belleza y bienestar: flujos con agentes en producción para los profesionales, con sus herramientas y barandas, además de las features de reservas y las integraciones de Braze y Segment.
Contratado a través de Revelo como ingeniero senior dedicado a StyleSeat, el marketplace de belleza y bienestar, trabajando integrado con sus equipos de producto e ingeniería.
Construí los flujos con agentes para los profesionales. Un estilista pierde horas cada día confirmando citas, persiguiendo ausencias y reagendando, y ese tiempo no se paga. El agente lee el calendario y el estado de las reservas, redacta los mensajes al cliente y aplica cambios de agenda dentro de los límites que el profesional define.
Lo mío de punta a punta fueron las herramientas que el modelo puede llamar, sus esquemas y la orquestación alrededor: reintentos, timeouts y una ruta determinista para cuando el modelo no responde.
Las barandas pesaron más que el modelo. La disponibilidad sale siempre de una llamada real al servicio de agenda y nunca del texto del modelo, las acciones irreversibles piden confirmación, y cada acción queda registrada con lo que el agente vio y lo que llamó.
No solo los construí, también los operé: los flujos iban versionados, así que un cambio de prompt o de herramienta se desplegaba como una versión rastreable y reversible, se validaba en staging contra escenarios de reserva reales, y los accesos quedaban separados por rol entre producto, ingeniería y soporte.
Gestioné las capas de caché y los recursos de los que dependen los agentes: qué se cachea y por cuánto tiempo, límites de tasa y presupuesto de tokens por flujo, y cuotas para que un flujo no ahogue a otro en las horas pico de reservas.
Integré Braze para la mensajería de ciclo de vida y Segment para el tracking de eventos, de modo que el agente se midiera como cualquier otra feature del producto.
Establecí y optimicé las features de reservas: disponibilidad y agendamiento, flujos de reserva y la experiencia del cliente final en web y móvil, en todo el stack (Python, Ruby on Rails, React).
PythonRuby on RailsReactPostgreSQLAgentes de IATool callingBrazeSegment
Ene 2023 — Ene 2024Tiempo completo
BairesDev
Senior Software Engineer · Remoto
Ingeniero asignado a dos productos sin nada en común en el mismo año: entrevistas técnicas en vivo y ejecución de cadena de suministro.
KalerisJul 2023 — Ene 2024
Software de ejecución de cadena de suministro: patios, terminales portuarias y operación de buques. Integraciones entre sistemas que no hablan el mismo idioma.
CoderPadEne 2023 — Jul 2023
Plataforma de entrevistas técnicas: dos personas escriben y ejecutan código a la vez, en decenas de lenguajes. Features de producto y servicios de backend.
Dos asignaciones seguidas a través de BairesDev, cada una con su dominio y su equipo: CoderPad y Kaleris.
En CoderPad, la plataforma donde ocurren las entrevistas técnicas. Dos personas escriben y ejecutan código a la vez en decenas de lenguajes, así que un fallo del editor no es un bug cualquiera: tumba la entrevista que está pasando. Trabajé en features de producto y en los servicios de backend que las sostienen.
En Kaleris, software de ejecución de cadena de suministro para patios, terminales portuarias y operación de buques. El trabajo estuvo en las integraciones entre sistemas que no hablan el mismo idioma y en dejar trazable el estado de la carga de punta a punta.
Lo que se repite en las dos: dominios ajenos entre sí, integraciones con terceros y entrar rápido sin romper lo que ya funcionaba. El stack se movió entre Python, JavaScript y Ruby on Rails según lo que ya corría en cada equipo.
PythonRuby on RailsReactTypeScriptPostgreSQLRedisIntegraciones
Oct 2021 — Ene 2023Tiempo completo
Endava
Senior Software Engineer · Remoto
Vía el nearshore de Endava, ingeniero asignado a Mastercard: APIs internas y componentes backend de su infraestructura de pagos multitenant, con Kafka, gRPC, analítica en ClickHouse y una API pensada para que la consumiera un modelo.
MastercardOct 2021 — Ene 2023
Infraestructura de pagos multitenant: APIs internas, ingesta de eventos financieros con Kafka y gRPC, una API con OAuth que solo consumía el modelo de fraude sobre un grafo Neo4j, y analítica en ClickHouse.
Endava es una consultora de ingeniería con entrega nearshore desde LATAM y una práctica de pagos de más de veinte años. Desde ahí me asignaron a Mastercard.
Diseñé APIs internas y componentes backend reutilizables para la infraestructura de pagos multitenant. Construí gateways y capas de middleware en Python para enrutamiento, rate limiting y autenticación por tenant.
Contribuí a un sistema de gran escala y baja latencia que ingería eventos financieros casi en tiempo real con Kafka y gRPC. Desarrollé consumidores y productores en Python con validación de esquemas vía Protobuf.
Para el fraude y el scoring de riesgo construimos una API con OAuth que solo consumía el modelo: le dábamos su especificación OpenAPI en contexto y un grafo en Neo4j con los datos base, así que interpretaba las relaciones, sacaba sus propias conclusiones y decidía qué endpoints llamar. Credenciales y endpoints venían de variables de entorno por tenant y por entorno, de modo que el acceso quedaba acotado y las llaves rotaban sin tocar código.
Eso fue en 2022, dos años antes de que se publicara MCP. Es el patrón que MCP estandariza hoy, dar al modelo un contrato descrito y dejarlo elegir, y entonces cada compañía escribía su propia versión.
Diseñé esquemas para tablas OLAP en ClickHouse y construí pipelines de ingesta y transformación con Apache Airflow, además de herramientas internas en React para monitorear transacciones por tenant.
Producto interno de IA de Globant, la línea que después salió al mercado como Augoor. Recuperación sobre repositorios de código y bases de conocimiento internas: pipelines de indexación y embeddings, búsqueda híbrida y respuestas ancladas a su fuente. Lo que hoy se llama RAG, construido en 2020.
Estuve en el producto interno de IA de Globant, en las dos piezas que la compañía llevaba a sus clientes: Augmented Search y Augmented Coding. De esa línea salió después Augoor, el producto que Globant terminó sacando al mercado.
Augmented Search es recuperación sobre repositorios de código y bases de conocimiento internas. Era 2020 y 2021, antes de que nadie lo llamara RAG, pero es lo mismo: construí los pipelines de indexación y embeddings, y las APIs de consulta en Python.
La ingesta entraba por servicios en Ruby on Rails que recibían los eventos, y el procesamiento corría distribuido sobre Pub/Sub con workers de Celery. El troceado seguía la estructura del código, por fronteras de función y de clase, y cada fragmento cargaba su repositorio, su ruta, su commit y su símbolo. El reindexado era incremental contra los commits, no un recorrido completo cada vez.
La recuperación combinaba búsqueda por palabra clave y semántica, porque el vector puro falla con identificadores exactos, y los filtros se aplicaban antes de la búsqueda y no sobre los resultados.
Para el grounding devolvíamos el fragmento con su origen y un enlace a la fuente real, y si nada pasaba el umbral no devolvíamos nada.
Augmented Coding asiste a quien escribe: autocompletado a partir del código que ya existe y documentación generada desde la propia función. Desarrollé además los componentes en React de los dashboards de experimentos A/B, donde se comparaban variantes de los modelos antes de habilitarlas.
PythonRAGEmbeddingsBúsqueda híbridaPub/SubCeleryRuby on RailsReact
Oct 2019 — Oct 2020Tiempo completo
Mi Águila
Enterprise Solutions Architect · Bogotá
Modernización de plataforma: migración de monolito a microservicios con registro de servicios tenant-aware, lógica de negocio en Rails (service objects, Sidekiq) e infraestructura Kubernetes con Pulumi.
Lideré la modernización de la plataforma migrando el monolito a microservicios, introduciendo registro de servicios tenant-aware y fronteras de autenticación. Reconstruí los módulos de lógica de negocio core en Ruby on Rails con patrones de service objects y procesamiento de jobs en background con Sidekiq.
Construí capas de abstracción en React que permitieron a los equipos de frontend y backend extender features de negocio entre regiones, incluyendo componentes de UI configurables para dashboards de gestión de flota multi-región.
Gestioné infraestructura Kubernetes con Pulumi en clústeres de staging y producción.
Ruby on RailsSidekiqKubernetesPulumiReactMicroservicios
Ene 2019 — Oct 2019Tiempo completo
LOGYCA
Lead Engineer · Bogotá
Plataformas internas para unificar API e identidad: middleware en Python (logging centralizado, validación de tokens), migración cloud con módulos Pulumi reutilizables y admin en Rails.
Me enfoqué en plataformas internas para unificar los servicios de API e identidad de los productos internos. Desarrollé middleware en Python para logging centralizado, validación de tokens de autenticación y trazabilidad de peticiones entre servicios.
Impulsé la migración a la nube con un sistema de módulos Pulumi reutilizables en los entornos de desarrollo.
Aporté criterio arquitectónico en el servicio interno de autorización y en los patrones de gestión de secretos. Construí interfaces de administración en Ruby on Rails para gestionar configuraciones de servicios y políticas de control de acceso.
PythonPulumiRuby on RailsAuthLogging centralizado
Abr 2015 — Sep 2018Tiempo completo
Universidad Piloto de Colombia
Software Developer · Bogotá
Mantenimiento y desarrollo de sistemas institucionales con Ruby on Rails, PostgreSQL y Python; interfaces React para matrícula y agenda académica.
Soporté y mantuve los sistemas de software institucionales. Entregué nuevas funcionalidades bajo los estándares institucionales con Ruby on Rails, PostgreSQL y Python. Construí interfaces internas en React para los flujos de matrícula estudiantil y herramientas de programación académica.