Outcome Tracker Skill
Every prioritisation, forecast, and launch plan makes predictions — then everyone forgets to check them. This skill closes the loop: extract the predictions at decision time, park them somewhere durable, and score them against reality on a schedule. Over time it answers the question no one can answer today: which of our frameworks actually predict outcomes?
What This Skill Produces
- At decision time: a prediction record — each claim made falsifiable, with a metric, a direction/target, a check-by date, and a stated confidence
- At review time: an outcome scoring of due predictions (hit / miss / partial / unresolvable), with what was learned
- On demand: a calibration report — per-framework and per-confidence-band hit rates from the accumulated records
Required Inputs
Ask for (if not already provided):
- Mode — record (new decision), review (score due predictions), or calibrate (analyse the history)
- Record mode: the decision artifact (RICE table, forecast, launch plan, OKR set) and where records live (a
predictions/ folder in the Brain, or a JSON/markdown file in the repo)
- Review mode: the stored predictions plus current metric values for the due ones
- Calibrate mode: the prediction history (the calculator below reads it as JSON)
Making Claims Falsifiable (record mode)
Walk the artifact and force each implicit claim into this shape — a prediction that can't fill the row doesn't get recorded, it gets flagged as untestable:
Typical yields: a RICE table → one prediction per top-3 item (impact claims); a forecast → the quarter's number; a launch plan → its success metrics; an OKR set → each KR's target.
Scoring (review mode)
For each prediction past its check_by: hit (actual within the predicted band), partial (right direction, wrong magnitude), miss (wrong direction or no effect), unresolvable (metric never instrumented, or confounded by a simultaneous change — record why; a pile of unresolvables is itself a finding about how the team instruments its bets). Never rescore or reinterpret the original claim to make it a hit — the record is append-only.
Programmatic Helper
scripts/outcome_calibration.py (stdlib-only) computes the calibration report from a JSON array of prediction records:
python3 scripts/outcome_calibration.py predictions.json
echo '[{"framework":"rice-prioritisation","confidence":0.8,"outcome":"hit"}]' | python3 scripts/outcome_calibration.py -
It reports per-framework hit rates (hits + half-credit partials over resolved), per-confidence-band calibration (do 80%-confidence claims land ~80% of the time?), and flags overconfident bands. Use the computed numbers; don't estimate them.
Brain Integration
If a professional-brain (brain/) exists, records live in brain/predictions/<id>.md (one file per prediction, fields as frontmatter, [hunch]/[data] provenance on the baseline) and review mode starts by listing files with check_by in the past. Pair with schedule-recipe to run review mode monthly — outcome tracking only works as a ritual, not an intention.
Output Format
Record mode:
Predictions registered: [decision] — [date]
Review mode:
Outcome review — [date]
Calibrate mode: the calculator's report plus 2-3 sentences of interpretation — which framework has earned trust, where the team is overconfident, and the single instrumentation fix that would resolve the most unresolvables.
Quality Checks
Anti-Patterns
Example Trigger Phrases
- "Log what this plan predicts."
- "Review what actually happened."
- "Score last quarter's forecast against reality."
- "Did our prioritisation framework work?"