AI Agent Development
a chatbot
- Where is my order?
- here is your tracking link
- answered, and that is the end of it
an agent
- Order 4821 is four days late.
- check the carrier status
- check what stock is left
- decide: refund or reship
- reshipped, customer told, ticket closed
Custom AI agent development for businesses in Sydney and across Australia. Agents that read your systems, decide what to do, and take the action. Built in TypeScript and Go, tested before they go live, and deployed wherever you want them to run.
I'm Thomas. I have built agents that triage support inboxes, pull structured data out of documents, answer staff questions from company files, and watch competitors on a schedule. If you are looking for an AI agent development company, I am one developer rather than a firm, which for work this size means faster decisions and nobody standing between you and the code.
What an AI agent actually is, and what it isn't
A chatbot answers. You ask it something, it produces a reply, and the exchange is over. Useful, cheap, and genuinely the right answer for a lot of problems.
An agent does. The difference is three things. It has tools: real access to your inbox, your database, an API, a file store. It loops, meaning it takes an action, looks at what came back, and uses that to decide the next one. And it decides when it's finished, rather than running a fixed number of steps someone wrote in advance.
That third property is what makes agents worth the extra engineering, and also what makes them harder to get right. A workflow where you already know every step in order doesn't need an agent. It needs automation, which is cheaper to build and more reliable to run. An agent earns its place when the next step genuinely depends on what the last one found.
The loop is the whole idea: call a tool, look at the result, decide whether that was enough. Everything else is engineering around making that loop safe.
Four agents that earn their keep
Most useful AI agents for business fall into one of these four shapes. Each one below includes the failure I designed around, because that is the part that decides whether an agent survives contact with real work.
Support ticket triage
Everything lands in one inbox, so a production outage sits next to a password reset until someone reads far enough down the list. The cost isn't the reading, it's that urgent things wait their turn.
- ticket arrives
- classify intent and severity
- route to the right queue
- draft a reply
- escalate if unsure
The failure mode I designed for
Wrong classification on an angry customer. The agent is built to escalate rather than guess whenever confidence is low or the message mentions money, legal action or churn. The failure mode is a human reading one extra ticket, not a bad automated reply.
Document extraction into a system of record
Invoices, purchase orders and forms arrive from dozens of suppliers, no two laid out the same way, and someone re-types them into Xero or a database. It's the single most common thing I get asked to remove.
- document arrives
- extract fields
- validate against known values
- write to the system
- queue anything doubtful
The failure mode I designed for
A confidently wrong number. Extraction is checked against things that are already known: supplier lists, expected totals, whether the line items add up. Anything that doesn't reconcile goes to a review queue instead of into the ledger.
Internal knowledge agent
The answer to a staff question exists somewhere: a policy document, a contract, an old email thread, a wiki nobody maintains. Finding it takes twenty minutes and interrupting a colleague takes two, so people interrupt the colleague.
- question asked
- search the document set
- read the candidates
- answer with citations
The failure mode I designed for
An answer that sounds right and isn't. Every answer carries a citation back to the source paragraph, and the agent is built to say it can't find the answer rather than assemble a plausible one from fragments.
Research and monitoring
Something outside the business needs watching: competitor pricing, tender listings, supplier catalogues, a regulator's announcements. It matters weekly and it never quite gets done.
- scheduled run
- check the sources
- diff against last time
- report only what changed
The failure mode I designed for
Alert fatigue. If it reports everything it becomes another feed nobody reads, so the design work is mostly in deciding what counts as a change worth telling you about.
How I build them
This is what agentic AI development actually involves, and it is the section most agency sites leave out. It is also the one that tells you whether someone has shipped an agent before or only demoed one.
Model selection, and why not the biggest
Most steps in a real agent are small: classify this, extract that, decide whether this looks finished. Those run perfectly well on a small, fast model, and the difference in latency is the difference between an agent that feels instant and one that feels like waiting. I reserve the large models for the steps that genuinely need judgement, and I'll happily run part of a pipeline on a local model when the data shouldn't leave the building at all.
Context engineering
Most agents that behave badly aren't badly prompted. They're badly supplied. The model is being asked to decide something while missing a fact it had no way to know, or drowning in twenty pages of context where two paragraphs mattered. Getting the right information in front of the model at the right step is the majority of the work, and I've written a field guide on exactly this.
Tool design
Tools are the agent's entire interface to your business, and their descriptions are instructions, not documentation. A tool called escalate whose description explains when to reach for it will get used correctly far more often than one that just says what it does.
const tools = [
{
name: "get_ticket",
description: "Fetch a support ticket by id, with its full message history.",
input_schema: {
type: "object",
properties: { id: { type: "string" } },
required: ["id"],
},
},
{
name: "escalate",
description:
"Hand the ticket to a human. Call this when you are not confident, " +
"or when the customer is asking for something you cannot verify.",
input_schema: {
type: "object",
properties: { id: { type: "string" }, reason: { type: "string" } },
required: ["id", "reason"],
},
},
];Evals before it ships
An agent that works on the three examples you tried by hand is not an agent that works. Before anything goes live it runs against a fixture set built from your real cases, including the awkward ones, and the tests assert on the actions taken, not on the wording of the output.
test("escalates instead of replying when a chargeback is threatened", async () => {
const result = await runAgent(fixture("chargeback-threat.json"));
expect(result.actions).toContainEqual(
expect.objectContaining({ tool: "escalate" }),
);
expect(result.actions).not.toContainEqual(
expect.objectContaining({ tool: "send_reply" }),
);
});Guardrails and human-in-the-loop
Every agent I build has an explicit answer to “what happens when it's wrong?” Usually that means confidence thresholds with a review queue behind them, hard limits on what any tool can do without a human signing off, and an irreversible-action list that always requires approval. An agent that quietly does the wrong thing is much worse than one that stops and asks.
Observability
Every run is logged with the full decision trail: which tools were called, in what order, and what came back. Usage tracking too, so you can see what the thing costs to operate before the invoice tells you. When an agent does something surprising in month four, that trail is the difference between a fix and a rewrite.
A recorded run of a document extraction agent: it reads the fields from each invoice, checks them against known suppliers, writes the ones that reconcile to the ledger, and queues the rest for a human.
$ agent extract --queue invoices → 12 documents waiting → read fields from 12 of 12 → matched 11 against known suppliers ! 1 total did not reconcile → queued that one for review ✓ 11 written to the ledger
One run of a document extraction agent. The line that matters is the one that did not reconcile, because that is the one a person needs to see.
What it costs to run
Agents are billed by usage, so the running cost scales with volume rather than sitting on your books as a fixed licence. For the kind of workloads a small business actually has, that number is usually small next to the work being replaced. But I'm not going to publish a figure that pretends your volumes are the same as everyone else's.
What I will do is give you the real number for your case before you commit. Part of scoping is a run-cost estimate based on your actual volumes and the models each step needs, and once it's live the usage tracking means you can see it rather than infer it.
Where cost genuinely matters, the lever is almost always model selection rather than volume: moving the routine steps onto smaller models, or onto hardware you own.
The stack
How a project runs
A single agent is typically two to four weeks from the first call to something running. Larger builds get staged so you see working software at the end of each stage.
Discovery
a few days
We work out what the agent is actually for, what it needs access to, and, just as importantly, whether it should be an agent at all. You get an honest answer if a simpler automation would do the job.
Prototype
about a week
A working agent running on your real data, narrow but end-to-end. This is deliberately early: it is far cheaper to discover the idea needs changing now than after the full build.
Evals and hardening
one to two weeks
Fixtures from your awkward cases, tests that assert on behaviour, confidence thresholds, the escalation path, and the logging you'll want when something surprising happens later.
Production and handover
ongoing as needed
Deployed where you want it, on your infrastructure or mine, with the code in your repository, documentation, and a walkthrough so your team can maintain it without me.
Frequently Asked Questions
The questions that come up on almost every first call about agents.
Got a workflow in mind?
I take on AI agent development across Australia, remotely or in person in Sydney. Tell me what the workflow is and I'll tell you whether an agent is the right tool for it. If it isn't, I'll tell you what I'd use instead.
Start a projectLast updated August 14, 2026 · AI automation services · AI consulting Sydney