Below is a target layout for the project you build. You create these artifacts yourself:
business-ml-project/
README.md # question, result, evidence level and limits
pyproject.toml, uv.lock
contracts/ # input, label, cost and policy definitions
src/ # extraction, features, train, score, decide, feedback
configs/ # approved actions, budgets and release config
tests/ # meaningful data, policy and delivery checks
reports/ # model/policy comparisons and experiment memo
artifacts/ # versioned manifests; large/private files excluded from Git
operations/ # dashboard specification, rollout and rollback runbookDocument commands that create data, train, evaluate, replay decisions and start serving from a clean environment. A notebook can explore, but the delivered pipeline must run without manual cell ordering. Use synthetic examples for restricted data and state how they were generated.
| Gate | Evidence required | Completion level |
|---|---|---|
| Problem and data | Signed-off brief, schemas, clocks, mature labels or valid censoring records, allowed use | Prototype |
| Model | Same-split baseline comparison, honest holdout and uncertainty | Prototype |
| Policy | Constraints, support/identification limits, no-action baseline and evaluation | Prototype |
| Engineering | Reproducible commands, snapshot replay, execution logs and fallback rehearsal | Prototype |
| Launch readiness | Experiment protocol, owners, shadow results and stop/rollback criteria | Ready for a controlled pilot |
| Measured value | Executed valid assignments, mature outcomes, effect intervals and guardrails | Evidence for a business rollout decision |
An inconclusive or negative experiment is a completed analysis. Explain the result and keep the baseline when the evidence does not justify replacing it. End to end means the loop reaches a defensible decision, which may be to collect more data.