← Back to product·Simulmedia Switchboard Docs · v1 draft·Operate / Reconciliation
Operate

Reconciliation

Snapshots are truth. Reconcile against them on a schedule, independent of whether webhooks arrived.

The sweep

Run it on a timer, and again after any deploy or outage:

Delivery actuals

Aired counts and delivered impressions come from the seller as delivery_post artifacts on the order: per-unit, per-week actuals in the declared currency, source-tagged. Audience guarantees reconcile against them; the platform carries the numbers, it never computes them.

Posting policy

A shortfall is arithmetic; whether it owes a make-good is policy. A package may state that policy, and then both sides compute the same answer. posting_policy carries aggregation_weeks (the window delivery totals over before shortfall is computed), threshold_pct (delivery at or above this percentage of the guarantee owes no make-good), and exclusions (the package_id references the policy does not cover: the tentpole carve-out). An agreement may override it, resolving as override(package_id) ?? override("*") ?? package.posting_policy ?? unstated. The overrides that apply are the ones on the agreement the order presented at create, read when the post lands rather than snapshotted: unlike the cancellation rights an order books under, a make-good trigger is the live term between the parties.

Evaluation is per line, never order-wide. One order may carry lines from packages with different windows, thresholds, and exclusions, so there is no single order-level policy to apply. Mixed-policy orders are legal. For each audience_guaranteed line, independently:

  1. Resolve the effective policy for that line's package_id.
  2. If that line's package sits in the policy's exclusions, the line is excluded: no automatic determination, and its shortfall goes to the parties. Undecided is reported as undecided, never as "no make-good owed".
  3. Total delivered impressions for that line from the order's delivery_post artifacts over that policy's aggregation_weeks, in the line's declared audience currency.
  4. Compare against that line's impressions_goal. Satisfied when delivered >= goal * (threshold_pct / 100), inclusive at the edge. Satisfied owes no make-good; not satisfied populates the line's shortfall and the make-good path runs as it does today.

Worked once: a line guaranteeing 1,280,000 hh impressions under {"aggregation_weeks": 4, "threshold_pct": 90} needs 1,152,000 across its four posted weeks. 1,200,000 delivered is satisfied and owes nothing; 1,151,999 is not. Results report per line, exactly as unit acceptance already does: the order is never satisfied or unsatisfied as a whole. Where no policy is stated, behavior is exactly today's: the shortfall is reported and the decision stays with the parties.

The platform computes the comparison, never the audience. Every delivered figure is the seller's, carried as posted; the platform applies the arithmetic both parties agreed to and nothing more.

Files and EDI

Sellers who live in traffic systems return actuals as the industry's own paper: station-generated EDI invoices and as-run log times land through the file interface and reconcile against orders, so billing stays in the systems both sides already trust.