oatmilk/classifier.mdllms.txt

# Classifier: Sorts what it knows. Asks what it doesn't.

 
> Each bank and card line runs through rules, memory, receipts and Jev. Oatmilk sorts it only when it's sure, and asks you one question when it isn't.
 
[Get started](https://app.getoatmilk.com/sign-up) · [Sign in](https://app.getoatmilk.com/sign-in) · [Docs](https://getoatmilk.com/docs.md) · [llms.txt](https://getoatmilk.com/llms.txt)
 

## How it works

 
1. A charge comes in
2. It runs the steps
3. Unsure? It asks you
 

## What it does

 
- **Stops at the first step that knows.** Each line goes through fixed rules, memory, its receipt and Jev in order, and stops at the first step that settles it.
- **Decides only when it's sure.** It sorts a line on its own only when the top answer is at least 85% likely and 20 points ahead of the next, and points the right way.
- **One plain question when it isn't.** When nothing is sure enough, a second opinion looks at related records, then writes one question for you in Needs you.
- **Learns from your answers.** Your answers and corrections become memory, so the next charge from the same place is sorted for you.
- **Every step on the record.** Each step it tried is kept on the line, and every change shows in History and can be rolled back.
- **Runs on local models too.** It works with Ollama, LM Studio or any OpenAI-compatible server on your own computer.
 

## How it works, step by step

 
Every bank, card and Wise line goes through these steps in order. It stops at the first step that settles the line, and keeps every step it tried on the record.
 
1. **Set by a person?** Anything a person corrected is never touched again.
2. **Fixed rules.** Rules for bank lines that are always the same: card payments, Wise fees, conversions, interest and top-ups, and transfers between the company's own accounts.
3. **Memory.** Rules learned from people's corrections (an exact merchant) or added by hand ("merchants containing …"). A memory rule is certain.
4. **Earlier second opinions.** A second-opinion answer already given at 85% or more becomes a rule.
5. **Matched receipt.** The category from the receipt matched to the line.
6. **Jev.** Two questions in one call: the nature of the line (one of 12 kinds: purchase, customer payment, supplier refund, own transfer, contractor payment, payroll, tax payment, owner transaction, bank fee, interest, personal, unclear) and its category, chosen from the company's own active categories or "none fits". Jev sees up to 5 similar past transactions, what's known about the merchant, the company's guidance and its memory.
7. **Evidence and tax checks.** Whether the line has its receipt: attached, not needed, under $30, searching or missing.
8. **Second opinion.** When Jev isn't sure enough, an AI agent looks up to 10 related records (from 120 days before to 60 days after) and decides only when it is at least 85% sure. Otherwise it writes one plain question for a person.
 

## When it decides on its own

 
A line is sorted without a person only when all of these hold:
 
- The top answer is at least **85%** likely.
- It is at least **20 points** ahead of the runner-up.
- The direction makes sense: no income on money going out.
- The nature isn't **personal** or **unclear**. Those two are never sorted on their own.
 
Anything else lands in **Needs you** as one plain question, such as "Was Corner Café a client lunch?". Most lines settle themselves; the unsure ones wait for a person. Classifiers choose only from your active categories.
 

## Jev

 
Jev is TypeSafe's decision model. It answers typed questions about a record (pick one, yes or no, or a score) and returns a probability for every answer plus a confidence, so Oatmilk can tell a sure answer from a guess. Requests go out with zero data retention, and lines run 6 at a time. Oatmilk also uses Jev for receipt categories, receipt matching, mail routing, mailbox screening, project tags, search ranking and compliance. There are no published accuracy numbers: it decides only when it is sure.
 

## What you control

 
On the **AI** page:
 
- **Classifiers**: the model and its thresholds.
- **Playground**: try a classifier on a real email or receipt before it touches your books.
- **Memory**: rules learned from corrections, rules you add ("merchants containing …"), and notes. Corrections become memory.
- **Guidance**: plain words per mailbox or category, up to 2,000 characters. Guidance helps it choose; it never skips the safety checks.
 
Every change shows in **History** and can be rolled back.
 

## With Ask AI and AI agents

 
Ask AI and connected AI agents can:
 
- **Explain a classification**: why a line got its category, which step decided it, what it saw and what is still needed.
- **Classify up to 25 lines at once**, with a dry run first so you see what would change.
- **List and update rules** in memory.
 

## On local models

 
The classifier also runs on your own computer ([local models](/local-models)):
 
- **Ollama**: the `tev1` decision model through Ollama's systemone decision endpoint (Ollama 0.35 or later), or the larger `nimble` 9B.
- **LM Studio**: a small chat model such as `qwen/qwen3.5-4b`.
- **Any OpenAI-compatible server**: vLLM, llama.cpp or LocalAI.
 
Decision models keep the same checks. A plain chat model has no calibrated confidence, so with one, every match waits for a person.
 

## More from Oatmilk

 
- [Evidence matching](https://getoatmilk.com/evidence.md): Oatmilk reads receipts from your company's inboxes and matches each one to its charge. It asks you when it isn't sure and keeps the original.
- [Bookkeeping](https://getoatmilk.com/bookkeeping.md): Bank, card, Wise and Stripe charges come in and get sorted. Oatmilk asks you only when it isn't sure.
- [Compliance](https://getoatmilk.com/stay-compliant.md): Ask any rules question and get an answer with official sources. Guides, deadlines and rule changes for your company, in one place.
- [Invoices](https://getoatmilk.com/invoices.md): Make an invoice in a minute, send it, and see when it's opened and paid.
- [Agreements](https://getoatmilk.com/agreements.md): Write an agreement, send it to sign on any device, and keep every signed copy with a full record.
- [Contractors](https://getoatmilk.com/contractors.md): Contractors send hours from their own portal. You approve with a tap, pay with Wise and get tax slips at year-end.
- [Tax](https://getoatmilk.com/tax.md): Year-end for Canadian companies, one plain question at a time. T2, GST/HST and T4A work, ready for your accountant.
- [Ask AI](https://getoatmilk.com/ask-ai.md): Ask a question about your company and get a straight answer. Ask AI reads your books and asks before it changes anything.
- [Accountants](https://getoatmilk.com/accountants.md): Invite your accountant to see the books and help with year-end. You pick what they can do and when it ends, and every action is on the record.
- [Run it locally](https://getoatmilk.com/local.md): Run Oatmilk on your own computer with the CLI and the web portal, or choose where each part runs: this computer, the cloud, or off.
- [Local models](https://getoatmilk.com/local-models.md): Run Ask AI, the classifiers and document reading on Ollama, LM Studio or any OpenAI-compatible server. Mix local and cloud by role.
- [CLI](https://getoatmilk.com/cli.md): Oatmilk in your terminal: every page one keypress away, Ask AI built in, and themes that work in light and dark terminals.
- [AI connectors](https://getoatmilk.com/mcp.md): Connect Claude, ChatGPT, Cursor, Codex and more to Oatmilk. Your AI can do what you can do, and nothing more.
 
Human version: https://getoatmilk.com/classifier