AI Agent Engineering

The Model Is Rarely the Hard Part

Anyone can wire a model up to answer questions. The engineering work — the part that decides whether an agent is trustworthy in production — is evaluation, testing against edge cases, monitoring after launch, and designing exactly where its decision boundaries sit. That's what this page is about.

The Core Claim

Design the Boundaries First, the Model Second

Two agents built on the exact same model can behave completely differently in production, because the model was never what determined their behaviour — the rules around it were. We start every build by defining what the agent is allowed to decide alone, what it must escalate, and what it must never do, before we finalise which model runs underneath.

Decision Boundaries, Written Down

What the agent can act on alone and what it must hand off is documented and testable — not something that lives only in a prompt and hopes for the best.

The Model Is Interchangeable

A well-designed boundary layer means the underlying model can change — or a provider can update or retire one — without rebuilding the agent's judgement from scratch.

Judged on Behaviour, Not a Spec Sheet

We evaluate a model against how it actually performs on your task, not a published benchmark score that may not reflect your specific inputs.

Before Launch

Evaluation and Testing, Not a Demo That Looked Good Once

A model that handles a friendly demo question well tells you very little about how it will behave on a messy, ambiguous, or adversarial real-world input. That gap is where testing work happens.

1

Write the Cases

Realistic inputs drawn from how the task actually happens, plus the edge cases most likely to break it — missing data, conflicting instructions, an unusual request.

2

Run Them Before Launch

Every case runs against the agent before a real customer or record does, and failures get fixed at the design level, not patched around individually.

3

Check the Boundary Holds

Specifically testing whether the agent escalates when it's supposed to — not just whether it gives a plausible-sounding answer.

4

Re-Test on Change

A changed prompt, a changed model version, or a changed integration gets run back through the same cases before it goes live again.

After Launch

Monitoring Is Part of the Build, Not an Afterthought

An agent that isn't watched after launch can drift quietly — handling more than it should as it grows confident on cases that look familiar, or escalating so often it stops saving anyone time. Both failure modes are hard to see from the outside unless someone is actually looking at what it did and why.

Every agent we build ships with logging of its actions and the reasoning behind them, reviewed on a set cadence, so problems get caught in a weekly review instead of a customer complaint.

See the Full Process

We Watch For

Escalation rates drifting up or down, repeated failures on a similar input, and any action outside the agent's documented boundary.

What Changes It

A pattern in the logs, a system the agent connects to changing shape, or a provider-side model update — each gets evaluated before it's rolled into the live agent.

On the Model Itself

Why We Stay Vendor-Neutral Here

We evaluate categories of strength — tool-use reliability, context handling, cost per call, how closely a model follows the boundaries we set — against your specific task, rather than defaulting to one provider or repeating a benchmark number that will be out of date by the time you read it.

Frequently Asked

Engineering Questions

Isn't the model the most important part of an agent?

Less than it seems from the outside. Most usable models today can produce a reasonable response to a reasonable prompt. What actually determines whether an agent is safe to put in front of a real customer or a real record is the design around it — what it's allowed to see, what it's allowed to do, and where it's required to stop and ask.

What does "testing an agent" actually involve?

Running it against a written set of realistic cases and deliberately awkward edge cases before it ever sees a real customer — ambiguous requests, missing information, conflicting instructions, and the inputs most likely to trigger an action it shouldn't take alone. We fix what fails there, not in production.

How do you decide what the agent should escalate?

By working backwards from consequence, not from what the model can technically attempt. High-stakes, irreversible, or ambiguous actions get a human checkpoint by default. Low-stakes, easily reversible, well-understood actions are where we let the agent act alone — and that boundary is documented, not implicit.

What happens after the agent goes live?

It's monitored, not left to run unattended. We log what it did and why, review a sample of its decisions on a regular cadence, and watch for the specific failure modes most agents drift into — quietly handling more than it should, or escalating so often it stops being useful.

Do you use one AI provider for every build?

No. We evaluate the model against the task — tool-use reliability, context handling, cost per call — case by case. See OpenAI Agent Development, Claude Agent Development and LangGraph Agent Development for how each fits into that evaluation.

See How This Applies to Your Task

Tell us what the agent needs to do and we'll walk through how we'd evaluate, test and monitor it — plainly, before you commit to anything.