Agentic AI
I scope the work, make the model justify itself before it acts, and decide where a person stays in the loop.
Four agents in production against a live wholesale business.
Method
Every one of these was built the same way: investigate, propose, implement, with an explicit approval between each step. The model investigates and proposes. I decide.
The approvals are the entire product decision. Generation is cheap now; a model will write the billing agent in an afternoon. What costs something is knowing where it is allowed to act on its own conclusions and where it has to stop and show its work, which is what decides whether you can point one at a live business.
An agent that acts without justifying what it is about to do is unreviewable. Attach an unreviewable process to a system that sends invoices and you have a liability.
The billing agent
Runs daily against the day's picking tickets, bills what is clean, and refuses to guess at anything that is not.
Every day the warehouse scans its picking tickets to a shared drive. The agent reads the day's batch, and for each ticket it goes to NetSuite and establishes three things: that the items on the ticket are the items on the order, that the quantities picked are the quantities sold, and that the order has not already been invoiced.
Where all three hold, it bills the order and formally sends the billing. Where any of them does not, it stops and writes the ticket into an exception report for a person, with the reason attached.
The exceptions are not rare. They are the ordinary texture of a wholesale operation. A quantity picked short because that is what was on the shelf. An order that was prepaid, where invoicing would charge twice. Shipping a rep comped over the phone. A note somebody wrote on the ticket in pen, which is a real instruction from a real person that exists nowhere in the ERP. Each of those has a defensible automatic answer. The agent is not allowed to reach for any of them.
Deciding what the agent is not allowed to decide is the design work here. The automation around it is plumbing.
Held for review
- Quantity
Ticket shows twelve units picked against an order for ten
Could be a short-ship correction or a picking error. Both are plausible and they bill differently, so neither is assumed.
- Prepaid
Payment already applied against this order
Invoicing it would charge the account twice. The agent has no authority to decide whether a credit is the right answer.
- Manual
Handwritten note on the scanned ticket
Freight marked as comped by the rep. Nothing in the ERP can confirm it.
The competitive intelligence agent
Watches what our largest accounts are actually selling, and reads what the changes mean.
It monitors the websites of the company's largest accounts, scrapes their product and pricing data, and diffs each run against the last one. It is looking for movement in items supplied by our largest competitor: something of theirs appearing on a shelf that did not carry it, something disappearing, something whose price has moved.
The diff is the easy half. A list of changed rows is something anybody can generate and nobody reads. The agent's job starts after it, taking a change and saying what it indicates for us. That an account has opened a second supplier. That a line we compete on is being discounted. That a category is being quietly exited.
A change log is data. A read on what the change means is something somebody can act on. Getting a model to produce the second without inventing the first is most of the work.
The lead generation agent
Researches and compiles prospective leads into something a salesperson can act on directly.
It researches potential leads and compiles what it finds into one brief per lead, so the work arriving on a salesperson's desk is already assembled instead of being a name and a homework assignment.
The constraint is the billing agent's, pointed at a softer problem. Research is exactly where a model produces something confident and wrong. A lead brief with an invented fact in it is worse than no brief, because somebody will repeat it on a call. So the agent compiles and attributes. It does not conclude.
The value is handing a person something finished. That only works if every line in it can be traced back to where it came from.
Regional district, science facilities refresh
- Signal
Bond measure passed including science facility work
Public record, with the posted timeline attached. Suggests purchasing inside the next budget cycle rather than this one.
- Signal
No existing supplier relationship on record
Not in the account list. There is no incumbent to displace here, which changes the approach.
- Action
Route to the territory rep with the procurement contact
The agent stops here. What to offer, and when, is not its call.
The daily brief agent
A morning email on what moved in AI, filtered to what would change how I work.
It reads the day's developments in AI and sends me one email about the ones relevant to what I am building. Relevance is the entire feature. An unfiltered digest of AI news is a way to spend twenty minutes learning nothing, and that is why nobody keeps reading one.
It carries one standing watch beyond my own work: AI in the education sector. American Scientific sells to schools and districts, so what those buyers are being told about AI, and what their procurement frameworks are starting to permit, is commercially useful to us well before it is obvious.
This is the smallest of the four and the one I would defend longest. An agent whose job is to decide what is not worth telling me is running the billing agent's fork on a smaller scale.
Two things that change something
- Education
A state procurement framework added AI tooling to its approved categories
Matters because our buyers are districts, and a procurement category is the mechanism by which a budget line becomes spendable.
- Tooling
A provider shipped guaranteed structured output
Would let the billing agent drop a validation layer between the model and the NetSuite call. Worth an afternoon to test.
