Quick start
Import a dataset
Run an evaluation
Compare models
Available commands
Dataset management
Running evaluations
Viewing results
Cascade and analysis
Langfuse integration
Track experiments in Langfuse for side-by-side comparison and analysis.Setup
Commands
What gets created
When you run a Langfuse experiment, the system creates:- Dataset - Named
eval_<your_dataset_name>with all samples - Traces - One per sample showing input/output
- Scores - Accuracy scores (0.0 or 1.0) for each trace
- Dataset Runs - Links traces to dataset items for comparison
- Compare runs side-by-side
- Filter by score, model, or metadata
- Track accuracy over time
- Analyze per-sample results
Evaluation types
Categorization
Tests transaction categorization accuracy across difficulty levels. Metrics:- Accuracy
- Precision, recall, F1 score
- Null accuracy (correctly returning null for ambiguous transactions)
- Hierarchical accuracy (matching parent categories)
- Per-difficulty breakdown
categorization_golden_v1- 100 samples, US merchantscategorization_golden_v1_light- 50 samples, quick testingcategorization_golden_v2- 200 samples, US and European merchants
Merchant detection
Tests business name and URL detection from transaction descriptions. Metrics:- Name accuracy (exact match)
- Fuzzy name accuracy (similarity threshold)
- URL accuracy
- False positive/negative rates
- Average fuzzy score
merchant_detection_golden_v1- 90 samples
Chat assistant
Tests function calling and response quality for the AI assistant. Metrics:- Function selection accuracy
- Parameter accuracy
- Response relevance
- Exact match rate
- Error rate
chat_golden_v1- 50 sampleschat_golden_v2- routing and analytical tool scenarios; exercises CHAT classification (no tools), aggregate queries routed toget_income_statement/get_balance_sheet, and new analytical tool selection
Naive Bayes categorizer
Thenaive-bayes provider evaluates the family-trained Naive Bayes categorizer — the first stage of the auto-categorization cascade that runs before any paid provider sees a transaction. Pass PROVIDER=bayes to use the Bayes runner:
SPLIT_ROLE of test restricts the run to the test split only; omit it to run on all samples.
Important caveat: Golden datasets contain roughly one transaction per distinct merchant, chosen for coverage. Real families have the opposite shape — the same handful of merchants repeating hundreds of times — which is exactly the repetition Naive Bayes learns from. Numbers from this runner are a lower bound on production accuracy, not a measurement.
Cascade reporting
The cascade report shows how a paid provider performs on the transactions Bayes declined to categorize. This measures the value each provider adds on top of Bayes — the residual the LLM actually needs to handle. Produce the runs first, all on the same test split:Candidate analysis
The analyze command compares a candidate provider against a baseline. It outputs a side-by-side accuracy comparison, a confidence-calibration table for the candidate, a transaction-level disagreement breakdown, and a recommendation verdict.Creating custom datasets
Export your manually categorized transactions as a golden dataset:- Category was manually set by the user
- Category was NOT set by AI, rules, or data enrichment
rake evals:import_dataset[path].
JSON mode configuration
Control how the LLM outputs structured data. Configure via environment variable or Settings UI. Modes:auto- Tries strict first, falls back to none if >50% fail (recommended)strict- Best for thinking models (qwen-thinking, deepseek-reasoner)none- Best for standard models (llama, mistral, gpt-oss)json_object- Middle ground, broader compatibility