Template: financial classification
Classify a financial record — a transaction, a document, a case — into your own categories and risk flags, and hand off the ones a person must review. This page is one of the use-case templates — a starting point, not a finished route. Financial records are regulated data: read the custody terms in the fit note below, and until a BAA or DPA is in place run this on a zero-retention route so ModelRig holds no content. The machine-readable source is node_modules/modelrig/templates/financial-classification.json.
Does this task fit?
Financial classification fits the shipped teach → calibrate → grade → optimize loop when four conditions hold. (1) Your categories and the records you classify are stable enough that last quarter's examples still describe this quarter's — if the taxonomy is still moving, settle it before you calibrate. (2) Someone who owns the process can write down what a correct classification is, which is the grading guide below. (3) A reviewer who knows the domain can grade a batch of past records against the calls they would have made, so a grader can be calibrated against them. (4) You process enough records that calibration and optimization pay back. Financial records are regulated data, so the custody terms come first — quoted verbatim from the published content custody terms: "Do not send protected health information or other regulated data through ModelRig until a BAA or DPA is in place. This service is not offered for regulated data today, and nothing on this page should be read as agreeing to handle it." Until those terms are in place, the today-path is to run this on a zero-retention route (or with content custody turned off), so ModelRig holds no content and grading is limited to the scores and metadata your own systems send. The full terms are at https://modelrig.ai/terms/content-custody. This template gives you a classification shell and a grading guide to fill in; it makes no claim about how well any model classifies your records — that is what your goldens and grades measure — and it makes no compliance claim of any other kind.
Starter schema
Replace every TODO with your own taxonomy; the enum slots ship without values on purpose, so an unfilled template refuses to look finished.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$comment": "STARTER SCHEMA. Replace every TODO with your own taxonomy before use. The template runs as-is: free-text fields validate immediately. TODO markers show where adding your own enum values tightens grading to your categories; do not copy example words from the docs.",
"title": "FinancialClassification",
"type": "object",
"additionalProperties": false,
"required": [
"classification",
"needs_human"
],
"properties": {
"classification": {
"type": "string",
"description": "The category this financial record belongs in. TODO(enum): constrain this to YOUR own category labels by adding an \"enum\": [ ... ] here. It runs as free text immediately; add your own enum values here to tighten validation and grading to your taxonomy.",
"$comment": "TODO(enum): add your financial categories as the enum for this field."
},
"risk_flag": {
"type": "boolean",
"description": "True when the record carries a risk your process wants surfaced (a review trigger, an exception, a regulatory-sensitive case). Optional; delete it if you do not track a risk flag."
},
"needs_human": {
"type": "boolean",
"description": "True when the record is ambiguous or regulatory-sensitive and a person must decide. Pairs with the escalation band in the grading guide."
},
"rationale": {
"type": "string",
"description": "One or two sentences grounding the classification in what the record actually contains. Optional; keep it if you want the grader to check the decision is explained."
}
}
}
Starter grading guide
The starter criteria run as written — sharpen each one in your team's own words as you grade. They are in the exact jsonb shape the set_task_settings write path validates — binary checks, each with a one-sentence pass and fail. There is no pass_threshold here: that lives in the route's grade: block.
classification-correct — Classification is correct
- Pass: the record gets the category a reviewer on your team would have chosen for it, by your own rules.
- Fail: The record is classified into a category that does not match what it actually is, or into a catch-all when a specific category fits.
grounded-no-invention — Decision is grounded in the record
- Pass: every part of the classification is supported by something the record actually contains; nothing is invented.
- Fail: The output asserts an amount, a party, or a status that the record does not contain.
risk-consistent-with-rules — Risk flag follows your rules
- Pass: the risk flag is set when your own criteria call for it and clear when they do not.
- Fail: A record your rules would flag is left unflagged, or a routine record is flagged for a risk it does not carry.
human-flag-when-unsure — Ambiguous or sensitive records are flagged for a human
- Pass: a record that is genuinely ambiguous or regulatory-sensitive sets needs_human rather than being auto-classified.
- Fail: A record a reviewer would have hesitated on is classified automatically with false confidence.
The guide's escalation band starts at epsilon: 0.1: a grade within that distance of the route's pass threshold is treated as judge-uncertain and sent to a human. It is a starting band — tune it as your grader calibrates.
Golden checklist
Roughly twenty examples that cover:
- One clear example per category in your taxonomy — the ordinary, unambiguous record for each category.
- The two or three categories your team most often confuses, side by side, so the guide learns the boundary between them.
- A record that sits on the edge of a risk rule — the golden fixes whether it is flagged and why.
- A regulatory-sensitive record that should reach a person regardless of category — the golden shows needs_human set.
- An incomplete or malformed record — the golden shows it flagged for a human rather than force-classified.
- A routine, low-risk record — so the guide learns the ordinary pass, not only the exceptions.
- Aim for roughly twenty goldens total, weighted toward the edge-of-rule and sensitive records rather than the routine centre.
Escalation starter
Start by escalating to a person whenever the model sets needs_human, and always for regulatory-sensitive or high-risk records regardless of the classification. The machine-side band lives in starter_guide.escalation.epsilon: a grade within that distance of your route's pass threshold is treated as judge-uncertain and sent to the review queue. The 0.1 here is a starting band — keep it wide until a reviewer has graded enough records to trust the grader, then narrow it.
Apply it
By hand: copy the starter schema and replace each TODO with your own categories and risk rules; sharpen each starter criterion in your team's words; gather the goldens the checklist describes; set the escalation band. Settle the custody posture — a zero-retention route or content custody turned off — before you send any regulated record.
From a coding agent: the template feeds through the tools that already exist — create_route drafts the route bundle from the starter schema (files only, never your source), and set_task_settings (the task-settings scope) authors the grading guide as-is — the starter criteria run as written; sharpen them to your own rules as you grade. No new tool is involved. See the use-case templates overview for the full two-path walkthrough.