Cadence
Model evaluation

How good is the categoriser?

The categoriser is run over a labelled synthetic set. Ground truth comes from the Demo Bank generator and a hand-authored hard-case set — independent of the model, so the score is not circular. Results below are the deterministic baseline; run the live Gemini path to compare.

99%accuracy

Categoriser accuracy

Rules baseline

1059 / 1067 labelled transactions correct across 16 categories.

Each click runs the live model (Groq GPT-OSS 120B, with Gemini 2.5 Flash failover) over a 40-line sample. The free-tier providers are rate-limited, so if a fresh call is not available this falls back to the model's cached labels from an earlier run(still the model's own output), and only to the deterministic rules baseline if nothing is cached. The model only labels transactions — the credit decision itself is deterministic. Synthetic data throughout.

Overall accuracy
99.3%
Labelled lines
1067
generator + hard cases
Hard-case accuracy
43%
6/14 ambiguous
Categories
16
of 16 in the taxonomy

Per-category precision & recall

CategorySupportPrecisionRecallF1
Salary42100%98%99%
Rent45100%98%99%
Utilities119100%100%100%
Insurance37100%97%99%
Groceries412100%100%100%
Transport102100%100%100%
Subscriptions4496%100%98%
Loan repayment25100%96%98%
BNPL20100%95%97%
Other credit12100%100%100%
Discretionary135100%99%100%
Transfer4295%98%96%
Fees19100%100%100%
Gambling13100%92%96%

Confusion matrix

Rows = true category, columns = predicted. The diagonal is correct.

Salary
41
1
Recurring income
Rent
44
1
Utilities
119
Insurance
36
1
Groceries
412
Transport
102
Subscriptions
44
Loan repayment
24
1
BNPL
1
19
Other credit
12
Discretionary
1
134
Transfer
1
41
Fees
19
Gambling
12
1
Other

Hard cases, shown failing honestly

Hand-authored ambiguous transactions where categorisation is genuinely hard. 8 of 14 are misclassified by the current path — we show them rather than hide them.

Überweisung M. Schmidt Privat
truthSalary→ predictedTransfer

Irregular salary paid as a personal transfer — no 'Gehalt' keyword to anchor on.

SplitPay Abo-Rate Mai
truthBNPL→ predictedSubscriptions

A BNPL instalment that calls itself an 'Abo' — reads like a subscription.

Übertrag Rückzahlung an Familie
truthLoan repayment→ predictedTransfer

An informal loan repaid to a family member — looks like an ordinary transfer.

Freizeitwelt Entertainment Card
truthGambling→ predictedOther

Gambling top-up behind a generic 'entertainment' merchant name.

Monatsbeitrag Mitgliedschaft Rechtsschutz
truthInsurance→ predictedSubscriptions

Legal-protection insurance billed as a 'membership' — overlaps with subscriptions.

Dauerauftrag Wohnung Vermietung Sieglinde
truthRent→ predictedOther

Rent to a private landlord via standing order, without the word 'Miete'.

Markthalle Bistro Mittagstisch
truthDiscretionary→ predictedGroceries

A café inside a supermarket brand — eating out, not groceries.

Gutschrift Rückerstattung Kaution
truthTransfer→ predictedRecurring income

A returned rental deposit — a credit, but NOT income.

The limitation we own

Ground-truth labels here come from the Demo Bank generator and a hand-authored hard-case set — they are independent of the categoriser, which keeps the score from being circular, but they measure consistency against a known synthetic standard, not absolute truth. A real evaluation needs human-reviewed labels with measured inter-rater agreement, a representative sample of live data, and per-category cost weighting (mislabelling a loan repayment matters more than a café). The number on this page is a development signal, not a production claim.