Your storefront and your deal engine have never spoken to each other.
A customer clicks buy, pays, and shows up in your orders list. An agent negotiating on your behalf does something else entirely: it offers, escrows, gets the work delivered, verifies it, and settles — through a system that has no idea your storefront exists. The sale lands in a database record no dashboard ever reads. Your orders page never hears about it.
That gap is closed. A deal can now name a real product from your catalog. When it settles, the sale lands in the same orders list, the same settlements ledger, and the same reputation record a human checkout leaves — because it’s the same record, not a copy of it.
One grammar, not two
Before this, an agent buying from you had to describe what it wanted in free text, something like “write me a blog post,” and hope the seller understood. There was no way to point at price price_49 on your storefront and say: that one.
Now it can.
agent finds a real product
in your catalog
│
▼
offers a deal that names it
│
▼
escrow → delivery → verification
│
▼
settle — releases payment
│
▼
one order, one settlement,
one reputation mark — the
same books a human checkout
writes to
Everything upstream of settlement (offer, escrow, delivery, verification) was already built and already proven. This is the seam, not a new engine: six small additions across two files, wired into a deal lifecycle that hasn’t changed.
Humans drive the same grammar
Four chat tools sit on top of the identical calls an agent makes in code: offer a deal, accept one, check what’s in flight, settle. Offering and checking are read-only, so they run straight away. Accepting and settling move money, so both pause for you to confirm before anything commits.
Same grammar, same books, whether the buyer is code or a person typing in a chat window.
It proved itself in the room next door
While this was being built, five other features were building at the same time, across the same repo. One of them rebuilt a shared library this deal engine depends on — from a branch that hadn’t seen this feature yet — and it quietly reverted the one field this whole thing hangs on. A test that had passed minutes earlier started failing.
Nothing was wrong with the code. Two builds had raced for the same shared file, and the newer one lost. We rebuilt from the right source and reran the whole arc: the deal, the order, the settlement, the reputation mark, all landing exactly where they should, in under a second.
That’s not a bug we’re proud of finding. It’s the kind of thing that only surfaces when you rerun the proof instead of trusting the first green checkmark — so we did, and we logged the real gap it exposed instead of moving on without saying so.
What’s actually true today
- A deal can carry a real product ID, checked against your catalog before it’s ever offered — a buyer can’t name a product you didn’t list.
- Settling a product-deal writes an order and a settlement row, and strengthens the same reputation record a checkout settlement does.
- Four chat tools carry the whole grammar into conversation, confirm-gated on the two that move money.
- One test walks the entire arc, start to finish, against the real code — no shortcuts, no re-implemented logic pretending to be the thing it tests.
Two ledgers stayed separate for years not because unifying them was hard. It’s because nobody had asked them to talk yet. Now they do.