AI agent development, including voice agents
An agent is a loop with tools, and the interesting engineering is entirely in what happens when the loop goes wrong. Agents that work in a demo tend to fail in production for boring reasons: a tool returns something unexpected, the context window fills, a retry fires twice against something that should only happen once. The difference between a novelty and a feature is how carefully those cases were handled.
Book a strategy callWhat you get
- Tool definitions written so the model can actually use them correctly — the single biggest determinant of whether an agent works
- State and memory design that fits the task, without stuffing conversation history until the context window bursts
- Guardrails on anything irreversible, so an agent cannot send, spend or delete without the check you decided on
- Voice pipelines where they apply — turn-taking, interruption handling, and latency budgets that keep a conversation feeling live
- Evals over multi-step traces, not just single responses, because agents fail across steps rather than in them
- Tracing and observability, so a failed run can be read after the fact instead of reproduced by guesswork
How it runs
- 01
Bound the job
Agents work when the task is narrow and the tools are few. The first decision is what this agent will refuse to do.
- 02
Design the tools
Each tool gets a clear contract, honest error messages and a name the model will not misuse. Most agent failures start here.
- 03
Add the guardrails
Confirmation on irreversible actions, idempotency on retries, and hard limits on loops and spend.
- 04
Trace and iterate
Full traces on every run, evals across whole trajectories, and tuning against the runs that actually failed.
Questions
- What is an AI agent, practically?
- A language model in a loop with a set of tools it can call, deciding which to use and when. The value is in doing multi-step work unattended; the risk is that it does multi-step work unattended, which is why the guardrails matter more than the prompt.
- What does a voice AI agent need that a text one does not?
- A latency budget, mostly. Speech-to-text, model inference and text-to-speech all add delay, and past roughly a second the conversation stops feeling live. It also needs turn-taking and interruption handling, which have no equivalent in a text interface.
- How do you keep an agent from doing something irreversible?
- By making irreversible actions structurally require a confirmation step rather than trusting the prompt to hold. Anything that sends, charges, deletes or publishes goes behind an explicit check, and retries are made idempotent so a repeat call cannot double-fire.
- How do you test an agent?
- On whole trajectories rather than single turns. A run can produce a good final answer through a broken path, and that path will break differently tomorrow — so the traces are the unit of evaluation.