Ingeniero backend. Construyo APIs y sistemas de datos con Python (FastAPI, SQLAlchemy, PostgreSQL) y servicios de bajo nivel con Rust (Axum, Tokio).
Me interesa la parte difícil: aislamiento multi-tenant, consistencia de datos, rendimiento medido y código que otra persona pueda leer sin preguntarme nada. Trabajo con documentación antes que con prisa — cada proyecto que publico incluye sus decisiones escritas, sus números reales y una sección honesta de limitaciones.
Si no está medido, no está terminado.
Dos sistemas backend que construyo desde cero y despliego con docker compose up. Ambos arrancan con datos precargados, así que se pueden probar en un minuto. El roadmap, las decisiones y los estándares viven en el hub Portafolio.
NexusBoard — base de conocimiento colaborativa con IA. Multi-tenancy con Row-Level Security de PostgreSQL, búsqueda híbrida (full-text + semántica con pgvector) fusionada con Reciprocal Rank Fusion, asistente RAG con streaming y evaluación publicada, edición en tiempo real por WebSocket y un CLI en Rust (nexusctl) para que los agentes de IA consulten y alimenten la base vía API keys con scopes.
Cortex — orquestador de agentes de IA escrito en Rust. El núcleo es un message bus propio (no un broker existente) con backpressure y entrega garantizada, más ejecución de pipelines, tracing distribuido y métricas en vivo. Incluye benchmarks publicados con Criterion frente a un baseline equivalente en Python, que es justo lo que se pide en las ofertas de backend de Suiza y Alemania.
Ambos están en construcción — el código se publica de forma incremental, tarea a tarea, con CI verde desde el primer commit. Prefiero decirlo a enseñar un repo vacío.
También he trabajado con gRPC, Kafka, Elasticsearch, RabbitMQ y CI/CD en entornos de producción.
- Diseño antes de codificar — esquema, contratos y trade-offs escritos antes de la primera línea.
- TDD donde duele — propiedad e integración (Testcontainers) en lo crítico, no por cumplir un porcentaje.
- CI desde el primer commit — lint, tests y build en cada push. Sin badge verde, no hay merge.
- Métricas o no existe — p95, throughput, recall@k, cobertura. Números medidos, no adjetivos.
- Documentación en español — cada épica deja su explicación: qué se construyó, por qué así y cómo verificarlo.
Un post técnico por proyecto, en dev.to, cuando cada sistema cierre su última épica. No son tutoriales de "hola mundo": son el relato de las decisiones que costaron algo — por qué Row-Level Security en lugar de filtrar en la aplicación, dónde se rompió el bus de mensajes al medirlo, y qué números salieron al final.
Cada proyecto sigue el mismo contrato, para que puedas evaluarlo en minutos sin instalar nada más que Docker:
docker compose up— arranca con datos de demo ya cargados. Nunca una pantalla vacía.- Ruta de revisión en el README — qué archivo leer primero y dónde está la decisión difícil, en lugar de dejarte adivinar entre 200 ficheros.
make test— la suite completa con sus números de cobertura, y el CI verde enlazado.docs/decisions/— los ADRs: contexto, decisión, alternativas descartadas y consecuencias.
Y una sección de limitaciones en cada README. Un proyecto que no declara lo que no hace suele esconder algo.
- Afianzando Rust asíncrono (Tokio, Axum, backpressure y entrega de mensajes) — es el diferenciador del mercado suizo y alemán.
- Alemán en progreso, de cara al mercado DACH.
- Construyendo este portafolio con agentes de IA bajo mi dirección, y documentando cada épica en español para poder defender el diseño en una entrevista. La regla que me puse: si no lo entiendo, no se commitea.
Abierto a oportunidades de backend / backend-AI en remoto. Español nativo, inglés profesional, alemán en progreso.
Tarjeta ancha y baja: cabecera, actividad, comunidad y lenguajes. Se regenera a diario dentro de este mismo repo con lowlighter/metrics (sin depender de servicios de terceros).

