Skip to content
[EN]

~ $ cat about.md

Sobre mí

Backend senior con 7 años de experiencia (desde 2019). Mi base es Node/TypeScript y Python, pero me siento cómodo cruzando dominios: rendimiento en bases de datos, workers asíncronos, integración con LLMs, reportería y un poco de redes e infraestructura cuando hace falta.

Trabajé como lead técnico en plataformas SaaS críticas con equipo, y también como único desarrollador llevando productos de cero a producción. Esa mezcla me dio criterio para decidir cuándo desacoplar, cuándo escalar y cuándo reducir complejidad antes de que crezca.

Hoy mi foco está en IA aplicada (RAG, agentes con LangGraph, tool-calling) y en cloud/DevOps pragmático — la combinación que más valor genera cuando se hace bien.

~ $ ls projects/featured/

Proyectos destacados

Softwariza AI Triaje

Backend FastAPI + LangGraph que triagea, enriquece y responde tickets de soporte de un ERP fiscal usando RAG y LLMs multi-proveedor.

[expandir]
Python 3.11FastAPILangGraph + LangChainLiteLLM (Gemini, OpenAI)Qdrant + BM25

Problema

Los equipos de soporte de un ERP fiscal-contable reciben miles de tickets con información incompleta y vocabulario muy específico del dominio. El sistema clasifica, pide los datos que faltan, recupera contexto de guías oficiales y casos históricos, y prepara una respuesta o un resumen para el asesor humano, reduciendo el tiempo hasta primera respuesta y la carga de triaje manual.

Mi rol

Único desarrollador efectivo del backend (~325 de ~340 commits). Diseñé e implementé end-to-end: API, orquestación con LangGraph, capa RAG, anonimización, ingesta XLSX, dashboard de revisión, observabilidad, migraciones y CI.

Decisiones técnicas

  • Grafo de estado con LangGraph en vez de cadenas lineales: separa nodos de recolección, clasificación, retrieval y finalización, con routing condicional (follow-up vs. escalado humano).
  • Retrieval híbrido: denso en Qdrant + BM25 con filtro por aplicación + reranker en Vertex AI, con historical boost y adaptive threshold. Mejor recall en dominios con jerga muy específica.
  • Modo shadow + dataset curado v2 incremental para iterar prompts y modelos midiendo p85 sin tocar producción.
  • LiteLLM + Langfuse como capa unificada: cambiar entre Gemini Flash, Flash Lite y OpenAI sin tocar los nodos del grafo.
  • Anonimización en tres capas previa al LLM para no exponer datos fiscales sensibles a proveedores externos.

Qué demuestra

Llevar un sistema de IA aplicada de cero a producción solo — arquitectura, RAG no trivial, observabilidad, evaluación con shadow mode y despliegue — manteniendo el código testeable y el dominio (fiscal, datos sensibles) bajo control.

Stack

Python 3.11FastAPILangGraph + LangChainLiteLLM (Gemini, OpenAI)Qdrant + BM25Vertex AI rerankerPostgreSQL + SQLAlchemy/AlembicAPSchedulerLangfuseDocker

Sobre el código

Proyecto profesional. No puedo publicar código ni datos del cliente; la arquitectura y decisiones son verificables en entrevista.

Kati-bot — SaaS multi-tenant de chatbots con IA

Plataforma multi-tenant que permite a negocios desplegar chatbots con IA sobre WhatsApp y Telegram, configurables sin código.

[expandir]
Python 3.12 (FastAPI, asyncio, uv)PostgreSQL + pgvectorRedis Streams + arqOpenRouter (LLMs)sentence-transformers

Problema

Pequeños y medianos negocios pierden ventas por no responder rápido en WhatsApp y Telegram. La plataforma les da un asistente con IA que toma pedidos, reservas, consulta stock y escala a humano cuando hace falta, configurable desde un dashboard sin tocar código.

Mi rol

Único desarrollador end-to-end (~132 commits, autor único). Arquitectura de microservicios, modelo multi-tenant en Postgres, pipeline de prompts en capas, tool-calling, auto-evaluación nocturna, dos proveedores WhatsApp intercambiables y dashboard React.

Decisiones técnicas

  • Schema por tenant en Postgres (en vez de tenant_id en columnas) para aislamiento real de datos y backups granulares por cliente.
  • Redis Streams como bus entre Gateway y Core en lugar de HTTP directo, para desacoplar canales (Telegram/WhatsApp) del motor de IA y permitir reintentos/backpressure.
  • Prompt en capas (IDENTITY → CAPABILITIES → INSTRUCTIONS → ADJUSTMENTS → KNOWLEDGE → HISTORY) con tools filtradas por capacidades del tenant en YAML, para que el mismo core sirva a negocios muy distintos sin forks.
  • Ciclo de auto-mejora nocturno: un worker evalúa conversaciones con LLM y propone ajustes al prompt del tenant, revisables desde el dashboard.

