ModelRig Quickstart Routing & reliability Route bundles Probes Bake-offs & replay How it fits Grade protocol Optimization loop Caching lifecycle Bring your traces (OTLP) Observe a pipeline Migration playbook (T0–T2) Recognition playbooks Tenants & statements Published receipts Provenance & trust Artifact content custody The MCP oracle Use-case templates Template: ticket triage Template: document extraction Template: CS next action Template: lead qualification Template: compliance review Template: catalog cleansing Template: call disposition QA Template: financial classification Template: medical classification Leaderboard

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

grounded-no-invention — Decision is grounded in the record

risk-consistent-with-rules — Risk flag follows your rules

human-flag-when-unsure — Ambiguous or sensitive records are flagged for a human

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:

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.