The Finanly Finance Model
An 8B model built for finance.
Finanly's own model, custom trained on financial work — ledgers, charts of accounts, reconciliations, statements. Ask in plain language; get the analysis, the forecast, the board report. On your hardware.
Plain language in
Ask like a founder. Get the finished work.
Type the request the way you would ask your controller. The model works on your governed ledger data and hands back the analysis, the forecast or the report — with the rows behind every number.
Reads the request as a margin bridge, Q1 → Q2
Pulls revenue, COGS and landed cost by product line
Writes the analysis with the rows behind it
| Freight per unit | +$0.42 | −2.6 pts |
| Capsules mix | +9% of sales | −1.1 pts |
| Espresso price increase | +3% | +0.6 pts |
Most of the drop is inbound freight: two air shipments in May carried 38% of the quarter's landed cost.
Illustration with sample figures: the request and output shapes show what the model produces; the numbers are not a real company's.
Custom trained
Trained on the work of finance, not the whole internet.
A general chatbot knows a little about everything. The Finanly model is 8 billion parameters spent on one domain: how books are kept, how they tie out, and how they are explained to a board.
- 01
Ledgers & journals
Double-entry structure, postings, periods and closing entries — the grammar of a general ledger, not generic text.
- 02
Chart-of-accounts vocabulary
Account types, cost centers, supplier and customer groups, so 'freight' and 'inbound shipping' land on the same account.
- 03
Reconciliation patterns
Bank-to-ledger matches, payout decomposition, internal transfers, fees and refunds — how real books actually tie out.
- 04
Statements & reporting
Balance sheet, P&L, trial balance, cash flow and variance — how finance teams read, explain and present them.
What it produces
From one sentence to the work product.
Six things the model does today, each labelled with its key in the platform registry.
- 01
Analysis
Ask why a number moved; get the bridge, the drivers and the rows behind them — from a governed plan, never SQL.
ai_bi_query - 02
Forecasts
Cash, revenue and burn projected from your own run-rate, receivables and payables, with scenarios in plain words.
ai_bi_query - 03
Board-ready reports
Monthly updates and statement commentary drafted in your format, every figure linked to the ledger.
bi_report_builder - 04
AI Match categorization
Three tiers: exact, then similarity against lines you approved, and the model only to disambiguate.
auto_categorizer - 05
Vendor enrichment
Bare bank descriptors become named counterparties through self-hosted web search. The model reads snippets, not your rows.
ai_vendor_enrichment - 06
Statement & compliance narrative
The model writes the narrative around numbers the deterministic engines already computed. It explains; it does not calculate.
compliance_reports
Most 'AI for finance' sends your ledger to someone else's general model and hopes the SQL it writes is right. Finanly does neither: its own finance model stays home, and it never writes SQL.
How a request becomes an answer
Four steps. The model plans; the ledger answers.
Scroll through the pipeline. Every frame is the real shape of the data at that step.
1 · The request
You type in plain English on the Business Intelligence page. Suggestion chips cover the questions founders ask most; anything else is fair game.
2 · The Finanly model plans
The 8B finance model receives the request and the governed vocabulary — measure names, dimensions, your chart of accounts — and returns a semantic plan. Three tools stop it inventing accounts, fields or dates.
3 · core-api validates
Every measure, dimension and period is checked against the semantic registry: 18 cubes, 89 measures, 668 dimensions. Unknown fields fail closed. The tenant comes from your session, never from the model.
4 · The ledger answers
Cube executes the plan on the canonical store and returns rows, a chart and the number. Save it, schedule it every 15 minutes, or pin it to a dashboard.
AI Match
It learns from what you approve.
Categorization is three tiers, and the model is the last resort, not the first guess. Every accepted line becomes history the next two tiers match against — your ledger vocabulary, tenant by tenant.
The normalized description matches a line you categorized before. Amount-aware: if two histories match, the closest amount wins.
Weighted token similarity against your tenant's history, with an amount tie-break when two candidates are near-equal.
Only when tiers 1–2 are unsure: the description plus the top 5 candidates go to the Finanly model to disambiguate. It picks; it does not invent accounts.
Private by architecture
Runs on your hardware. Sees one tenant.
The model is served on your own machine behind an internal-only gateway. Each call carries a short-lived token bound to one company; nothing is sent to a public AI service.
What the model sees
- Your question, in plain English
- The governed vocabulary: measure and dimension names, your chart of accounts, supplier groups
- Up to 5 candidate categories from your own history (categorization only)
- A counterparty name and public web snippets (vendor enrichment only)
- A short-lived JWT scoped to one tenant
What it never sees
- Raw transaction rows, balances or invoices
- Any other company's data
- Database credentials or SQL
- The public internet as an inference endpoint — the model runs on your box
- Permission to post, export or delete anything
Model card
One model, built for one job.
What it is, what it was trained for, what it takes in, what it produces — and where it runs.

