Skip to main content

Overview

An intelligence run is the record the Interchange Merchandising Engine writes each time it answers a buyer’s get_products request for your storefront. Each run captures the inputs (buyer scope, brief, matched buyer instructions), the prompt and raw + parsed model output, the products it composed, and a result envelope. Runs are the per-request detail behind your seller analytics — analytics aggregate runs; runs show you exactly what happened on one request. Use intelligence runs to audit how the engine responded, debug an unexpected composition, and label runs for evaluation workflows.

Run record fields

FieldTypeDescription
idstringSurrogate id
storefrontIdstringStorefront the run belongs to
buyerCustomerIdinteger | nullBuyer customer id, when known
operatingInstructionsVersionintegerOperating-instructions version active for the run
buyerScopeobject{ operatorDomain, brandDomain, country } extracted from the request
buyerInstructionsobjectResolver output: { matchedRowIds[], effectiveDiscountPercent, notes[] }
briefstring | nullBuyer brief that drove the run
buyingModestringBuying mode for the run
inventorySnapshotanyInventory considered for the run
promptstringThe composed prompt sent to the model
rawLlmOutputanyRaw model output
parsedOutputanyParsed model output
runRationalestring | nullEngine rationale for the run
explanationobjectBuyer-safe explanation (see below)
composedProductIdsstring[]Product ids persisted for the response
resultobjectOutcome envelope { kind (ok|error|skipped), code, message }
modelProviderstring | nullModel provider
modelNamestringModel used
durationMsinteger | nullRun duration in milliseconds
refineSnapshot, refinementAppliedSnapshotanyRefinement inputs and applied result
requestAsksstring[]Buyer asks detected on the request
shownProductsSnapshotanyProducts shown to the buyer
pricingSummaryanyPricing summary for the run
negotiationSummaryobjectCompact seller-facing analytics. On brief-mode runs it also carries a qualification object — the brief-qualification gate’s verdict (see below)
commercialOutcomeanyAttributed commercial outcome
evalLabelanyEvaluator label attached to the run, when present
createdAtstringISO 8601 timestamp

explanation

FieldTypeDescription
summarystringOne-line summary of what the engine did
selectedProducts[]arrayBuyer-safe explanation per selected product: { productId, name, description, reasoning, pricing, bundleIds[], signalIds[], formatIds[] } where each formatIds[] item is { agentUrl, id }
unpricedProducts[]arrayCompositions omitted because they could not be priced authoritatively: { name, reasoning, reason, bundleIds[], signalIds[] }
buyerInstructionNotes[]string[]Buyer-instruction notes applied
pricingNotes[]string[]Pricing notes
failureobject | null{ code, message } when the run failed
Each selectedProducts[].pricing is { baseCpm, currency, operatorDiscount, finalCpm }.

negotiationSummary.qualification

Present on brief-mode runs once the brief-qualification gate has run — the cheap classifier that decides whether the storefront should respond to a brief before composing. The gate weighs inventory fit and the storefront’s acceptance policy, fails open on any fault (composes), and records its verdict here on every brief.
FieldTypeDescription
qualifiedbooleanGate verdict — true when the brief is worth composing for
would_declineboolean!qualified. The shadow signal: true even when the decline was not enforced (e.g. a fit decline while fit-enforcement is off), so you can see demand the gate would turn away
dispositionstring | nullOutcome bucket: responded, declined_fit, declined_policy, or not_live. The value ?disposition= filters on
enforcedbooleantrue only when the decline was acted on (declined_fit / declined_policy) — i.e. the run returned no products. false for responded and for shadow declines
reason_axisstring | nullWhy a decline: fit (no matching inventory) or policy (acceptance-policy violation); null when qualified
reasonstringShort reason for the verdict. Never exposed to the buyer
facetsobject | nullSignals the gate detected: { detectedVertical, detectedChannel, detectedGeo }
layer1_hitbooleantrue when a pre-model check (e.g. empty brief) decided the verdict without a model call
routedbooleantrue when a model verdict was parsed; false means the gate failed open (fault/timeout/unparseable) and the run composed regardless
modelstringModel that produced the verdict
latency_msintegerGate latency in milliseconds
input_tokens, output_tokensintegerToken usage for the gate call
A storefront with an acceptance policy enforces declined_policy automatically; declined_fit is enforced only when fit-enforcement is enabled platform-wide. Until then a fit decline records would_decline: true with disposition: "responded" (shadow). Filter your demand inbox with ?disposition=.

Tasks

List intelligence runs

Paginate runs newest-first.

Get intelligence run

Fetch one run with full prompt and output.

Label intelligence run

Attach an evaluator label.

Seller analytics

The aggregate view across many runs.

Buyer instructions

The rows the resolver matches per run.