PAR
Autonomous restocking that can say no.
Created on 3rd August 2026
•
PAR
Autonomous restocking that can say no.
The problem PAR solves
Consider Maya. She's an owner and operator of a gym front desk in cafe, restocking at 11 p.m. from three supplier tabs and a paper par sheet. So, why has nobody automated this process before? It's not that the AI isn't smart enough. It's you would never give that AI your card.
So, the product is the permission slip, not the shopping one pass key, one rule twenty-four hundred a week, these suppliers, nothing more than ten percent above last paid.
What it then does that a price comparison cannot: chooses. Cheapest listing on screen loses, because the operator's own invoice says the "Pack Of 2" delivered one unit, so 269 each is really 538 each and the order moves to a different supplier.
Then the harder one: it refuses a purchase that cleared every rule, priced below what she last paid, because the invoice says a case is 12 and the listing says 24.
And the refusal sticks: the mandate is paused and the next charge comes back 409 MANDATE_NOT_ACTIVE from the network, so the block survives PAR being wrong or restarted.
If you remove verified context and the agent buys the most expensive option believing it is the cheapest, then buys a second thing every rule approved.
Challenges I ran into
-
The sandbox went down mid-run and left our mandate paused. Every endpoint returned INTERNAL_ERROR. How you diagnosed it: a nonexistent mandate id also returned 500 instead of 404, which proved it was Prava and not our state. The damage: our pause had succeeded, the resume failed, and a paused mandate returns 409 on every charge, which looks identical to our own second beat firing when it should not. Fix: pause is now wrapped so its failure cannot end a run, and a run that cannot resume what it paused prints an ACTION NEEDED block naming the mandate.
-
One charge per weekly cycle, enforced inside Visa rather than in Prava. We requested max_charges: 10 and it was ignored. Visa returned Purchase already made in the current payment cycle. Our mandate's renewsAt was 9 August, a week past the deadline, so the live mint became unrepeatable and every rehearsal needed a fresh passkey ceremony inside a 900 second window. That is why the demo ships a seeded path and a recording.
-
A parser read a SKU as a price and nothing failed. An invoice was reworded to include the SKU, our regex skipped to the next number and landed on the identifier, and the transcript stated 8906087771593.00 per unit as fact. No exception, no empty result, no red test, in a build whose whole pitch is not stating unverified things as fact. Fix: anchored the capture past the identifier, then wrote a check asserting no SKU is ever printed as a price. It found all four instances in under a second and now runs on every preflight.
Tracks Applied (2)
Best Visa Intelligent Commerce Implementation
Visa
Agent Commerce Discovery & Trust
Senso
Technologies used