Systems
The machinery, not the method
Most measurement programs do not fail on statistics. The methods are published and well understood. What is missing is the plumbing that lets you apply them repeatedly, on a deadline, without breaking consent or colliding with another campaign.
Components are listed in dependency order. You cannot hold out an audience you cannot define, and you cannot evaluate a policy whose decisions were never logged. Each one states the decision it encodes, who tends to own it, and what has to exist underneath it.
Foundation
Who exists, what may we do with them, and how do we describe a group.
- Shared Planned
Customer State Model
What do we know about this customer right now, and what are we permitted to do?
One row per person or account carrying consent, lifecycle stage, eligibility flags, and contact history. The foundation every audience, experiment, and policy reads from.
Not yet written - Shared
Audience Builder and Capacity Planning
Who is eligible for this campaign, and can we actually serve them?
Audience definitions as versioned, reusable objects instead of one-off SQL, and the capacity check that decides whether a test was ever going to work.
Needs 2 component s Read → - Data engineering Planned
Consent and Suppression
May we contact this person, on this channel, for this purpose?
Lawful basis, channel permission, global opt-outs, and complaint handling as one shared layer rather than a filter each campaign reimplements.
Needs 1 component Not yet written
Experimentation
Splitting an audience so the result can be believed later.
- Data science Planned
Assignment and Experiment Registry
Which arm is this customer in, and does that conflict with another live test?
Deterministic hash-based assignment, persistent holdouts, overlap rules, and a registry that stops two campaigns from colliding on the same people.
Needs 1 component Not yet written - Data engineering Planned
Exposure and Decision Logging
What did we decide for this customer, why, and did it reach them?
Logging what was decided and what was actually delivered, not just what was sent. The component that makes everything downstream measurable at all.
Needs 1 component Not yet written - Calculator
Geo Holdout Designer
Is this geo test powered to find an effect worth acting on?
Work out what lift a geo test could detect before you run it. The market-level counterpart to audience capacity planning.
Needs 1 component Read →
Measurement
Turning logged decisions into a standing readout.
- Data science Planned
Automated Measurement
Did this campaign create incremental value, and do we know before someone asks?
A standing readout that runs eligibility, assignment, delivery, exposure, outcome, and guardrails on a schedule instead of as a bespoke analysis each time.
Needs 1 component Not yet written
Decisioning
Choosing an action per customer, including no action.
- Data science Planned
Next-Best-Action Policy
Which action, if any, should this customer receive right now?
Turning scores into decisions under real constraints: capacity, contact fatigue, margin, cooldowns, and the explicit option of doing nothing.
Needs 1 component Not yet written - Shared Planned
Governance for Agentic Campaigns
When an agent picks the action, how do we still know whether it worked?
Logged decisions, persistent controls, consent enforcement, and causal evaluation when an autonomous system is choosing the action.
Needs 1 component Not yet written
Why this section exists
A single incrementality study is a project. A measurement function is a system. The difference shows up the second time someone asks the question, and again every time a campaign has to be planned against a population that three other campaigns also want.
Everything here is written as a specification rather than an implementation, because the hard parts are the decisions each component encodes, not the code. Which consent basis applies. Who wins when two campaigns want the same person. Whether the organisation can serve the audience the statistics require. Those questions have the same answers whether the stack is dbt and Airflow or a CDP and a scheduler.