Hello, world — why this site exists
Who I am, what I build, and what I'll write about here: agentic systems, RAG, and shipping LLM software to production.
Agentic systems, RAG, evals, and what it actually takes to ship LLM software.
Who I am, what I build, and what I'll write about here: agentic systems, RAG, and shipping LLM software to production.
Prompt wording is a rounding error next to what the model can see and when. The discipline that replaced prompt engineering, and how we practice it.
Bring-your-own-key looked like a commercial handicap. It turned out to be the architecture decision that makes enterprise conversations short.
A chatbot that gets injected says something embarrassing. An agent that gets injected does something. Defense notes from systems with tools.
Building retrieval that works in Urdu, Arabic, and Tagalog as well as it does in English. Spoiler: the embeddings were the least of it.
Building a multimodal context engine — scanned PDFs, screenshots, charts, audio — and why 'just extract the text' is where pipelines go to die.
Before the Model Context Protocol, every agent-to-tool integration was a bespoke adapter. Notes from moving production systems onto MCP.
We run both plain RAG and GraphRAG in production. A field guide to which questions actually need the graph — and which just need better chunking.
Approval gates that people rubber-stamp are worse than no gates at all. Designing HITL that survives contact with busy humans.
Model routing, caching, and context compression — in the order they paid off. No heroics, mostly plumbing.
We gate every prompt and retrieval change behind an eval suite, the same way we gate code behind tests. Here's the setup, and what it caught.
Chunking strategies and vector databases are the easy 20%. The hard 80% is access control, stale documents, and users who ask questions no document answers.
The industry keeps calling everything an agent. Most production systems I've shipped are workflows with LLM steps — and that's usually the right call.