Zero Trust AI Gateway
A prompt-scanning service for LLM traffic. A two-stage LangGraph pipeline scores incoming prompts for PII and risk, redacts what it has to, and writes every decision to a Postgres audit trail.
Three systems built end to end: LLM security, storage durability and web performance.
Crash safety verified with fault injection and property-based tests against a reference implementation.
Available for freelance projects. Based in Cali, Colombia.
I work across the whole stack. On the front end, that means fast, clear websites for real businesses and professionals, designed to work on any device. On the back end, it means APIs and services that keep working when something goes wrong.
Lately I've also been working with data and machine learning. Whatever the layer, I keep the same habits: keep it simple, test what matters, and measure before changing anything.
A prompt-scanning service for LLM traffic. A two-stage LangGraph pipeline scores incoming prompts for PII and risk, redacts what it has to, and writes every decision to a Postgres audit trail.
An embedded key-value engine in Go, standard library only. B+tree storage over a write-ahead log, with one guarantee: if Put returns nil, that record survives any later crash. Checked by a 500-point crash sweep and property tests against a reference implementation.
A six-page site for Montajes y Mantenimientos Vásquez, an industrial assembly and metalworking company in Cali. Static output, no framework JavaScript, built to stay fast on low-end phones. Swapping a React carousel for ~250 lines of vanilla JS cut shipped JavaScript from 226K to 7K.
A professional site for Paola Vásquez, an HSEQ lead auditor in Cali. A Next.js front end on Vercel talks to a small Express API on Render that delivers the contact form through Resend, behind rate limiting, a whitelist of valid services and HTML escaping.
Classifies Git commits as fix, feat, refactor or docs, and compares classical ML, transfer learning and a network trained from scratch on the same splits and metrics. The classifier is not the point; the evidence is: random, per-repository and temporal splits, and leakage tests that must pass before any number is reported. Result: no deep model beat the classical one (macro F1 from 56.8% to 73.3%), pretraining added 1.1 to 8.1 points over the from-scratch network, and a random split inflates F1 by about 16 to 18 points.
A reservation app built to measure which Postgres concurrency strategies oversell, which don't, and what each one costs. Five strategies across three isolation levels, a 270-run load matrix, and a deterministic interleaving test for every anomaly. Read-then-insert oversells even under REPEATABLE READ, and so does SELECT … FOR UPDATE. The app is not the point; the evidence is.
React, Next.js, TypeScript, Tailwind
Python, FastAPI, Node.js, PostgreSQL
pandas, scikit-learn, LLM applications
Go, Docker, Git, Vercel