What-if demo

Pin any two of daypart, budget, and impressions — the engine solves the third and, the whole point, shows the uncertainty band around what it can deliver.

the spend lever
your target / the answer

Result

Delivery range & uncertainty

1 · Landscape — where is the terrain?

A 2.5-D ridgeline of expected impressions across daypart, stacked by budget level (back = higher budget). The bold ridge is your pinned budget; the markers are the chosen daypart (green) and the declined decoy (amber). Mean only — the band lives in the slice below.

2 · At your budget — which daypart clears the target?

The delivery band at your pinned budget: each daypart's floor–upside whisker with its expected dot. Green ring = chosen (the most-proven daypart that clears the target); amber ring = higher mean but less proven (declined). The dashed line is your target.

3 · Contour — how it navigated (search risk)

Top-down over daypart × budget. Along your pinned-budget row the tool picks confidence-first: it deliberately declines the higher-mean decoy in favour of the most-proven daypart that clears the target — that is the intended de-risk, not a failure to find the best. Dot size = band width (bigger = less proven). This is search risk, distinct from the per-plan forecast band above.

Dot size = band width (bigger = wider band = less proven); off-row area dimmed because only the pinned-budget row is in play.

Under the hood — the real Objective & Constraints flow

Actual intermediates for the current headline solve (budget + impressions → daypart). Every magnitude is a server value; only the ÷reference-domain normalisation and half = width ÷ 2 are derived, and both are labelled as transforms.

  1. 1 · Inputs

  2. 2 · Normalisation known reference-domain transform, not a result

  3. 3 · Forecast probes

    Half-width is the daypart-familiarity uncertainty — budget does not size it (v5.18).

  4. 4 · Selection (confidence-first)

  5. 5 · Carried band

  6. 6 · Efficiency

  7. 7 · Commit

Accepted limitation: F2's raw distance-to-seed and seed set are engine internals not exposed by the API, so the trace shows the resulting half-width as the uncertainty magnitude. A future enrichment could expose the seed distance from the engine.

Techniques — the optimization methods actually used

What is built, named by file and method. Grid + hill-climb find the peak of the mean; enumeration + the confidence-first rule pick the most-proven option (not the peak); bisection solves backwards for the budget. It is gradient-free — no LP/MILP, no Bayesian optimization — and the production constrained optimizer is a known gap (register R7).

PROVEN (PoC) BUILT / GATE-LOGIC

Core recommendation

  • Grid search + Multi-start hill-climb

    PROVEN (A2)

    optimizer/interim_search.py — a coarse grid seeds several hill-climb restarts to find the peak of the mean surface.

Pin-any-two headline

  • Exhaustive enumeration

    PROVEN (A2)

    demo/engine.py · solve_daypart — scores every daypart probe at the pinned budget (gradient-free, no search risk).

  • Lexicographic rule (confidence-first)

    PROVEN (A2)

    _confidence_first_pick — picks the most-proven daypart that clears the target, deliberately declining a higher-mean but wider-band decoy.

  • Bisection / monotone root-finding

    BUILT

    _min_budget_for_mean — solves backwards for the minimum budget that reaches a target mean.

Back-stage: the Objective & Constraints interface map

The block's real interface (Fig 1): what O&C consumes, its five functions, what it produces, and who consumes the committed goal. The invariant across it all: uncertainty is propagated, not collapsed.

PROVEN (PoC) BUILT / GATE-LOGIC MOCKED (fixture Fx) DEFERRED / NOT-IMPLEMENTED PARKED EXTERNAL

Inputs

  • Buyer lever-pulls (What-if)

    LIVE

    Your pinned daypart / budget / impressions drive every panel live.

  • Band (point + CI) from Predict & Score

    MOCKED (F2)

    Consumed, not produced by O&C — the forecast band comes from Predict & Score.

  • Seed templates (Pass 0) from Generate Candidates

    NOT IMPLEMENTED

    Upstream seed set is not wired in this PoC.

Five O&C functions

  • Goal store

    MOCKED (F4)

    Goal persistence stubbed by fixture F4.

  • Guided optimizer

    PROVEN (PoC)

    A1 band-widening + A2 CI-carry. Picks confidence-first and carries the band forward — it does not collapse it to a false-confident point.

    floor expected upside width

  • Preference inference

    DEFERRED (stub)

    Buyer preference learning is a stub in this PoC.

  • Communication

    PARKED (A5)

    Faithful narration is parked — a lexical judge isn't publishable (A5); it needs complex scenarios and a real LLM.

  • Commit gate

    BUILT / GATE-LOGIC

    A3 (floor) + A4 (CI-carriage) gate-logic; honest BLOCKED_ON_O3 / BLOCKED_ON_O2 under default flags — never a false COMMIT.

    not yet committed

Outputs

  • Draft results → What-if surface

    LIVE

    The draft band + surface you see above.

  • Committed goal → Smart Planner

    on Accept

    On Accept the gate emits the committed goal (or an honest BLOCKED outcome).

Consumers of the committed goal

  • Smart Planner (1st)

    EXTERNAL / downstream

    Then Policy Select · Buyer & Seller Agents · Anomaly Detection — outside Block 1.