Inspiration

Merchants who need English product listings often have to order an entire batch before knowing which drafts will be usable. We wanted checkout to show a spending ceiling up front and explain exactly what the buyer paid for.

What it does

Upload up to ten product records and approve a ceiling of five US cents per record. A local Qwen3 model generates titles and descriptions with source-field references. SafeRouter checks product IDs, specifications, prices, stock and selected prohibited claims. A rejected draft can get one bounded repair. Only accepted cards are billed, and merchants still review translation quality and marketing claims before publishing.

How we built it

The Node.js workbench freezes the quote and checks buyer approval using PayPal Sandbox Orders v2. Payments v2 captures the accepted-card total once or voids the authorization when none pass. SafeRouter saves payment intent before dispatch and checks the original order after an ambiguous response. A separate Ed25519 receipt verifier recomputes the itemized amount and rejects edits.

Verified results

On the same ten records, a single local Qwen3 pass accepted eight cards; allowing one repair accepted all ten. In a separate, labeled test-fault run, seven of ten passed. PayPal Sandbox confirmed one final $0.35 capture against a $0.50 authorization. Three rejected items cost zero. A separate $0.15 authorization for three invalid rows was voided with zero captures. We read both orders back from PayPal and confirmed that a one-cent receipt edit was rejected.

Prior work and new development

Earlier SafeRouter and Receipt Desk work explored signed quotes and receipt verification. Budget Checkout is a new product-card workflow for this event, with batch budgets, bounded model repair, delivery checks, accepted-item billing, PayPal Sandbox settlement and a batch receipt verifier.

How to try it

Use the public repository README for a runnable local workbench. JUDGING.md explains how to test the full workflow with your own PayPal Sandbox buyer and merchant.

Built With

Share this project:

Updates

Submission history