Inspiration
A shopping agent can compare offers, but its recommendation should not expand what a buyer authorized. Vowrail puts purchase permission outside model reasoning: how much the buyer may spend, how many rounds sellers may negotiate, when permission expires and whether a payment completed.
What it does
The buyer creates a mandate with an item, quantity, private spending ceiling, requirements and a round limit. Three synthetic merchants return quotes. The deterministic gateway counts rounds, validates offers, omits the private ceiling from seller-facing messages and locks the selected stored offer before checkout.
Advice stays advisory. The buyer compares stored price, delivery estimate and expiry, selects an offer explicitly, then completes separate order creation, buyer approval and capture. After an uncertain capture response, the attempt stays locked and the buyer checks the receipt through read-only reconciliation.
How we built it
The application uses Node.js 22+, native HTTP/fetch and plain HTML/CSS/JavaScript, with no runtime npm dependencies. PayPal Sandbox OAuth 2.0 and Orders v2 handle order creation, approval verification, capture and reconciliation. A local file journal preserves mandates, consumed rounds, offers, replay records and capture-attempt locks across restarts. Storage errors and stale writers fail closed.
Runtime buyer advice uses OpenRouter with the explicit free model nvidia/nemotron-3.5-lightning:free. The application enforces zero-price routing and no paid fallback. OpenAI Codex assisted development and tests. The 90-second movie was authored with React/Remotion and distinguishes recorded simulation from separate historical provider observations.
Public MIT source: https://github.com/Whyme-Labs/vowrail Local setup and judge walkthrough: https://github.com/Whyme-Labs/vowrail/blob/main/docs/JUDGE_GUIDE.md
Challenges and what we learned
A timeout does not prove a payment failed. Process-crash and HTTP response-loss tests check that consumed rounds and capture locks survive restart without another capture. Tests also cover malformed offers, expired permission, replayed requests and caller-supplied amount tampering.
Model explanations can be wrong even when an offer ID parses. Recorded advice misstated comparative prices, assumed an uncertain delivery deadline was acceptable and confused cents with USD. The interface therefore shows stored offer facts separately from the explicitly unverified explanation and leaves selection with the buyer.
Accomplishments and evidence
The reviewed source passed 124 actual Node tests, smoke checks and normal/lost-response/restart HTTP rehearsals from a clean archive. The merged source tree matches that tested version.
One owner-authorized USD 207.00 PayPal Sandbox purchase completed, with independent API/dashboard checks and receipt restoration after restart. Eight recorded free-model attempts produced two earlier Google 429 responses, three truncated Nvidia outputs and three accepted Nvidia advisory outputs. Six completed Nvidia responses reported USD 0 cost; rejected-request usage was unavailable.
The model and Sandbox observations came from separate runs. These are functional integration results, not a continuous live AI purchase, an economics benchmark or a guarantee of model accuracy. The three sellers remain synthetic and are not the configured receiving Sandbox merchant.
What's next
The public source has a complete credential-free local simulator and configuration instructions for actual integrations. Usable free judge access is being arranged privately. Actual canceled/declined Sandbox approval cases and remaining accessibility checks still need qualification.
This is a single-process local prototype with no buyer login, merchant authentication or hosted transactional database. Delivery estimates are nonbinding. No live payments, fulfillment guarantee or security certification is claimed.
Log in or sign up for Devpost to join the conversation.