← Blog
ResearchJuly 13, 2026

Building production-ready safety judges, starting with agentic commerce

AI agents have not been allowed into e-commerce, because there is no way to trace an agentic decision or validate its outcome. Hallucination is one of the strongest concerns around AI, and in financial settings, where mistakes cannot be made, transparency and validation are crucial. Today we shipped the first piece of that layer, trained inside a marketplace we simulated end to end.

The trust gap

Capability is the fastest-moving line in AI; accountability is the flattest. Models improve monthly at reading, planning, and executing, while the infrastructure for verifying what they actually did barely exists. That distance, between what an agent can do and what anyone can prove it did, is the widest gap in the field, and it is the one we work on: what did the agent read the intent as, and does the action match it.

Models in 2026 can run commerce end to end. What stops them is the asymmetry of the risk: a hallucinated email costs a rewrite, but a hallucinated payment is someone’s money, gone, and money is where tolerance for machine error ends. Agents run everything up to that line, and nothing past it.

Closing that gap is the work. Delegation becomes safe when three questions about an agent’s action can be answered. Before execution: what is it about to do, and is that what the user asked for. After: did it actually do it, which we answer with a zero-knowledge proof, so the platform gets verification and the user keeps their privacy. The check runs on every action, which rules out a frontier model in the loop; it has to be a model cheap enough to sit in the transaction path. zeroproof-ecommerce-1b reads a conversation and returns the customer’s payment intent as one structured object, at $0.18 per million output tokens, in about a second. It is released today, with the training data and the whitepaper.

The judge is a separate, smaller model on purpose. An agent is trained to complete tasks, and that training tilts it toward execution over the question of whether execution was asked for. In drafting, the bias costs you unnecessary files; in commerce, it costs money nobody meant to send. A model trained purely to read intent has no task to finish, and nothing to be eager about.

Four-lane systems diagram: a user message reaches an LLM agent, which plans a tool call (payments.refund for $81.40). The call is intercepted at the tool-call boundary by the ZeroProof verification layer, which reads intent with zeroproof-ecommerce-1b (rank-16 QLoRA adapter served on a single L4, p50 984 ms), matches the intent against the tool call (PASS), and only then lets it reach the MCP server and payments API. The response is attested with a zkTLS proof on the way back; a mismatch returns a block to the agent and the tool server is never called.
The layer sits at the tool-call boundary: every call an agent makes crosses it twice, once as intent, once as proof. Nothing reaches a tool server unchecked.

The missing corpus

“Send it back” is a product return in one conversation and a payment to another person in the next. A customer who has bargained for ten messages may still walk away without buying anything. Payment intent lives in context like this, not in surface form, and no public corpus we could find has conversations that exercise those boundaries. We looked.

userI’m checking if my rent autopay is on.

assistantWhat date did you set for the autopay?

userI thought it’s the first of every month?

userI hope it’s on, rent is due soon.

A verbatim row from the held-out set. Every line is payment-adjacent, rent, autopay, a due date, and the correct output is no action at all: the customer is checking, not committing. The gold label reads it as a status question with nothing to execute, and that boundary, a payment conversation versus a payment, is the one an agent must never get wrong. So we manufactured the corpus ourselves.

A label-blind simulation

Every conversation is played out turn by turn between two models, one as the customer, one as the support agent. The design turns on what the models are never told. The label vocabulary, the output schema, any mention of the task: withheld from every generating prompt. The customer model is told it is shopping, nothing more. Labels come afterward, in a separate pass. Diversity is forced rather than hoped for: 34 properties are drawn independently per conversation, temperature, length, and tone are sampled from continuous distributions, and the population includes bargaining customers, confused customers, and misaligned ones, the kind who try to push an agent toward an action nobody requested. When we audited 1,534 consecutive conversations, 98.9 percent of first messages and 100 percent of complete transcripts were unique.

The models released today will be replaced. The simulation is what we keep: the only source of conversations like these, and it grows with every audit.

Results

We post-trained two small language models on the simulated corpus with supervised fine-tuning, and we kept the recipe deliberately boring: a stock QLoRA pass on a frozen base, scored against the same base prompted with the identical task. If the recipe is boring, the lift measures the data. For reference we also scored a prompted frontier panel on the same rows, and a naive-generation control with everything but the data held equal.

zeroproof-ecommerce-1b against its prompted base

1,977-conversation held-out set, macro-averaged over the seven intent classes.

ModelIntent detectionIntent typeOrder details
gemma-3-1b-it, prompted54.912.131.0
zeroproof-ecommerce-1b74.970.063.2

The prompted base is not a strawman; it just cannot do the task. It collapses onto a single class and never answers that no action is present. Trained, the same model routes across all seven intent types. The result we care most about is the transfer: the identical recipe takes an unrelated 0.5B base from 10.7 to 65.5. We also ran a control: a corpus with the same size and the same intent mix, generated the way most synthetic data is made, where a single model is told which intent to write and produces the whole conversation in one pass. Everything downstream was held identical, and the simulation corpus beats it by 20.4 points of macro intent-type accuracy, 65.5 against 45.1. On the number a payments platform screens first: the 1B marks 4.2 percent of true no-action conversations as actionable, and when it errs, it errs toward doing nothing.

Against the frontier, on a balanced subset of the same evaluation: GPT-5 scores 80.2, Claude Sonnet 5 scores 87.3, Claude Opus 4.8 scores 88.2, and the 1B scores 71.2 on identical rows. The panel is ahead, as models orders of magnitude larger should be. The 1B serves at roughly one hundredth of their cost, and on structured field extraction it scores above all three under our field-level metric. The comparison is a reference point, not a controlled experiment: the panel runs zero-shot while our model is trained for this distribution. The controlled result is the base-versus-fine-tuned lift above.

Six problem surfaces in agentic commerce (agentic checkout, refunds and disputes, subscriptions, P2P transfers, support agents, multi-agent tool calls), each connected down into a single violet bar labeled ZeroProof, the verification layer: intent before, proof after, every action
Different surfaces, one failure class: actions nobody asked for. The same verification layer sits under each.

Run it

Both judges are adapters you can load in a few lines; the system prompt and per-intent output schemas ship in the repos. Decode greedily, pass the conversation, and hold any action whose intent does not match.

from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

model = AutoPeftModelForCausalLM.from_pretrained(
    "zero-proof-ai/zeroproof-ecommerce-1b")
tok = AutoTokenizer.from_pretrained(
    "zero-proof-ai/zeroproof-ecommerce-1b")

Released

The 1B, the 0.5B, the dataset (17,933 training and 1,977 held-out conversations), and the whitepaper are public. Nothing in the method is specific to payments. This release covers the reading step, intent before execution. Proof of what the agent actually did ships next.