Available recipes
A/B test with holdout
Split traffic between champion and challenger; reserve a true holdout for causal uplift.
Per-category PRIE split
Route Cards candidates through one scoring profile, Loans through another — same flow.
Atomic channel coupling
Email digests where the hero placement and body placements stand or fall together.
Frequency caps
Cap per-day, per-week, per-category, per-channel — and verify with traces.
Fairness hard-gate
Block publish on disparate impact; configure thresholds + four-eyes override.
Reading the traces
Every recipe ends by pointing at the decision trace fields that prove the pattern worked:candidateCount/afterQualification/afterSuppression/afterContactPolicy/finalCount— the funnel.qualificationResults[]— which rules fired and on which candidate.contactPolicyResults[]— which policies suppressed which candidate.scoringResults[]— per-offer score, model type, and (when SHAP is on) per-feature contribution.selectedOffers[]— final ranked + placement-assigned output.channelCoupling[]— for atomic coupling: which channels cascaded.
GET /api/v1/decision-traces?customerId={id}&limit=N or open the trace card in Studio → Decision Traces.