Everything the bidder is serving, across tenants. Campaigns are created in the orchestrator and fan out into these line-items automatically — you oversee them here and tweak their DSP settings. Click a row for its price card; hit Edit to change the max bid or supply; approve the ones waiting.
IN · Android+iOS · sports & news · eveningsDiwali 2027
AAcme
Max-CPM
$3.60
$310 / $500
● live
480 · $4.20
IN · iOS · finance appsDiwali 2027
AAcme
Max-CPM
$3.20
$120 / $300
● live
90 · $5.10
US · Android · fitnessQ3 Retarget · fanned out just now
AAcme
Max-CPM
$2.90
—
pending review
—
SEA · Android · gamingRamadan Push
VVertex
Max-CPM
$4.10
$780 / $1,000
● live
1.2k · $3.10
SEA · iOS · gamingRamadan Push
VVertex
Max-CPM
$4.40
—
pending review
—
UK · all devices · shoppingHoliday 2027
NNorthwind
Max-CPM
$5.00
$920 / $1,000 · near cap
● live
300 · $6.80
UK · Android · arcade gamesHoliday 2027 · mostly demoted
NNorthwind
Max-CPM
$2.60
$18 / $400
paused
12 · $28.0
IN · Android · music appsBrand Awareness Q2
GGlobex
Max-CPM
$1.90
—
compiling…
—
IN · news supply · broadBrand Awareness Q2
GGlobex
Max-CPM
$2.10
—
invalid · no countries
—
Exchange · DSP settings
Edit — DSP settings
This campaign was created in the orchestrator. Its objective, budget, targeting and creatives are pulled in — you don't re-enter them. Here you tweak only what the exchange needs that Google & Facebook don't: the most you'll pay, the supply, premium.
Pulled from the campaign · Diwali 2027 — app installs · Acme Ads Co.
My customersIndiaAndroidiOSSportsNewsEvenings 6–11pm
Change any of these in the campaign — the DSP picks the update up on the next fan-out.
DSP settings
editable here
These are ours on the exchange — unlike the walled-garden channels, nothing here is black-boxed. The engine optimizes each one auction by auction; you set the ceiling and can override the rest.
$USD / CPM
This is your ceiling. You pay up to this — almost always less.
$0floor $1.50your max $3.60
The optimizer bids somewhere inside this band — high enough to win the impressions worth winning, no higher.
Max-CPM
Pay up to your ceiling.
Target CPA soon
Unlocks with the conversion engine.
Conv-cost cap soon
Unlocks with the conversion engine.
Open exchange
The public auction.
Private deals
Agreed inventory + price.
Even
Spread across the day.
ASAP
Spend fast.
The engine paces delivery within your ceiling — this just sets the shape.
Engine-managed. Override for a hard limit.
Optional guardrail. Blank = the leg's budget share.
Premium inventory (+10% bid on marked domains) is applied automatically from the operator's premium list — nothing to set per campaign.
What you're telling the bidder
For a person in India · Android/iOS · sports & news apps · evenings — extra weight if they're in My customers — bid up to $3.60 CPM, usually less. Spend $500/day, evenly, through 30 May 2027.
Fans out into · 3 line-items
Android · sports & news$3.60
iOS · sports & news$3.60
My customers (audience layer)$3.60
The grammar can't OR across device + audience in one rule, so Crackle splits it — automatically. You tweak the campaign; it manages the line-items.
This leg's budget · super-admin
The exchange gets $125/day — 25% of the campaign. Super-admin sets the mix; the rest runs on the other channels as a safe baseline while the engine learns.
As segments prove out, the exchange share ramps up — better margin, full control. The customer never sees the split.
Goes to review before it's live. A person approves each line-item — including this ceiling — before it can bid a single dollar.
New combinations you haven't bid before start neutral and get explored — never written off as bad.
Exchange · the optimizer
Price card
On our own exchange we log every bid, price and outcome — so unlike the walled gardens, we can show the whole funnel and prove we're not overpaying. Three views: what happened, the segments the optimizer built from it, and how each creative scored.
Performance · what actually happened last 7 days · this line-item
Spend
$38.2k
of $47k budget · 81% paced
Effective CPI
$30.80
cost per install
Effective CPM
$3.10
cleared price per 1,000
Saved vs ceiling
14%
paid $3.10 of your $3.60 max
Segment states · click to open the filtered list this line-item
Win-price landscape
win rate at each bid price
We clear at ~$3.10 (the dot) and win ~54% there — pushing to your $3.60 ceiling buys only a few more points of win rate for a lot more spend. This curve is only knowable because we run the auction.
Why you can see this
our own exchange
Every bid, cleared price, win and loss is our own event — nothing hidden behind a platform.
So the funnel is end-to-end: request → bid → win → render → click → install.
And spend is provable to the cent against the money-event ledger.
The optimizer's decision · segments rebuilt nightly from the data
How a segment earns "premium"
Quality — worth beats the bar. Worth = chance-they-buy × sale value (from conversions only).
Size — enough traffic + conversions to trust the number.
Margin — worth is above what it costs to win. All three, or it's not premium.
The three states
▲ premiumconverts well → bid up
◐ exploringno data yet → neutral, bid low
▼ demotedbid, didn't convert → bid down
Never bid ≠ bad. Zero data sits at the average and gets explored — only real no-conversion evidence demotes.
Every segment · set your cutoff
each dot ≈ one signal-combination
A segment is one combination of signals — geo × device × OS × daypart × app-category × domain × … — so the live population is in the millions, and most are tiny and unknowable. Drag a minimum-impression floor to keep only the ones with enough data to trust. That floor is Box D's size gate.
ranked by profit — click a row for the full segment
#
State
Segment
Conv %
Earned
Margin
Impr
Conv
—
—
Creative scores · this line-item conversion score · learned offline in PG2
The actual assets on this line-item, grouped by type, top performers first. Each carries a conversion score the engine learns from real outcomes — not clicks. Click any asset to open it. Weak assets show a Replace action — the swap goes back to the orchestrator's creative library, wiring that already exists. Scoring runs offline in PG2, never on the bid path.
Images · 18 4 aspect ratios · top performers first
Videos · 5 top performers first
Headlines · 5 the actual copy · top first
Descriptions · 5 the actual copy · top first
How the score is used
P3 · offline
Feeds Box A so a strong creative isn't miscredited to the segment (or the reverse) — the two are un-confounded.
Feeds weighted select — stronger creatives and parts win more of the rotation.
All offline in PG2. The bid path only stamps the winning creative's macros — <1ms.
Signal matrix · clustered heatmap top segments × signals · exploratory
Rows are your top segments; each column is one of ~50 signals the bidder saw, shown as a single letter — hover for its name, click for what it is. Columns are independent and sorted strong→weak. Every cell is that signal's lift, 1–100, on a gradual spectrum so mid-strength shows too; switch the spectrum from the Colour selector at the top-right. What you're hunting isn't a segment with a few great signals — it's one with many good ones, so scan for rows that are broadly green and check the good count on the right. A grouper reorders the rows so matching profiles sit together (a divider marks each cluster boundary); colour flows vertically within a column so a signal that's good down a whole cluster reads as one continuous band. Click a row to open that segment.
Segments × signals · clustered
top 30 by profit · grouped by profile · hover a column header, click it for detail
cell = signal lift 1–100 · value muted on purposerows clustered by profile · bottom row = each signal's average
Value → price · the first heuristic engine declutter → explain → act
Three moves on one screen. Declutter — fix the low-priority signals so weak, look-alike segments merge into fewer, more trustworthy ones. Explain — every cell is a segment's value-score on a signal: how far that signal's actual value pushes conversion up (green) or down (red), bounded by the signal's position in the priority order, 1–100. Act — premium-price your best segments, discount your worst. One tenant, one conversion type, so ranking on conversion rate ≈ ranking on worth.
1 · Declutter — fix the weak signals
a low-priority signal barely moves conversion, so merging across it costs almost nothing
80 / 80
—
trust floor — filters flukes
raise either to tighten the trusted set
2 · Explain — segment × signal · value-scores
representative sample of the trusted set · columns ranked strong→weak by importance · each score is measured on its own; they do not add up to the segment's rate
value lifts conversion — up to +importancevalue drags conversion — down to −importancebottom row = each signal's position in the priority order, 1–100 · right column = the segment's conversion rate
3 · Act — premium the top, discount the bottom
tails of the trusted, merged set — blast radius stays visible
3%
▲ Premium — top tail
+15%
▼ Discount — bottom tail
−15%
Money impact — what this pricing does to spend
eCPA (cost per conversion) vs what a conversion is worth · illustrative, moves with every slider above
what you pay per 1,000 impressions
what one conversion is worth to you
Exchange · supply quality
Premium inventory
Sites and apps you mark as premium get a small bid boost (+10%) — they're worth a bit more to win. New supply shows up here from live traffic; you decide what's premium. This is a Crackle-operator list, shared across campaigns.
Marked premium
34
domains & apps · +10% bid
Awaiting your call
6
new supply from this week's traffic
Bid boost
+10%
applied to premium supply
Awaiting your call · new supply
auto-surfaced from live traffic
sports.example.appseen first this week
1.2M impr
61% win
news-daily.exampleseen first this week
840k impr
44% win
blogspam-network.examplelow-quality signals
60k impr
9% win
Premium allowlist
34 marked
Domain / app
Impr (30d)
Win rate
Premium since
By
★ premium-sports.example.app
3.4M
63%
2027-04-02
operator
★ quality-news.example
2.1M
55%
2027-03-18
operator
★ toptier-weather.example.app
980k
58%
2027-03-05
operator
Separate from the brand-safety block/allow list (bid / don't-bid). This list is bid-up; that one is a hard gate. Kept apart on purpose.
Exchange · approval gate
Review line-item
Nothing bids until a person signs off. Check the ceiling, the budget, who it targets, and the ads it runs — then approve. Approving flips it live on the exchange within about 30 seconds.
IN · Android + iOS · sports & news · evenings
Diwali 2027 · app installs · Acme Ads Co.
pending review
Ceiling · max bid
$3.60 CPM
Daily budget
$500
Total budget
$12,000
Strategy
Max-CPM
Flight
1–30 May 2027
Supply
Open exchange
My customersIndiaAndroidiOSSportsNewsEvenings
The ads that will run
3 · approved
Approved with the campaign in the orchestrator — shown here so you can see what this spend runs. Click any ad to inspect it. Read-only.
Pre-flight
Targeting compiled · ready for the bidder
Creative approved · passed review + scan
Budget within tenant cap · $12k of $50k monthly
Ceiling looks reasonable · $3.60 CPM — your judgement call
Approving does
Publishes the line-item to the live bidder.
It can start bidding within ~30s.
Every spend reconciles against the $12,000 cap.
Exchange · observability
Bidder health
Two things wake someone up; everything else we just watch. Anything wrong shows up here within an hour — not the next day. Exported to the dashboards every minute.
Pages someone if either breaks
Response time · p99
healthy
41 ms
pages over 80 ms — a slow bid silently loses the auction
Budget-starved no-bids
healthy
6 %
pages over 50% — campaigns running dry, money on the floor
Watched · alerts, not pages
Throughput
18k qps
Bid rate
72 %
Win rate
31 %
Errors / refuses
0.2 %
Saturation · CPU/GC
37 %
Spend drift
0.4 %
Storage growth
watch
~90 days
to full — the slow-boat signal
Config freshness
22 s
Exchange · segment identity
Signals & segments
The discovered per-tenant signal catalogue, the grain that turns it into segments, the segments themselves, and their lineage across re-grains. This is the identity view — which signals define a segment and where it came from. The Price Card's Segments tab is the pricing view of the same segments (premium / exploring / demoted); the two complement each other, they don't duplicate.
Preview the approval gate as
— every write below is approval-gated (ADR 0012 D-6); this switches which outcome you see when you Apply.
Signal catalogue discovered from traffic, not declared
Every dimension observed in this tenant's traffic, with its distinct-value count and a sample of what's actually been seen — nobody typed this list in (ADR 0012 D-7 · SignalCatalogueReader, packet s20-012). Excluding a high-cardinality dimension here is what actually stops segment proliferation; the grain control below only reorders what survives.
Eligible · rankedranked nightly from measured price evidence · last run 2026-07-28 03:40 UTC
imp.tagidmarginal +75.0pp · standalone — leads every greedy round
iab.categorymarginal +0.00pp — a pure function of app.bundle
8distinct
Arts & EntertainmentNewsSportsTechnology
Quarantined · awaiting approvalnewly observed — ineligible for the ranking until approved (ADR 0013 G-1 layer 2)
device.foldStateprovisional standalone ≈0.8pp — unconfirmed until approved
3distinct
foldedunfoldedflatobserved · awaiting operator approvalfirst seen 2026-07-24 · 4 days ago
Never eligiblePII / mechanical — not operator-approvable, at any layer (ADR 0013 G-1 layer 3)
deviceIFAper-device identifier
—
never eligible — PII / mechanical
geo.lat / geo.lonprecise device location
—
never eligible — PII / mechanical
bidfloorthe SSP quoting a price, not an audience property
—
never eligible — PII / mechanical
Grain — how many signals define a segment
derived N (auto)
Today's engine only recognizes geo.country · device.type · os · app.bundle · iab.category and clamps to 5 signals total (SignalDeclutterSet). imp.tagid and slot are new candidates ADR 0013's measurement discovered — they preview the target grain job, not what ships today.
The order above is derived nightly from measured price evidence (ADR 0013 G-2) — not a metric a developer authored, and not the old fixed priority list geo.country → device.type → os → app.bundle → iab.category. Your exclusions above, and a pin below, override the derived default.
4 / 7
Stopped at N=4 — the next candidate, slot (banner size), adds only +0.07pp, below the +0.5pp stopping floor (ADR 0013 G-3, OQ-1 resolved 2026-07-22).
The engine keeps at most 5 defining signals today (SignalDeclutterSet) — no control here can be dragged to a value the engine would silently clamp without this screen saying so out loud; that ceiling loosens once the grain job (ADR 0013 G-2) ships.
Live segment-count preview
recomputes on every toggle and grain change · no reload
Live · Generation A
1,047
2 signals · imp.tagid + geo.country
Proposed
—
—
—
No signals observed yet for this tenant
The discovered catalogue populates automatically once traffic starts flowing through the exchange for this tenant — there's nothing to configure until then.
Segments · identity view which signals define each segment, which generation minted it
Complements the Price Card's Segments tab, which is the pricing view (premium / exploring / demoted, the three gates) of these same rows. This list is the identity view: the tuple, the generation, and what it descends from.
Inherits the parent's prior. A child starts from the parent's posterior-as-prior and earns its own verdict from its own conversions — price is not copied (heuristic-engine.md Q4; PriorResolver.php:43; ADR 0012 D-3).
Lineage which generation is live, which is building
Only one generation is ever published at a time — this is what makes double membership impossible (ADR 0012 D-4). A new generation builds completely, in the background, before anything switches.
Generation A● live
Signals2 · imp.tagid, geo.country
Built2026-07-25
Segments1,047
Usable (≥1k req · ≥100 dev)329 · 97.7% traffic
Memberships218,430
Retired — pruned in 14 days (dsp.audiences.regrain_grace_days = 14, ADR 0012 D-4 OQ-1, resolved 2026-07-21).
design target · generation_id / parent_id columns land with packet 014 — rtb_segments has neither today
—
Queued for review · change #1842 — nothing rebuilds until a super-admin approves. Open the review queue →
Applied.
You've stepped back to the Orchestrator
Campaign creation, dashboards and reports live on the Orchestrator plane — notice the chrome went neutral and the red identity dropped, so you always know which plane you're on. This DSP mockup stubs those pages.