Carlos Hernández

Head of AI Platform Engineering · San Salvador
UTC−6 · ES / EN

I build the platforms that run LLM systems — observable, versioned, costed, deletable.

Eight years in production infrastructure — DevOps and platform at scale, and the teams behind it — now aimed at production AI. Two rails that reinforce each other: I lead AI Platform Engineering at EsePlus / Alilo, and I build delivery and agent platforms as a DevOps engineer at Deckers Brands. The scarce part isn't either half — it's applying platform discipline to systems that are non-deterministic by nature.
I Production work
Agnostic, composable AI engines
Built at EsePlus / Alilo · Head of AI Platform Engineering
Two AI engines I designed and own end-to-end, exposed as agnostic, composable APIs for the product team to consume into experiences. One is an async generative-AI backend that turns uploaded documents into corporate microlearning — a multi-stage pipeline coordinating document analysis, content generation, and activity design, with backpressure handling and streaming feedback. The other is a multi-tenant RAG conversational assistant — hybrid retrieval and reranking, modern embedding strategies, an agent runtime with multimodal tool calling, and a defense-in-depth safety stack validated by automated adversarial regression.
Highlights: 95% → 99.5% availability uplift · 20%+ cloud cost reduction · ~90% token savings on validation retries · sub-3s p50 latency · zero jailbreaks in adversarial testing.
Clarytia — verifiable internal-knowledge AI
My own product · designed, built and audited solo
A multi-tenant RAG platform that turns a company's own documents into an assistant that answers with the source, the page and a confidence tier — and says "I don't know" rather than improvising. Database-per-tenant isolation, so "delete everything about this customer" is a DROP, not a query I have to pray covers every table. Five ranking lanes fused by Reciprocal Rank Fusion in a single SQL query — no external search service, no extra network hop. Access control is enforced inside the retrieval path, not as a filter afterwards. And it does something most knowledge tools don't: when it genuinely can't answer, that becomes a clustered, named knowledge gap — telling you what your documentation is missing, ranked by how many distinct people hit it.
Highlights: 2,814 automated tests at >90% coverage · 37 architecture decision records · 105 API endpoints · zero leaks across a generative red team gated at every deploy · built in 5 months, single author.
Self-service platform for AI SRE agents
Enterprise engagement · specifics under NDA
A platform that provisions a team-scoped incident-response agent — its integrations, its permissions and its behaviour — from a single block of configuration. Onboarding a team is a merge request, not a project. The part I'd argue hardest for: the agent's playbooks and standing instructions ship as versioned packages pinned per agent, so changing how an agent behaves is a reviewed diff with an approver — not a paste into a console text box nobody can audit or roll back. Every integration is read-only by construction: the agent recommends, humans act.
The bet underneath it: what you control is not the model — it's the model's context and its instructions. The platform operates zero models of its own, on purpose.
Shared CI/CD delivery platform
Enterprise engagement · specifics under NDA
Not a pipeline — a delivery platform. A library of reusable CI/CD components (install, lint, test, build, deploy) that any repository in the organization consumes in three lines of config, with three consumer repositories running on it in production. Branch-routed deployment to per-team sandboxes, DORA metrics instrumented end to end, and a performance refactor that came out of measurement rather than instinct: the quality gate moved downstream, because the build never read lint's output — lint blocks publishing, not compiling.
Highlights: −52% pipeline wall clock · −54% runner time · −62% jobs per pipeline — measured p50 over a 14-day window, not a lucky run.

Work marked under NDA is described by its engineering patterns and outcomes only. Client estates, infrastructure topology, vendor terms and cost figures stay where they belong.

II Field notes
Jul '26 The model ships in your browser EN
5 min

The winning classifier is 1.3 MB, so it runs in the browser — no server, $0 to serve, and bank data that never leaves the device. Why where a model runs decides more than which model does, and the $3,024 a year a dedicated GPU costs to be the less accurate option.

Jul '26 The transformer wasn't worth it EN
5 min

I fine-tuned DistilBERT against a linear model. On clean text McNemar returned p=1.00 — a statistical tie, which meant the benchmark had stopped measuring. So I broke it with realistic noise, and the 356×-smaller model won. Redundancy beat sophistication.

Jun '26 When classical wins EN
4 min

I multiplied the training data by 7.4× and the F1 score moved four hundredths of a point. A controlled NLP benchmark on what actually limits a problem — and the cheapest model that fits beating the impressive one that doesn't earn its cost.

Jun '26 A jailbreak is a regression, not a surprise EN
5 min

Most AI safety in production is one untested sentence in a system prompt. What changed when I started treating every attack that worked — fictional-framing, instruction-override, injection — as a regression test that runs forever. 442 cases, zero through.

Jun '26 Why "deletable" is the most important word in LLM systems EN
6 min

You can delete the document. Its embeddings, cached answers, and summaries stay behind. The four layers of deletability, the architecture call that makes "delete everything" one line, and the cache that outlived a tenant I thought I'd erased.

May '26 Prompts deserve migrations, not vibes EN
5 min

Schema migrations have versioning, rollback, and a paper trail. Most prompts in production don't. What changed for me when I started treating them the same way, and where it broke first.

III Research
Comparative NLP for transaction classification
Master's thesis · Universitat de Barcelona (OBS) · defense Sep 2026
Comparative evaluation of four NLP approaches for automatic bank-transaction categorization — from classical baselines (TF-IDF + SVM, XGBoost) and embedding-based neural networks to transformer fine-tuning (DistilBERT), judged on accuracy, robustness to noisy text, statistical significance, and total cost of ownership. The linear model won: it ties the transformer on clean text, beats it under noise, and ships as a 1.3 MB ONNX model that runs in the browser. Read the field notes →
IV Speaking
Cursor + MCP — when your IDE knows your stack
Internal tech talk · Recording available
2026.02
V Workshop

Side builds. Smaller in scope than the work above, kept here because the same disciplines show up at any size.

Cadence
A local-first planner that marries GTD with time blocking. Built because every productivity app either fights your method or assumes you don't have one yet. Works offline, syncs across devices via Realtime, ⌘K does everything.
Next.js · Supabase · TypeScript · cadence.carloshdez.com
Fitness Dashboard
A personal training and body-composition tracker — split routine, recomposition goals, observable progress. The dashboard I wanted but couldn't find as an app.
React · Tailwind · personal
VI About

I'm Head of AI Platform Engineering in El Salvador. I work from the same desk where I started in cloud infrastructure eight years ago. The systems have grown, the teams behind them too — but the principles haven't. Only the layer I apply them to.

I care about systems you can operate, not just demo. About prompts that fail loudly. About observability that survives the third on-call rotation. About cost lines that don't blow up the first time a feature gets traction.

Outside of paid work, I build small tools for my own life — usually with the same disciplines, because I don't know how to build software any other way.