- Model
- Finanly Finance Model
- Parameters
- 8B
- Training
- Custom trained for finance: ledgers, chart-of-accounts vocabulary, reconciliation patterns, financial statements
- Input
- Natural language — ask the way you would ask your controller
- Output
- Validated query plans, analysis, forecasts, board-ready reports, categorization, statement narrative
- Runtime
- Your own hardware; internal network only
- Reachability
- Called by core-api with a short-lived, tenant-scoped JWT
- Tools
- get_chart_of_accounts · get_cube_measures · resolve_period
- Web
- Self-hosted search for vendor enrichment lookups — search, not inference
Compared
General cloud AI vs a finance model you own.
Typical 'AI bookkeeping' feature
- General-purpose model, not trained for accounting
- Ledger rows sent to a public API
- Model writes SQL; you hope it's right
- Same model, every customer's data
- Confident answers with no plan to check
Finanly Finance Model
- 8B model custom trained for finance work
- Runs on your machine; internal-only gateway
- Model writes a plan; core-api validates; Cube executes
- Tenant-scoped token on every call; RLS underneath
- Plan, rows and number returned together
FAQ
Straight answers
What is the Finanly Finance Model?
Finanly's own 8-billion-parameter model, custom trained for finance work — ledgers, chart-of-accounts vocabulary, reconciliation patterns and financial statements — and served on your own hardware.
What can I ask it for?
Anything you would ask a controller, in plain language: why a number moved, a cash or revenue forecast with a scenario, a board update, commentary on a statement, or help categorizing the month's transactions.
Does anything go to a public AI service?
No. Inference runs on your hardware. The only outbound calls are connector syncs (your bank, Shopify, Flexport…) and self-hosted web searches for vendor enrichment, which carry a counterparty name, not your ledger.
How does it avoid making numbers up?
It never writes SQL and never reads the ledger directly. It returns a semantic plan; core-api validates every measure, dimension and period against the governed model, and Cube computes the figures. Unknown fields fail closed.
What happens when the model is wrong?
For analysis, a wrong plan fails validation and you get a refusal or a governed fallback (cash, AR, AP, balance sheet, P&L) instead of a wrong number. For categorization, a suggestion is a suggestion until a human accepts it, and every acceptance is undoable.
Can one company's data reach another?
No. Every call carries a short-lived token bound to one tenant, and Postgres row-level security enforces the same boundary underneath the application.
Does it work for Personal mode?
Yes. Personal mode has its own semantic tables (15) and endpoints (personal/bi/ask), isolated by tenant and product mode.
What does 65 / 86 mean?
We keep a catalogue of 86 questions founders actually ask (cash, AR/AP, margin, inventory, growth). 65 are answerable end-to-end today through the governed layer; the remaining 21 need cube measures that are scheduled, not promised.
Put a finance model next to your ledger.
Private beta. Runs on your hardware or a VPS you control.
