AI engineer — production agents inside two companies I own
Medellín, Colombia
Not a résumé. This is the work.
I build agents that take orders in live businesses
My agents serve real customers: 33 Tierra Querida locations, 63,357 orders, COP 3,308 million. If a provider goes down, they keep answering. If something breaks, I know why. And a person steps in when needed.
Agents · Tool-calling · MCP · RAG · Vector DBs · LLM tracing · TypeScript · NestJS
Grab a letter and throw it. Wherever it hits, the paper tears open and the print underneath shows.
This poster is interactive: each headline letter can be dragged and thrown at the paper. Every hit rips the sheet and uncovers the words printed underneath, while the page content stays the same.
The work · four pieces · two companies · one harness
- 01Ordering over WhatsAppPÍDELOA conversational agent runs the business chat: it builds the order, files it, sends the menu image, the location and the hours, and hands off to a person on four defined triggers. A separate administrative channel is read-only — live orders, business report, financial breakdown — and is barred from taking orders. Prompts live in a versioned CMS, draft to published to archived, and change without a deploy.33 locations · 63,357 orders · 0% commission per sale
- 02Government softwareTramoBuilding permits in production with the Municipality of Marinilla: filings, drawings, construction resolutions, work in the public right-of-way, a public lookup, and archiving. Six fronts in one case file, with its status in plain sight and its deadlines counted. Staff stopped chasing paper and retyping the same values into every document; the municipality measures filing at half the time and reports fewer complaints. Inside the case file there is a RAG assistant with a vector database, still experimental: not yet a feature delivered to citizens.−50% filing time · 6 procedures in one system · 1 municipality
- 03Money by chatCh4t.ai FinanceA WhatsApp agent handles transactions, transfers, budgets, debts and savings goals through 18 tools of its own. Alongside it, an MCP server I built exposes 25 tools behind hybrid auth. The agent's system prompt is assembled in five layers, and the agent writes, updates and deletes its own memory in plain text.18 tools · 25 via MCP · Whisper · 5-layer prompt
- 04How it gets builtThe harnessI direct Claude Code subagents in phases, under structured-output contracts, with adversarial critics tearing into each block and guards that break the build the moment something leaves it. That method is what holds up the agents taking orders for 33 locations in production and the permitting software running for the Municipality of Marinilla at the same time.Two companies in production · adversarial critique · guards that break the build
Samuel Arbeláez
The name behind the work
- 01
I'm Samuel Arbeláez, an AI and agent engineer based in Medellín, Colombia. I founded and run two software companies of my own, Ch4t.ai and Tramo. I have been shipping since 2022.
- 02
I design the agent systems behind PÍDELO and Ch4t.ai Finance: the tool-calling loop, the versioned prompts, the Redis circuit breaker, the Langfuse tracing. At Tramo I lead the urban permitting software running in production for the city of Marinilla.
- 03
Collaborators work alongside me, and changes go through review before they ship. What backs the work is not how much code I write: it is a system of mine in production that has already billed COP 3,308 million across 33 locations.
AGENTS IN PRODUCTION
The order lands on its own, and nobody retypes it
The PÍDELO agent runs the restaurant's WhatsApp end to end: it reads the message, checks the place is open, builds the order and commits it. Nobody retypes it afterwards. It works no shift — it answers at two in the morning the same as at the dinner rush — and it never adds anything the customer did not ask for, which is why the business leaves it taking orders unwatched. When something falls outside the script it hands the chat to a person, for four defined reasons, not at the model's discretion.
- Orders the agent closes
- 100%
- All 61,839 came in, were built and committed without anyone transcribing them.
- Median reply time
- 5.8 s
- At seven in the evening too, when 34,955 replies land within the hour.
- Commission per sale
- 0%
- The order lands in the business's own WhatsApp, not on somebody else's platform.
- Complaints, per Tierra Querida
- −50%
- The client's own figure: measured by their operation, not by our database.
Hey, are you still open? I'd like two burgers and fries.
- 01sendScheduleAnswers the hours questionChecks the business hours and confirms they are still taking orders.
- 02fetchKnowledgePackagePulls menu and hoursHours check out, and both items are on the live menu.
- 03prepareOrderBuilds the orderTwo burgers with fries, itemized and ready to confirm.
- 04createOrderWrites the real orderLands in the business WhatsApp. No commission on the sale.
createOrder
You're all set: two burgers with fries. It's already in the restaurant's WhatsApp and they'll confirm right here. Need the address?
These four tool names come straight from the production code. Nothing here was drawn for the animation.
CONTEXT ENGINEERING
Context does the work size would
A small model with precise instructions, the domain knowledge loaded into its context and a harness holding it in place performs like a frontier model inside that domain, and costs a fraction. That is how this system runs: 3.73 billion tokens and 321.2 thousand AI messages in production, all served by open models.
- 01
Precise instructions
Prompts are versioned like content instead of typed into the code, and every output has a structured contract that is validated before anything downstream uses it. A small model fails on ambiguity long before it fails on capability: almost everything that looks like a model ceiling is an instruction that allowed two readings.
- 02
The context it needs, not the context that fits
Retrieval and knowledge packs assembled per case: the model does not have to know the catalog, it has to have the catalog in front of it at the exact moment it answers. Filling the window is not informing it. What decides the answer goes in, and the rest stays out, where it would only add cost and noise.
- 03
The harness
Tools with contracts, escalation to a human on a fixed list of reasons, and guards that check the output before a customer ever sees it. Capability the model does not supply, the structure around it does: the turn does not depend on the model being right every time, it depends on every wrong path having a planned exit.
- 04
Token economy
The stable prefix is cached, every task goes to the smallest model that can close it, and a fallback chain keeps resilience from being something you buy with a bigger bill. What gets optimized is the spend per turn, not the invoice at the end of the month: the saving is the consequence of deciding well, not a cut.
Frontier model, no caching, no routing
Every task against the same large model, with the whole prompt paid for again on each turn.
Monthly cost$2,425
Times more expensive11.8×
Frontier model with 80% of the prefix cached
Same model, but the part of the prompt that never changes bills at the cache price.
Monthly cost$940
Times more expensive4.6×
With context engineering
Instructions, knowledge, harness and routing: each turn spends where it counts and nowhere else.
Monthly cost$205
Times more expensivebaseline
All three rows move exactly the same tokens —1.65 billion in and 36.3 million out— and the only thing that changes is how they get spent. The table is also short on purpose: a genuinely naive flow would burn more tokens too, because nobody trims its context or builds it knowledge packs, so the real gap is wider than the one shown here. Pointing at where your own comparison limps is what makes the rest of it worth believing.
Production data, August 23, 2026. Measured usage runs from July 24 to August 23, 2026. The price basis for the first two rows is GPT-5, checked that same day.
AI, PART BY PART
A prompt is not a product
Shipping an agent means owning the whole machine: retrieval, tool use, guardrails, failover, queues, cost ceilings, traces. I have built every one of those layers, not just the part that talks to the customer.
- 01
Agents and orchestration
Models that pick tools, carry context across turns, and know when to hand the chat to a person.
- Tool-calling
- Multi-agent orchestration
- MCP (Model Context Protocol)
- Agent memory
- Structured output
- Human escalation
- 02
Retrieval and data
Grounding replies in the client's own catalog, documents, and records instead of the model's guesses.
- RAG
- Vector databases
- Embeddings
- Semantic search
- Knowledge bases
- Fine-tuning
- 03
Reliability
What stands between a provider outage and a customer left staring at silence.
- Guardrails
- Agent evaluation
- Multi-model fallback
- Circuit breaker
- Zod schema validation
- Retries and recovery
- 04
Keeping it running
Knowing the price, the latency, and the trace behind every reply once real users are on the system.
- Observability and tracing
- Cost and token budgets
- Latency and concurrency
- Queues and workers (BullMQ)
- Deploys and environments
- Voice with Whisper
- 05
Architecture and patterns
Decisions that survive year two: clear boundaries, an explicit domain, and guards that break the build.
- Clean architecture
- Domain-Driven Design
- Strategy pattern
- Circuit breaker
- Queues and workers
- Architecture guards
IN PRODUCTION WITH A MUNICIPALITY
A municipality that files in half the time
The Municipality of Marinilla, in Antioquia, runs its building permits on Tramo. The case file stopped living scattered across folders, inboxes and desks: it sits in one place now, with its status in plain sight and its deadlines counted. Staff stopped chasing paper and retyping the same values into every document. The municipality measures filing at half the time, and reports fewer complaints and better standing with the public. Inside the case file there is a RAG assistant with a vector database, still experimental: it is not a feature delivered to citizens.
Tramo
- Filing time
- −50%
- Procedures in one system
- 6
NestJSFastifyTypeORMNext.js
Read the caseSEO FOR AI ENGINES
When people stop searching, will the answer name you?
People are done scrolling a list of blue links. They ask a model and take the answer it gives. What decides that answer is not your rank in a list of links, it is whether the model can find you, understand you, and quote you correctly. That work has a name — generative SEO, GEO, AEO — and it runs on structured data, not repeated keywords.
Let the model find you
A crawler that never runs JavaScript sees only what is already in the HTML. So the content ships prerendered, with a sitemap, and each language branch indexed on its own.
Let it understand you
JSON-LD for the person, the companies, the site, the article, and the breadcrumbs hands a model labeled facts instead of prose it has to guess at. The writing follows: closed claims, no vague promises.
Get quoted, not invented
A model fills whatever gap you leave. Give every fact one source, one date, and one closed wording, and the generated answer repeats what you actually published instead of a plausible fake.
Measure it, or it's a guess
I ask the models what a client would ask, then check what they cite, what they skip, and what they make up. Without that log there is no strategy, only opinion and hope.
This site is the proof: JSON-LD, hreflang across both language branches, a full sitemap, and prerendered HTML that reads without running a line.
BUSINESS PROOF
Four months of real money
- Through the system
- 3,308million pesos
- billed order by order, from 27 April to 23 August 2026. COP 3,308,455,136 exactly.
- Never went to commission
- 827million pesos
- is what those same sales would have cost at the 25% a delivery platform charges in Colombia. At 30%, up to 992. Commission here is 0%.
- Orders processed
- 63,357
- cancellations excluded
- Through the agent
- 97.6%
- 61,839 came in through conversation, not over a counter
- Customers served
- 55,120
- distinct people with a history in the system
- Locations in production
- 33
- active, running on the same installation
Figures read from the production database on 23 August 2026. The commission is a comparison, not money collected: not every one of those orders would have gone through a platform, and that distinction is part of the number.
Field notes
Three things production taught me the hard way
I don't publish often. Three pieces, each one earned: what it takes to build an agent that survives production traffic, the architecture guards that break the build and hold the line when nobody is watching, and what building software for a city government teaches you.
Frequently asked questions
What people ask before they write to me
The same questions come up on every first call. They are answered here, with numbers and without hedging, so that nobody has to spend the call finding them out.
Samuel Arbeláez, who goes by arbelxez, is an AI and agent engineer based in Medellín, Colombia. He founded and runs two software companies: Ch4t.ai, which ships PÍDELO and Ch4t.ai Finance, and Tramo, whose building-permit system is in production with the Municipality of Marinilla. He has been building since 2022.
A chatbot returns text. An agent takes actions that have consequences. The PÍDELO WhatsApp agent has eight registered tools — it builds the order, creates it, sends the menu, the location and the hours, reads the knowledge base and hands off to a person — and it decides which to call and when to stop. That decision is the engineering.
One is doing it right now at real counters in Colombia. The PÍDELO agent serves the customer over WhatsApp, assembles the order and drops it into the business chat with 0% commission on the sale. It also transcribes voice notes with Whisper, because plenty of people would rather talk than type.
Knowing when to quit is a feature, not a failure. The PÍDELO agent hands off to a person on four defined triggers: an explicit request for a human, a repeated complaint, visible frustration, and anything outside its scope. An agent that never steps aside ends up costing you the customer it was meant to serve.
MCP, the Model Context Protocol, lets a system expose its capabilities as a server that any model can connect to, instead of locking them inside one product. Ch4t.ai Finance runs its own MCP server with 25 tools behind hybrid auth, separate from the 18 tools its WhatsApp agent uses.
When the right answer lives in documents the model never saw in training and that keep changing: regulations, case files, contracts. Tramo has an assistant of that kind inside the municipal case file, with retrieval and a vector store, and it is still experimental — a made-up answer about a construction ruling is a legal problem, not a rendering bug.
With the same tools as any distributed system, pointed at the model. PÍDELO runs a per-model circuit breaker built on Redis with atomic Lua scripts, a multi-provider fallback chain, a budget shared across workers with separate request and token limits, and Langfuse tracing to watch cost and per-tool error rates.
It does, slowly and with the brake on. The Tramo system handles real building permits for the Municipality of Marinilla — 138 domain entities across roughly 40 modules — and its document-retrieval assistant is still experimental. In a legal filing, what gets published carries legal weight.
It is the work of getting a model to find, understand and correctly quote what you publish when someone asks it a question, instead of competing for a slot in a list of links. It runs on prerendered content, structured data that declares entities rather than paragraphs, and closed statements that can be quoted without rebuilding context.
TypeScript end to end: NestJS and Fastify on the backend, Next.js and React on the front, PostgreSQL or DynamoDB depending on the case, Redis and BullMQ for queues and rate control, Docker and AWS to run it. For agents: the Vercel AI SDK over OpenRouter, Zod for validation, Langfuse for tracing.
Write to hola@arbelxez.com. He works from Medellín, Colombia, in Spanish and English, and he answers himself — no form, no account manager.
Get in touch
Bring me the part of the system that keeps breaking
I take on freelance work: agent engineering, applied AI, product meant to run unattended. Write me about what you are building, or follow along while I build mine.