How the AI is evaluated
A language model is non-deterministic, so the same prompt can return different answers. In a regulated lending context that carries risk. The 2 things the model does, categorising transactions and explaining the decision, are each measured against explicit standards, run by hand before a deploy.
What the evaluations are for
The model can change
The domain is regulated
Every place a model writes text is held to a written standard
The credit decision is deterministic code over the categorised totals, so it falls outside these evaluations. The places a model produces text are held to the standards below.
The categoriser
The rationale
Each check runs in the cheapest way that fits it
Definitive things are code, subjective things are a model acting as judge, and the hardest calls are human. Production systems normally use these together.
Code
LLM-as-judge
Human
The categoriser evaluation
The labelled set is produced by a generator that assigns each transaction its true label at creation time, before the model sees anything. The score measures agreement with labels the model had no hand in writing.
What is measured
The categoriser runs over a synthetic set drawn from 8 personas plus 14 hand-authored hard cases, the deliberately ambiguous lines that a naïve rule gets wrong. It is scored on overall accuracy, per-category precision and recall, and a full confusion matrix, with a deterministic offline harness that fails the build if intended outcomes regress.
The rationale evaluation
These dimensions define the standard the rationale must meet. Compliance, groundedness and outcome-faithfulness are hard: a breach fails the run. The judged dimensions are advisory. This is the design the checks implement, and applying the result is a decision a person takes.
Offline before a deploy, online after
Evaluations are not run once. In a mature setup they gate a deploy and then keep watching production. Neither layer is automated here.
Offline, the pre-deploy check
Online, the standing watch
The numbers described here can be regenerated. The model evaluation page runs the categoriser over the labelled set on demand and shows accuracy, per-category precision and recall, the confusion matrix and the hard cases it fails.
The labelled evaluation set
A fixed set of inputs paired with known-correct outputs, held stable so a system can be measured against it repeatedly and compared across versions. The usual name for one is a golden dataset, which this set is not called here because it meets some of the properties below and not others. Cadence holds 1,067 labelled cases: 1,053 generated statement lines and 14 hand-authored hard cases.
Authoritative labels
Independent of the system under test
Frozen
Representative
Held out
Where a labelled set is possible it beats a judge, because scoring against known answers is deterministic and a judge's opinion is not. The judge exists for the rationale, which has no label to mark against.
The limit worth stating plainly: the generator writes both the transaction and its label, so any bias in the generator is invisible to the evaluation. If it writes German salary lines in a shape real banks never produce, the categoriser scores well on data that does not exist. The 14 hard cases are the only genuinely human-labelled part, and there is one rater, so there is no inter-rater agreement.
Known failure modes of a model used as a judge
A judge score is an estimate with error attached. The same questions apply to it as to any model in production: which version ran, has it been validated, and against what.
Self-preference
The instrument drifts
An unvalidated judge is decoration
Position and verbosity bias
What instrumenting this system exposed
Adding tracing to the 3 model call sites surfaced 7 control weaknesses, each recorded before being fixed. They live with the rest of the audit material.
What these numbers do and do not prove
Synthetic personas measure consistency against a known generator rather than absolute truth. That is an easier target than the ambiguity of real statements. A deny-list catches overt advisor language and misses paraphrase, which is why a judge runs behind it. The offline gate proves the deterministic path and the checks themselves are sound. It does not, on its own, certify every answer the live model gives.
A production system would add human-reviewed labels from real data, measure inter-rater agreement, and run the online layer described above. None of those are in place here.