Picks requirements, not vendors.
The router outputs what the task needs (repository access, tests, terminal, risk level) and a resolver maps that to an available worker. Swapping a model or agent does not change the routing logic.
Two hands-on builds from 2026. A multi-agent orchestrator that routes each request to the right agent, pauses for human approval before risky actions and checks the output before it is returned. And an outbound voice agent that holds a real phone conversation in Singapore English and Mandarin.
A local service that takes a request, decides what kind of work it is, and hands it to the right worker: a direct model call, a coding agent, or a general tool-using agent. The design principle is that the model is not the permission system. Rules in code decide what may run.
The router outputs what the task needs (repository access, tests, terminal, risk level) and a resolver maps that to an available worker. Swapping a model or agent does not change the routing logic.
If no worker has the required capability, or approval has not been given, the run is blocked and logged rather than attempted with a weaker tool. Policy comes from server configuration, and a request cannot switch its own safeguards off.
Write, destructive, sensitive or financial requests stop for a human decision. A permission check runs before any local agent process starts.
A gate is only useful if it catches bad output without blocking good output, so I built a labelled set of 30 test cases and scored the gate against it. Each case states what should happen and why.
| Measure | New gate | Rules it replaced |
|---|---|---|
| Planted defects caught (empty, placeholder, truncated, refusal) | 12 of 12 | 3 of 12 |
| Good outputs wrongly flagged | 0 of 12 | 0 of 12 |
| Defects caught for the wrong reason | 0 | n/a |
A proof of concept for an AI agent that places a real phone call and holds a natural conversation. Built over a week in October 2026 on a voice platform, with the conversation design, provider choices and call handling done in my own code.
The agent states it is an AI at the start of the call, never denies it when asked, and gives a recording notice when the call is recorded.
Callers can cut in mid-sentence and the agent stops and answers. Tuning fixed repeated greetings, over-long replies and awkward hang-ups, which are the details that make a call feel human or robotic.
The agent understands mixed English and Chinese and can reply in Mandarin with the same voice. Voice, listening model and AI model are each swappable through configuration.
An agent cannot answer well if it mishears the caller. Rather than default to the platform's standard speech model, I built a small benchmark of 15 recorded clips across Singapore English, Singlish, Mandarin and mixed speech, and scored each provider.
| Provider | Overall error | Singlish | Key terms caught |
|---|---|---|---|
| MERaLiON-3 (A*STAR) | 3% | 9% | 96% |
| ElevenLabs Scribe v2 | 6% | 9% | 96% |
| Gladia Solaria | 14% | 35% | 72% |
15 clips gives a direction, not a verdict. These are file transcription results; live-call behaviour was checked separately on real test calls.
“Getting an agent to act is easy. The real work is deciding when it should not.”
Capabilities shown through design decisions, tests and measured results across both builds.
Approval gates, AI disclosure and honest limits are product decisions, made up front.
Labelled test sets and provider benchmarks drive decisions, with the limits of each test stated.
Routing, tool calling, coding agents, speech, voice and telephony providers combined into working systems.
Hundreds of automated tests and real-phone testing, with each change verified before it is relied on.