Qué demuestra

Llevar un producto SaaS completo de cero a MVP comercializable solo — arquitectura distribuida, multi-tenancy real, integración con LLMs y dashboard de operación — con decisiones de aislamiento, desacople y configurabilidad pensadas para escalar a múltiples clientes.

Stack

Python 3.12 (FastAPI, asyncio, uv)PostgreSQL + pgvectorRedis Streams + arqOpenRouter (LLMs)sentence-transformersReact + Vite + TypeScriptTailwind + shadcn/ui + TremorDocker ComposeCaddy

Sobre el código

Proyecto profesional. No puedo publicar código ni datos del cliente; la arquitectura y decisiones son verificables en entrevista.

Backend Vertebra — SaaS de automatización contable y facturación

Backend GraphQL que automatiza descarga, auditoría, digitalización y pago de facturas de servicios públicos a escala empresarial.

[expandir]
TypeScript + Node.jsApollo GraphQL (Nexus)Prisma + PostgreSQLBullMQ + RedisMongoDB (AI memory)

Problema

Empresas con cientos de cuentas de servicios públicos (energía, gas, agua, telecomunicaciones) gastan miles de horas mensuales descargando facturas de portales, validándolas, contabilizándolas y pagándolas. La plataforma automatiza ese ciclo end-to-end, con auditoría, alertas y conciliación bancaria integradas.

Mi rol

Lead backend / principal mantenedor. Sobre ~9.700 commits totales, ~7.100 son míos (más del 70%). Diseñé los subsistemas de workers asíncronos, reportería, pipelines de IA para extracción/digitalización de facturas, conciliación bancaria, alertas y la mayoría del esquema Prisma. Coordino con un equipo de 4–6 desarrolladores.

Decisiones técnicas

  • Arquitectura basada en colas BullMQ con 79 workers especializados (descarga, auditoría, conciliación, pagos, alertas) para aislar fallos por integración externa y permitir reintentos y backpressure sin afectar el API.
  • Capa de IA propia con agentes LangGraph, RAG y memoria en MongoDB, con observabilidad en LangSmith, para extracción estructurada de campos desde facturas heterogéneas (PDF/imagen) y clasificación de correos.
  • 147 reportes Excel generados como jobs en disco bajo un patrón uniforme, permitiendo a usuarios de negocio pedir extracciones complejas sin tocar BI.
  • Datastream Postgres → BigQuery para analítica sin penalizar el OLTP; índices parciales y funciones SQL custom para acelerar los flujos críticos de pago.

Qué demuestra

Sostener y evolucionar un sistema crítico de larga vida con muchas integraciones frágiles (portales externos, bancos, OCR/IA), priorizando observabilidad, colas desacopladas y automatización donde antes había trabajo manual. Cómodo cruzando dominios: DB performance, workers, IA aplicada y reportería de negocio.

Stack

TypeScript + Node.jsApollo GraphQL (Nexus)Prisma + PostgreSQLBullMQ + RedisMongoDB (AI memory)BigQueryLangChain / LangGraph / LangSmithMJMLFirebase AdminGoogle Cloud StorageDocker + PM2

Sobre el código

Proyecto profesional. No puedo publicar código ni datos del cliente; la arquitectura y decisiones son verificables en entrevista.

~ $ ls projects/other/

Otros proyectos

Guruve — Orquestador conversacional sobre WhatsApp Business

Backend de bots conversacionales con colas, scheduling y reportes, sirviendo a varios clientes enterprise desde una misma plataforma.

Sostener solo una plataforma multi-tenant en producción durante años, con foco en confiabilidad operativa (colas, reintentos, scheduling, observabilidad básica).

Node.js + ExpressBullMQ + RedisBigQueryWhatsApp Business Cloud API

Plataforma de gestión académica (instituto de educación superior)

Sistema web full-stack para gestionar cursos, inscripciones y reportes oficiales en PDF de un instituto de educación superior.

Llevar un producto solo desde modelo de datos hasta despliegue automatizado, tomando decisiones pragmáticas de empaquetado e infraestructura (Nuitka + pull-deploy) ajustadas a un cliente on-premise sin equipo de DevOps.

Python 3.12 + FastAPISQLAlchemy + AlembicPostgreSQL + JWTReact 19 + TypeScript + Vite

Vsync2 — sync incremental Postgres → BigQuery

Reemplazo de un conector Airbyte por un job diario en Python con watermark, sin streaming y sin costo extra.

Identificar cuándo una herramienta administrada es overkill y reemplazarla con código mínimo, idempotente y operativamente trivial — incluyendo el plan de cutover sin pérdida de datos, no solo el código feliz.

Python 3.11psycopg 3 (cursor server-side)google-cloud-bigquery (load jobs vía NDJSON)uv