Decision
The model returns factor identifiers from a closed list. A rubric in code computes the band.
Context
The same party was being rated differently across turns, on different grounds each time.
Alternatives, and why not
- Let the model output the band directly against described criteriaAn analyst cannot defend, and counsel cannot review, a rating whose inputs change between runs. Non-reproducible is the same as wrong for this use case.
- Ask the model to explain its band and audit the explanationsA post-hoc rationale for a band the model already chose is not the reasoning that produced it.
Rationale
Reproducibility is the product. Fix the factor vocabulary, let the model do what it is good at, deciding which factors are present, and let code do what it is good at, which is applying the same rule every time.
What it cost
Rigid. A genuinely novel risk factor does not move the band until someone adds it to the list. That is visible and reviewable, which is better than a rating that moves for unknown reasons.
Outcome
Reproducibility became a checked property, with a script that verifies the same factors produce the same band.
What I would do today
I would add an explicit 'novel factor observed' output so the model can flag something outside the vocabulary without being able to score it. Today that signal is lost rather than escalated.
What it moved in the diagram