Agentic orchestration
Software that decides the next step for itself, instead of following a fixed script.
Most software waits to be told. You open it, you click, it does the thing you clicked. An agent is different: you give it a goal and the tools to reach it, and it works out the steps itself — reading what came in, deciding what to do, doing it, checking whether that worked, and trying something else if it did not.
Orchestration is the layer above that. One agent handling one job is useful; five agents sharing your systems without tripping over each other needs someone deciding who does what, in what order, and what happens when one of them fails. That coordination is where most homemade attempts fall apart.
The part that matters commercially is not the cleverness. It is the control: which decisions the agent is allowed to make alone, which ones stop and wait for a person, and how you see what it did. Built without those, an agent is a liability. Built with them, it is a colleague who never forgets a step.
Someone opens the orders inbox at 8am. Forty messages, three formats, two in Malay. They read each one, look up the customer, check stock, and type it into the system. Two and a half hours, every morning, and mistakes happen around order thirty.
The agent has already read all forty overnight. Thirty-six are drafted and waiting for a one-click approval. Four are flagged: an unknown customer, an item out of stock, an ambiguous quantity, a price that does not match the list. Your person spends twenty minutes on the four that need a brain.
What one agent actually does, step by step
It helps to follow a single order the whole way through, because the word "agent" hides how ordinary the individual steps are.
An email arrives: "Hi bro, same as last month but 20 cartons instead of 12, deliver Thursday." A rule-based system cannot do anything with that. The agent starts by working out who sent it — matching the address against your customer list, and noticing that this sender has ordered eleven times before.
Next it needs to know what "same as last month" means, so it looks up that customer's previous order and finds three line items. It adjusts the quantity on the one the message mentions and leaves the other two alone. Then it checks stock for all three, and finds one of them is short by six units.
This is the point where a script would either crash or silently do the wrong thing. The agent has a choice to make, and the choice is where the value is: it drafts the order with the two available lines confirmed, flags the short line with the actual available quantity, and writes a one-sentence note explaining what it did and why. Then it stops and waits for a person.
That is the whole loop — read, decide, act, check, escalate when unsure. Repeat it forty times before anyone arrives in the morning and you have the system we actually build. Nothing in it is magic. What is genuinely hard is the deciding, and specifically deciding when not to decide.
The five things that decide whether it works
Almost every agent project that disappoints fails on one of five things, and none of them is the model.
First, goal clarity. "Use AI on our orders" is not a goal, it is a wish. "Read every order that arrives by email or WhatsApp, draft it into the system, and flag anything you are not sure about" is a goal, because you can tell whether it was met. If we cannot write the sentence, we do not start the build.
Second, tool access. An agent is only as capable as the things it is allowed to touch. If the order system has no API and nobody will give us a login, no amount of intelligence helps. This is usually the thing that decides the timeline, not the AI work.
Third, data quality. The agent has to recognise your customers. If the same buyer exists three times under slightly different names, it will hesitate on all three, and you will conclude the agent is unreliable when the real problem is the customer table. This is why data pipelines keep showing up as the first project.
Fourth, escalation design. The most important thing an agent does is notice it should stop. Deciding in advance what "unsure" means — an unknown customer, a price that does not match, a quantity outside the normal range — is what turns it from a risk into an asset.
Fifth, observability. When something looks wrong, you need to see what the agent thought at the time. Every decision it makes is written down in plain language, so a supervisor can read the reasoning rather than guess at it. Agents that cannot explain themselves do not survive contact with a real business.
How much authority to give it, and when to widen it
The question we get asked most is not "can it do this" but "what if it gets it wrong". The answer is that you do not hand over authority on day one; you widen it as the agent earns it, and you can always narrow it again.
In the first phase the agent drafts and a person approves everything. This feels like it defeats the point, but it does not: approving forty drafts takes twenty minutes, where typing forty orders takes two and a half hours. You are already most of the way to the benefit, and you are watching every decision while you get comfortable.
After a few hundred orders you will have a clear picture of where it is reliably right. Usually that is existing customers ordering familiar items in normal quantities — which is most of the volume. That category can go through automatically while everything else still stops for a person.
The threshold is a business decision, not a technical one. Some clients let anything under a ringgit value through and review the rest. Others go by customer: the twenty accounts they know well are automatic, everyone else is checked. Both work, and both are set by you and changeable in an afternoon.
What we will not do is give an agent unattended authority over something irreversible on the promise that it is probably fine. Sending money, cancelling orders and emailing customers directly stay behind a person until you explicitly decide otherwise.
What it costs to run, honestly
There are two costs and they behave differently. The build is a one-off. The running cost is per transaction, and it is worth understanding before you commit, because it is the part that decides whether the economics hold as you grow.
Every time the agent reads an order and reasons about it, that reasoning is billed by the AI provider based on how much text goes in and comes out. For order processing the realistic figure is a few sen per order, not ringgit. At forty orders a day that is a rounding error against the labour it replaces.
Where it stops being a rounding error is very high volume with very low value per transaction. If you are processing ten thousand tiny items a day, per-item AI reasoning is the wrong tool and a conventional rule-based system is both cheaper and more predictable. We will tell you when you are in that territory.
The other running cost is maintenance, and it is real. Systems change, suppliers redesign their portals, your own processes shift. Budget a small amount of ongoing attention rather than assuming a built system stays correct forever. A retainer covers this, but you can also just call us when something breaks.
How it is tested before it touches anything real
No agent we build meets your live systems on day one. The testing sequence matters more than the build, and it is the part clients are usually most reassured to hear described.
The first stage is replay. We take a few hundred real orders from the last several months — ones you have already processed, so the correct answer is known — and run the agent against them with every write disabled. It cannot change anything; it can only say what it would have done. Then we compare its decision to what actually happened.
That comparison is where the real work begins, because the disagreements are informative in both directions. Sometimes the agent is wrong and we adjust it. But reasonably often the agent is right and the original human entry was wrong — a transposed quantity, a stale price, a line missed on a busy morning. Clients are frequently surprised by their own baseline error rate, and it makes the eventual comparison fairer.
The second stage is shadow running. The agent processes live orders in parallel with your team, still writing nothing. Every morning someone can see what it would have done with the real inbox, including the messages that are genuinely hard. A week or two of this settles most nerves, and it surfaces the edge cases that historical data never contains — the customer who replies to a three-month-old thread, the order sent as a photograph of a handwritten note.
Only then does it start writing, and initially only as drafts nobody has to accept. If at any point the numbers look wrong, turning it off is a switch, and your team carries on exactly as before because nothing was removed. That is deliberate: we do not dismantle the manual process until the automatic one has earned it.
What happens when something breaks
Every automated system fails eventually. What separates a manageable failure from an expensive one is entirely decided at build time, so it is worth being explicit about how these behave.
The first principle is that the agent fails loudly. If it cannot reach your order system, if a price lookup returns nothing, if the number of orders it sees is suspiciously far from normal, it stops and tells someone. It does not carry on with partial information and it does not guess. Silent failure — where a system appears to run for a fortnight while quietly producing nothing useful — is the one outcome we design hardest against.
The second is that everything is reversible. Actions are logged with enough detail to undo them, and during the early phase the agent's writes are drafts rather than commitments. If a bad batch goes through, you can identify exactly which records were touched and when, rather than reconstructing it from memory.
The third is that the manual path never disappears. Your team keeps the ability to process an order by hand, and the agent being unavailable is an inconvenience rather than a stoppage. Any consultant who tells you to decommission the old process on go-live day is optimising for their invoice, not for your Tuesday.
In practice, most failures are dull. A supplier changes a page layout. An API key expires. Someone renames a spreadsheet column. These produce an email, somebody spends twenty minutes, and the system carries on. The dramatic failures people worry about — an agent confidently doing something catastrophic and unnoticed — are precisely what the approval gates and the logging exist to prevent.
What the first ninety days usually look like
Levels of autonomy, and what each one means
| Level | What the agent decides | Who approves | Typical use |
|---|---|---|---|
| 1 — Draft only | Nothing. It prepares, a person confirms every item | Every record | Weeks 1–4, and anything involving money |
| 2 — Approve by exception | Routine cases; stops on anything unusual | Flagged records only | The usual settling point for order entry |
| 3 — Act, then report | Everything inside agreed limits | Reviewed afterwards | Internal reports, data movement, monitoring |
| 4 — Fully unattended | Everything in its scope | Nobody, routinely | Reserved for reversible, low-value, high-volume work |
Where this goes wrong
If two people in your business would disagree about whether the agent did the right thing, the agent cannot possibly get it right either. Settle the disagreement first — that conversation is often more valuable than the software.
Broad permissions make a demo impressive and a production system dangerous. Start with the narrowest access that lets it do the job, and widen deliberately.
Duplicate customers and inconsistent product codes will make a perfectly good agent look unreliable. Expect the first phase to involve cleaning, and treat that as part of the project rather than a surprise.
An agent is a colleague, and colleagues need a manager. Someone in your business should be reading the flagged cases weekly and noticing patterns. Without that, quality drifts and nobody sees it until it is a problem.
How we actually build it
-
01
We write down the goal
Not "use AI on orders" — "read every order that arrives by email or WhatsApp and draft it into the system for approval". If we cannot write it plainly, it is not ready to build.
-
02
We give it exactly the tools it needs
Access to the inbox, the price list, the order system. Nothing more. Narrow permissions are the difference between a useful agent and an incident.
-
03
We decide where a human stands
Usually: it drafts, you approve. Once you have watched it be right a few hundred times, you can widen what it does alone.
-
04
We make it observable
Every decision logged in plain language, so when something looks wrong you can see what it thought and why.
- The work needs judgement — "which supplier, given this stock level and that lead time?"
- Inputs arrive in messy, inconsistent formats
- The steps change depending on what the previous step found
- The process is identical every single time — a plain automation is cheaper and more predictable
- A mistake would be expensive and nobody will be reviewing the output
- You cannot describe the goal clearly. If you cannot, neither can the agent
- Access to the systems it will touch
- Someone who can say what "correct" looks like
- A couple of hundred past examples to test against
2–3 weeks to a working prototype; 4–8 weeks to something running unattended.
What people ask about this
What happens when it gets something wrong?
It flags rather than guesses, and everything it does is logged and reversible. In the first weeks nothing is submitted without your approval — you widen its authority as you build confidence, not before.
Does it need to connect to my accounting system?
Only if the job requires it. Where there is an API we use it; where there is not, we drive the screen instead — see RPA & Selenium.
Often paired with
Would this work for you?
The first call is free, and we will say plainly if this is the wrong tool for your problem.
Book a free call