We build agents that do work rather than describe it — reading your systems,
calling tools, and carrying a process to completion. Every action runs under a scoped
identity, and anything irreversible stops for a person first.
ISO 27001 certified
Every run replayable
Under 3 minutes to first reply
The agent loop
What AI agent development is
AI agent development builds software that plans multi-step work and takes actions in your
systems through tools and APIs. Unlike a chatbot, an agent writes to records and triggers
processes, so every run carries an audit trail and a human approval gate on irreversible
steps.
153+Projects Delivered
25Engineers On Staff
24–48hSOW To Discovery Sprint
100%Code & IP Assigned To You
The gap between an agent demo and an agent in production
Agent demos are easy. A model calls three tools in a happy path and the room applauds.
Everything that makes production hard is absent from that demo, and here is what it is.
The agent inherited an admin account
The fastest way to get a demo working is to give the agent the same credentials a
senior operations person has. It is also the fastest way to create an internet-reachable
component with unlimited write access to your CRM. Agents need their own scoped service
identity per tool, which is slower to set up and the only defensible design.
It looped, and nobody had set a budget
A tool returns an error the model does not understand, so it tries again with slightly
different arguments, then again. Without a hard step budget and a cost cap per run,
this continues until someone notices the bill or the rate limit. Every agent we ship
has both, enforced outside the model.
Something went wrong and nobody could say why
A record was updated incorrectly three weeks ago. Which step did that, what did the
model see at the time, and what would it do now? If the answer requires guessing, the
agent is not auditable and should not have write access. Replayable run logs are not a
nice-to-have, they are the precondition for letting the thing act at all.
Someone built a committee of agents
Multi-agent architectures are appealing on a whiteboard and unpleasant in production.
Context degrades at every handoff, failures become non-deterministic, and debugging
means reconstructing a conversation between four models. One well-scoped agent with
good tools beats five agents talking to each other almost every time.
It was an agent when a workflow would have done
This is the most expensive mistake on the list, and the least discussed. If the path
through a process is the same every time, a deterministic
workflow automation
will run it faster, cheaper and more predictably than any agent. Agents earn their
complexity where the route genuinely varies per case and a person would otherwise have
to decide. We will tell you when you are in the first category, even though the second
is the more interesting engagement.
Capabilities
What custom AI agents are actually made of
The model is roughly ten per cent of the system. These are the other ninety.
A tool layer you control
The agent never receives your credentials. It receives the ability to call functions we
wrote: typed inputs, validated arguments, a scoped service identity per tool, and its own
rate limit. A tool that reads order status and a tool that cancels an order are separate
things with separate permissions, even though a model would happily treat them as one
capability.
Where a system exposes no API, the tool is backed by an RPA routine or a database
integration instead — that connection work sits under
AI integration services.
State outside the model
A run's state lives in a database, not in a growing conversation the model has to keep
re-reading. That makes runs pausable, resumable and replayable, keeps token cost flat as
a run gets longer, and means an approval that takes two days does not require holding a
session open for two days.
Reversibility classification
Every tool is labelled reversible or not before the agent is allowed to call it. That
single classification decides more about the safety of the system than any prompt
instruction ever will.
Full run replay
Model input, tool called, arguments, result and decision, recorded per step. You can
reconstruct any run months later, which is what makes an incident investigable instead
of merely regrettable.
Budgets and a kill switch
A hard step limit, a cost ceiling per run, and a switch that halts every in-flight run
immediately. All enforced by the orchestrator, so a confused model cannot reason its way
past them.
Prompt injection is an access-control problem
An agent that reads an inbox will eventually read an email written specifically to
instruct it. You cannot prompt your way out of this. The defence is architectural:
retrieved and received content is treated as data rather than instruction, tools stay
scoped so a successful injection reaches a small blast radius, and irreversible actions
still stop at a person regardless of how convincing the request was.
Advance the run one step at a time. Read-only steps proceed on their own. At step five the
agent wants to schedule a payment, and the run stops until somebody decides.
→ irreversible · run paused · awaiting human approval
done
Approved by finance.lead · payment scheduled for 480 units
→ variance of 20 raised with NORTH-STEEL · run logged · replay available
halted
Rejected by finance.lead · no payment scheduled
→ routed to AP queue with extraction, PO record and variance note attached
Steps one to four are read-only, so they run without asking. Step five writes to a payment
system and cannot be undone with a click, so it stops. That boundary is set during design,
not decided by the model at runtime, and it is the difference between an agent you can
deploy and one you can only demonstrate.
Build sequence
How we build an agent that can be trusted with write access
Five steps, in this order. It follows the same delivery shape as the rest of the
AI and automation practice,
with tool design standing in for process mapping.
1
Define the goal and the boundary
What a successful run looks like, what the agent is explicitly not permitted to attempt,
and how the result gets verified. That last one eliminates more candidate use cases than
anything else: if nobody can check whether the agent got it right, it does not go to
production regardless of how impressive the demo was.
2
Design the tool layer
Every capability becomes a documented function with typed inputs, validated arguments,
a scoped service identity and its own rate limit. This is where most of the engineering
time goes, and it is the part that determines whether the agent is safe. The model gets
no credentials, only the tools we chose to give it.
3
Build the loop as an explicit state machine
Plan, act, observe, decide — with state held in a database rather than inside a
growing conversation. A run can be paused for a two-day approval and resumed exactly
where it stopped, and token cost stays flat instead of climbing with every turn.
4
Place the approval gates
Each tool is classified reversible or irreversible. Irreversible calls route through a
human confirmation recorded against an identity before the action executes. Where the
organisation is comfortable, some gates convert to act-and-notify with a reversal window
instead, which is a policy decision rather than a technical one.
5
Instrument, evaluate and hand over
Per-run logging with full replay, a step budget, a cost ceiling, a kill switch, and a
fixed set of scenarios that must pass before any model or prompt change ships. Your team
receives the runbook, the dashboards and the rollback path, plus 100% of the source and
IP on final approval.
What we build agents with
Grouped by the job each layer does. Selection depends on where your data may live and what
you already run in production.
Reasoning
Anthropic Claude for long multi-step plans
Azure OpenAI where tenancy and region matter
Google Vertex AI and AWS Bedrock
Smaller local models for routing and classification steps
Agent runtime
LangGraph for explicit, inspectable state machines
Model Context Protocol for standardised tool access
PostgreSQL as the durable run store
Redis and queue workers for pause, resume and retry
Tools and reach
REST and GraphQL clients with typed schemas
n8n for the deterministic sections of a process
UiPath or Playwright robots where no API exists
Change-data-capture for systems that emit no events
Control and observability
OpenTelemetry spans per agent step
Grafana dashboards for cost, latency and gate volume
HashiCorp Vault or AWS Secrets Manager per tool identity
Scenario evaluation harness running in CI
Agents frequently share infrastructure with the rest of your automation estate, so the
orchestration and deployment decisions overlap heavily with
workflow automation
and with the architecture work our
IT consulting team
does before anything is provisioned.
Four shapes
Which kind of agent are you actually asking for?
These four get described with the same word and behave nothing alike. Each has a different
failure mode and a different permission profile.
Assistant
Sits alongside a person and does the fetching and drafting. It looks things up across
systems, prepares a reply or a record, and hands it over for a human to send or
commit. Nothing it produces takes effect on its own.
This is the cheapest agent to make safe and the easiest to get adopted, because the
person keeps the pen. If you are unsure where to start, start here. It also overlaps
heavily with grounded
conversational AI,
and the two are often the same build.
Permission profile
Read broadly, write nothing
Failure mode
A confident wrong draft that a rushed person sends
Good fit when
The judgement should stay human but the gathering should not
Process agent
Owns a business process end to end, with write access inside defined limits. The
invoice reconciliation run above is a process agent: it reads several systems, forms
a judgement about a variance, and either completes or stops for approval depending on
what it found.
This is where the real operational value sits, and it is also where the permission
engineering has to be strongest. Most of our agent work is this shape, often taking
over the exception-handling half of an existing deterministic
workflow automation.
Permission profile
Scoped write, gated on irreversible actions
Failure mode
Silent wrong writes when tolerance rules were never defined
Good fit when
The path varies per case but the outcome is verifiable
Research agent
Given a question, it gathers from many sources, cross-checks, and produces a written
answer with references. Vendor due diligence, competitor monitoring, tender document
analysis and claim substantiation all fit this shape.
Read-only, so it is safe by construction, but the output is only as good as the
verification you apply to it. We require citations on every claim and treat an
uncited assertion as a defect rather than a stylistic preference.
Permission profile
Read-only, but broad reach
Failure mode
A fluent report that quietly cites a weak or misread source
Good fit when
Gathering is slow and a person will still review the conclusion
Multi-agent system
Several specialised agents coordinating, usually with a router deciding who handles
what. Genuinely useful when the sub-tasks need different tools, different models or
different permission levels — a triage agent that can read everything routing to
a payments agent that can write to one system.
We will say plainly that most organisations asking for this do not need it. Context
degrades at every handoff and debugging means reconstructing a conversation between
models. Reach for it when a single agent's tool list has become incoherent, not because
the architecture diagram looks better.
Permission profile
Different per agent, which is the main reason to use it
Failure mode
Context lost at a handoff, producing confidently wrong downstream work
Good fit when
Sub-tasks need genuinely different permissions or tooling
How much autonomy do you actually want?
Autonomy is a dial, not a switch, and it is set per tool rather than per agent. Move it and
watch which actions cross from gated to automatic.
Set per tool, agreed with the process owner.
Level 1 — Read only
The agent queries systems and reports. It cannot change anything, so the worst
outcome is a wrong summary. Nearly every agent should start here for its first
fortnight in production, running silently alongside the humans doing the work.
The agent prepares the complete action — the email, the journal entry, the
status update — and a person commits it. Adoption is usually high here because
the work arrives finished rather than as a suggestion, and the person keeps control.
Automatic
Everything from Level 1, plus preparing the write payload
Still human
Every commit, one click each
Level 3 — Bounded write
The agent writes on its own inside explicit limits: whitelisted record types,
quantity or value tolerances, defined counterparties. Anything outside the boundary
escalates. This is where most process agents settle, and defining the boundary is a
finance and operations conversation rather than an engineering one.
Automatic
In-tolerance updates, standard-case completions, routine status changes
Still human
Anything out of tolerance, and anything involving money leaving the business
Level 4 — Act and notify
The agent acts immediately and tells someone, with a defined window in which the
action can be reversed. This trades approval latency for reversal capability, which
only works where reversal is genuinely cheap. It is a good fit for internal
operations and a poor one for anything a customer sees straight away.
Automatic
Most writes, executed then announced
Still human
Actions with no reversal path, and anything legally binding
Level 5 — Autonomous within policy
No per-run approval. Risk is carried entirely by the policy, the logging and the
kill switch, which means all three have to be tested rather than documented. We
recommend this for a narrow band of high-volume low-value work, and we push back
when it is proposed for anything else.
Automatic
The full process, monitored in aggregate rather than per run
Still human
Setting the policy, reviewing the sample, and holding the kill switch
The same exception, before and after
A quantity variance on a supplier invoice, handled by people and then by a process agent
with a Level 3 boundary. Note where the human time moves rather than disappears.
Elapsed: about four working days · five handoffs
Day 1 · Invoice lands in a shared inbox
Waits for whoever is on AP duty to open it.
Day 1 · Keyed into the ledger by hand
Fields retyped from the PDF, with the usual transposition risk.
Day 2 · Someone notices the quantity does not match
Or does not notice, which is the more expensive branch.
Day 3 · Email to the warehouse to confirm receipt
Reply arrives whenever it arrives.
Day 4 · Finance lead approves the corrected amount
The only step that genuinely needed a decision.
Elapsed: minutes, plus one approval · one handoff
Minute 0 · Invoice arrives, agent picks it up
No queue, no duty roster.
Minute 1 · Fields extracted, PO and receipt read
Low-confidence fields route to a person instead of being guessed.
Minute 2 · Variance found and quantified
Checked against the tolerance rule, not against memory.
Minute 2 · Approval request to the finance lead
With the evidence attached. Still the only step needing a decision.
On approval · Payment scheduled, variance raised
Both actions logged and replayable.
The finance lead still approves. What went away was four days of waiting, the retyping, and
the branch where nobody spots the variance at all. That is the honest shape of the benefit,
and it is the shape we scope against — the same logic drives
document processing
engagements.
Where AI agents for business earn their keep
Four scenarios from sectors we work in. Each one has a varying path and a verifiable
outcome, which is the test. Profiles are anonymised.
Exception handling in freight operations
A regional operator's agent watches for shipments that miss a checkpoint, pulls the
carrier record and the customer's service terms, decides whether the delay breaches an
SLA, and either notifies proactively or escalates to the account owner. The path differs
per consignment, which is exactly when an agent beats a workflow.
The run demonstrated above, deployed in a manufacturing finance function. In-tolerance
invoices complete without a person; variances stop for approval with the evidence already
gathered. The volume of items reaching a human drops sharply while the decisions that
matter stay with the finance lead.
For a lender, a read-only agent assembles a complete onboarding case: documents gathered,
fields cross-checked against registries, missing items listed. It never approves anybody.
It removes the assembly work so an analyst spends their time on the judgement rather than
the collation.
A professional services firm runs a research agent over incoming tender documents. It
extracts every requirement, finds the closest previously written response, and drafts a
first pass with references to the source proposal. A partner still owns what gets
submitted.
These four get conflated constantly, and picking the wrong one is the most common reason an
automation programme costs more than it saves.
Comparison of chatbots, workflow automation, RPA bots and AI agents across five criteria.
Criterion
Chatbot
Workflow automation
RPA bot
AI agent
Decides the path
No, it answers
No, the path is fixed
No, the script is fixed
Yes, per case
Writes to systems
Rarely, and only on rails
Yes, deterministically
Yes, through the interface
Yes, within a permission boundary
Handles a case it has not seen
Escalates
Fails or halts
Breaks, often silently
Attempts a route, then escalates if it cannot
Predictability
High within scope
Total
Total until the interface changes
Bounded, not total — the honest trade
Use it when
People need answers
The steps never vary
There is no API to call
The route varies and the result is verifiable
In practice a working system usually contains three of these. An agent handles the varying
middle, a workflow carries the deterministic ends, and an
RPA bot
acts as the tool for whichever system refuses to expose an API. Designing that split is most
of the value in the first two weeks of an engagement.
What gets scoped alongside an agent
Agents sit on top of other things. These are the neighbouring parts of the
AI and automation practice
that usually appear in the same statement of work.
Agent front-ends and approval interfaces are built by the same team that handles our
custom web development
work, so the gate a finance lead clicks is a proper piece of software rather than a form
bolted onto a chat window. If you want to talk through a specific process,
send us the details
or read the
general help centre
first.
Clear Answers
AI agent development questions
The ten that come up in almost every first conversation about autonomous AI agents.
A chatbot answers. An agent decides on a sequence of actions, calls tools to carry them out, checks the result, and adjusts. The difference is not conversational quality, it is write access. An agent changes the state of your systems, which is why the engineering around permissions matters more than the model.
The tool layer the agent is allowed to call, the state machine that governs its plan-act-observe loop, the permission model that decides what runs automatically and what stops for approval, and the logging that lets you reconstruct any run. The reasoning model is a component, not the product.
Three things, in layers. Tools are scoped so the agent can only call what it needs, with its own service identity rather than a shared admin account. Irreversible actions stop at an approval gate. And every run has a step budget and a kill switch, so a loop cannot run indefinitely before anyone notices.
They work well on bounded, well-instrumented processes and poorly on open-ended ones. Reliability comes from narrowing scope rather than from a better model. We design agents as explicit state machines with a fixed tool set, which is far more predictable than letting a model plan freely and hoping.
It is several specialised agents coordinating on a task, usually with one routing work to the others. Most organisations do not need one. A single well-scoped agent with good tools beats a committee of agents passing context between themselves, and it is far easier to debug when something goes wrong.
By replaying the run. Every step records the model input, the tool called, the arguments, the result and the decision that followed. When output is wrong you can see exactly which step diverged, rather than inferring it. Agents built without this are effectively undebuggable in production.
Agent economics scale with steps and tokens rather than with seats, which is unfamiliar to most finance teams. A verbose agent that re-reads context on every turn can cost several times what a tightly scoped one does for the same work. We instrument per-run cost and set budget caps as a build requirement.
Anything with no way to verify the result, anything where a wrong action is expensive and hard to reverse, and anything that is already a clean deterministic rule. If a workflow tool or a script can do it, use that instead. Agents earn their complexity where the path genuinely varies per case.
Through a tool layer we build and control, not by handing the model your credentials. Each tool is a documented function with typed inputs, a scoped service identity and its own rate limit. Where a system has no API, an RPA bridge or a database integration becomes the tool instead.
A named person in your organisation, which is why we insist on defining that before build rather than after an incident. The system supports it with per-run logs tied to identities, approval records for every gated action, and a documented escalation path. Accountability is a design input, not a postmortem.
Tell us the process where every case is slightly different
That is where agents belong. We will map the tools it would need, the gates it would stop
at, and whether a workflow would do the job for less. Reply in under 3 minutes.