Back to journal
TransparencyAI safetyBrand

Why we built a PPC AI that explains itself.

Black-box optimisation worked when the question was "did it beat the baseline." It does not work when the question is "why did the bid change last Tuesday." Here is what a decision trace actually contains, and why a tool without one cannot be defended to a CFO.

The Mirox team10 min read

The argument for opaque PPC optimisation used to be sound. The algorithm beat the operator. The operator could not explain their own intuition any better than the algorithm could. Trust was a reasonable trade for performance, and performance was the only thing being measured.

That argument has worn through. In 2026 the question a marketing director gets from the CFO is no longer "did it beat the baseline." The question is "why did the bid on this keyword rise from €1.20 to €1.84 over three weeks, and what does that decision rest on." A black box cannot answer that question. A decision trace can. This post is about what that distinction means in practice, what a trace actually contains, and why we built the whole system around it.

What a decision trace is, concretely

For one bid, on one keyword, in one campaign, the trace carries the following:

  • The proposing agent. Mirox has sixteen specialised agents. Each bid has one proposer (typically Tactician) and zero or more contributors (Strategist for stage, Sentinel for inventory, Semantic for relevance). The trace names them.
  • The Bayesian conversion estimate. A BetaBinomial pCVR, computed per marketplace per category, with confidence intervals. The trace shows the value, the prior, and the data window.
  • The relevance score. Asymmetric semantic similarity between the search term and the product detail page. RETRIEVAL_QUERY for the query side, RETRIEVAL_DOCUMENT for the product side. The score, the embedding model version, and whether the score crossed the relevance gate.
  • The supply multiplier. Inventory-aware bidding (Sentinel) reads days-of-cover from SP-API and applies a multiplier between 0 and 1 to the bid. The trace shows the DOC at decision time, the multiplier, and a stale-feed cap if applicable.
  • The alternatives ruled out. The Tactician considers a small set of candidate bids and selects one. The trace lists the alternatives and why each was rejected — under-bid relative to first-page minimum, over-bid relative to a tripped safety gate, off-policy relative to current stage.
  • The safety gates that were checked. ROAS circuit breaker, daily spend anomaly, SP-API freshness, optimistic-locking version, recovery floor, marketplace gate. Each one logged as pass or trip, with the threshold that was in force.
  • The export. The trace is rendered in the dashboard and downloadable as CSV with the original Amazon IDs intact.

That is what is on the record for a single bid. Multiply by sixteen agents, by every keyword in your account, by every marketplace. The bid history is no longer a black line on a chart. It is a system of reasons.

Why this matters even if you trust the AI

The case for transparency is usually framed defensively — what happens when something goes wrong. That framing is correct but it under-sells the offensive case.

When a bid moves, you should know what changed. When the AI is performing well, the trace teaches you what your account looks like through the model's eyes. A marketing director who reads twenty traces a week learns more about their own account than one who reads a hundred dashboard summaries. The trace is a calibration tool first, an audit tool second.

When a bid does go wrong — a stale inventory feed, a marketplace circuit-breaker trip, a model that got the prior wrong on a new category — the trace is the difference between "the algorithm decided" and "the M_supply gate fired at DOC 1.2 because the feed was 47 minutes old." One of those statements can be argued with, fixed, and learned from. The other cannot.

The agency case

Agencies pay for two things that brands do not pay for as visibly: defensibility and analyst hours. When a client asks "why did the bid change last Tuesday," the analyst reconstructs the answer from a dashboard, a Slack thread, and judgement. The reconstruction takes thirty minutes per question. Multiply by twenty clients and a weekly question rate, and the analyst is spending a full day per week on reconstruction.

A decision trace makes that day disappear. The analyst exports the trace, attaches it to the client deck, and moves on. The brand on the agency's logo on the trace is the agency's. The analyst is no longer the bottleneck between the AI's decision and the client's confidence.

What we will not call this

We will not call this revolutionary. The pieces are not new. Bayesian estimation, asymmetric embeddings, multi-agent architectures — each one has existed in some form for years. What is new is bringing them into a single system whose first-class output is a defensible reason for every action it takes.

We also will not call our competitors' tools bad. Pacvue, Perpetua, Teikametrics — they are real products that real sellers depend on, built by serious engineering teams. The honest framing is that the category is at an inflection. Black-box optimisation worked for the era it was built for. The next era of buyer — the CFO-defensible director, the EU-native multi-marketplace founder, the agency that needs an audit trail on every client account — needs a different shape of product. Mirox is the shape we built. Whether the market is ready for it is a question we will answer with shipped accounts and documented case studies, not with a louder pitch.

If the argument above lands, see what a full decision trace looks like in the product or read the matrix versus the tools you already use.

What this looks like on your account

Watch the AI before a cent moves.

Public Shadow Mode opens after the founding cohort wraps in Q3 2026 — free, no card, on your real account, read-only, for as long as you like. Until then, sellers spending €5K+/month can apply for a founding seat and skip the queue.

Free forever in Shadow Mode · paid tiers from €149/mo