2026-10-29 · benchmark · delivered totals

Same truth, a fifth of the time: KaliCart vs direct WooCommerce APIs

Two scripted agents, the same shopping tasks, an independent referee and rules written down before the run. What KaliCart won, what it tied, and the two rules it did not meet.

In brief — On 18 tasks it had never seen, an agent using KaliCart closed 15 and an agent calling the shops’ own WooCommerce APIs closed 13, with no wrong total observed (0 in 54 tasks across all sets) and in about a fifth of the time. Two of our own rules were not met, and we report them as written.

◇ The problem: an agent needs the price the shop will actually charge

An AI agent that buys for someone has to answer one question before anything else: what will this cost, delivered to this address? Product price, tax, shipping for that postcode, minimum order rules, mandatory fees. Catalog prices alone cannot prove a delivered total, and a total that turns out wrong is a broken promise to the buyer.

KaliCart’s job is narrow: represent the shop’s truth to agents as faithfully as the shop itself would, and get there faster, with fewer requests. Whether the buyer likes that truth is not our business. This benchmark tests whether two scripted agents can return an offer with a WooCommerce-calculated total, and at what cost in time and requests.

◎ The setup: two agents, the same tasks, one independent referee

Both agents are deterministic scripts, not language models. Each task is a fixed shopping scenario generated from catalog products: a search word, an Italian delivery address, a budget for the delivered total and, where it applies, a size or colour. “Find X, delivered to postcode P, at most B euros all in. Answer with an available offer, its proven total and a checkout path, or abstain.”

Agent A — directAgent B — KaliCart
How it searchesCalls each shop’s WooCommerce Store API, shop by shopOne search across the KaliCart network
How it gets the totalOpens a real cart on the shop and reads the totalAsks the shop’s Bridge for a quote, calculated by that shop’s WooCommerce
What it is toldThe URLs of the nine shops, with full Store API accessNo shop URLs (KaliCart already indexes the participating shops)
When it answersOnly with a total from a cartOnly with a total WooCommerce calculated (estimates rank candidates, never answer)

A third component, the referee, checks every answer independently: it opens a fresh WooCommerce cart for the proposed product and address and compares totals to the cent. An answer counts only if the product matches the need, is in stock, and the total matches the shop’s own cart within the budget. A wrong total is a false positive, the worst outcome.

The shops are nine Italian WooCommerce stores in different sectors: eight independent merchants and our own test store. They are not named here. Both agents ran in alternating order, with at least 2 seconds between requests to the same shop. No order, payment or customer account was ever created.

≡ The rules, written down before the run

Every threshold was committed to the repository before this round ran, and none was changed after seeing results. The verdict is taken on a set of 18 tasks generated with a fresh seed, from products never used in earlier rounds.

QuestionRule for KaliCart (B) against direct (A)
≈ Tie on correctnessB closes at least as many tasks as A minus one, with zero false positives
◷ Win on timeMedian net time per task at least 50% lower
↓ Win on shop loadRequests to shops at least 80% lower
↺ Win on callsMedian calls per task no higher than A
▢ Win on cartsCarts at most 10% of A’s

The idea behind them: tie where only a tie is possible, win where there is margin. Nobody expects KaliCart to be more correct than the shop; it must be exactly as correct, and better on the way there.

▤ Results on 18 never-seen tasks

KaliCart closed 2 more tasks than the direct agent, gave no wrong total in this sample, and took about a fifth of the time.

MeasureA — directB — KaliCartRuleVerdict
Tasks closed13 / 1815 / 18B ≥ A − 1, 0 false positives✓
False positives000✓
Median net time per task9.3 s1.8 s (81% less)at least 50% less✓
Median calls per task127no more than A✓
Requests to shops21944 (79.9% less)at least 80% less✗ by one request
Carts1922at most 10% of A✗ (see below)

Two things stand out in the detail:

On the two sets already seen in earlier rounds the picture is the same: 18 / 18 against 16, and 16 against 13, with 82% fewer requests and 82–83% less time.

↗ How we got there: from 8 to 18 out of 18

On the same 18 tasks, KaliCart went from 8 closed to 18 in four rounds over three days. Each step came from finding why a task failed and fixing the cause for every shop, never a patch for one shop.

RoundKaliCart closed (same 18 tasks)Cause found and fixed
4 — 29 Oct18 / 18The quote now runs WooCommerce’s own cart checks (cart validation rules) and keeps shop-added cart lines; the network search filters prices by currency and says which shops offer a quote
3 — 29 Oct16 / 18The quote’s temporary cart now offers the full WooCommerce session interface, so pricing and discount plugins that read the session work
2 — 28 Oct14 / 18Quotes and checkout handoff on by default; the quote trusts WooCommerce’s shipping calculation instead of pre-checking shipping methods; a shipping zone with methods but no locations no longer reads as “not delivered”
1 — 27 Oct8 / 18First strict run (only WooCommerce-calculated totals count): most rejections came from over-strict pre-checks on shipping methods and from how shipping zones were read; one shop’s quote was unavailable

The direct agent stayed between 16 and 17 on these tasks throughout. What changed was KaliCart’s fidelity to what each shop’s WooCommerce actually does.

△ What did not pass, and a mistake in our own design

Two rules were not met, and we report them as written.

Requests to shops: 79.9% fewer, against a rule of 80%. 44 requests against 219 is one request above the line (the limit was 43.8). On the two repeated sets the rule was met at 82%. In practice requests to the shops fell by four fifths; by the letter of the rule, it is a no.

Carts: a rule that could not be met, and we wrote it. The rule counted every “cart” the same way, but the two agents do very different things:

Direct agent’s cartKaliCart quote
What it isA real WooCommerce customer sessionA cart built in memory inside one request
PersistenceA Store API customer session, persisted according to the shop’s configurationA temporary in-memory cart; its WordPress database writes are blocked
Customer sessionYesNot created
Requests to build itSeveral (create, address, add item, shipping)One
AfterwardsA customer session the shop keeps until it expiresNo customer session

Every KaliCart answer rests on a quote, so the rule asked KaliCart to answer without letting WooCommerce calculate the total, which is the one thing it must never do. The rule was wrong by design. Future rounds will count persisted customer sessions and database writes instead, fixed before measuring.

○ Limits, and what comes next

This is a first measured lead, not a general law. What it does not show:

That is the plan: when new merchants join the network, the benchmark runs again on them, rules fixed in advance, results published as they come, including the no’s.

← All posts