Open-source financial engine

Salli computes. Your AI explains.

The auditable engine for household finance under an adviser’s AI, or a product’s: balanced books, exact figures, cited rules.

A question, computed Test data
  1. The question

    “A 5,000.00 bonus: pay off the 4.5% loan, or invest it?”

  2. Your AI asks Salli

    compare_options Invest Pay down

  3. Salli computes

    Net worth in 10 years, at a 4% real return EUR

    Invest
    +2,404.72
    Pay down
    +2,558.51
    Break-even return
    4.51%

    Assumptions, versions and a hash recorded with every result

  4. Your AI explains

    “Below a 4.51% real return, paying off the loan ends ahead; from 4.51%, investing does. Which return to expect is your call.”

Numbers from Salli, words from the AI. Figures from salli-core’s golden test household, not anyone’s money.

The ledger

Every entry balances. Nothing is overwritten.

Exact decimals at each currency’s precision, and a reversal for every correction.

How Salli keeps the books

Ledger · entries · USD Demo data
Four journal entries, each with its debit equal to its credit. The rent entry is corrected by a reversal, a new entry with the same amounts and the directions flipped; the original stays, marked reversed.
Account Debit Credit
Oct 1, 2026 October salary 000000c9
Checking 5,000.00
Salary 5,000.00
Oct 3, 2026 Rent for October Reversed 000000ca
Rent 1,800.00
Checking 1,800.00
Oct 5, 2026 Weekly groceries 000000cb
Groceries 412.35
Credit Card 412.35
Oct 3, 2026 REVERSAL: Rent for October Reverses 000000ca 00000bb8
Checking 1,800.00
Rent 1,800.00
Every entry balances, and a correction is a new entry: the original is never edited. Entries from salli-core’s CLI tests.

One engine, from every side.

Documents for options and rules, tools for agents, and a command line, all real Salli.

salli.scenario/1
{
  "schema": "salli.scenario/1",
  "label": "Car on finance",
  "as_of": "2026-10-11",
  "horizon_years": 20,
  "changes": [
    { "type": "one_off", "date": "2026-12-01",
      "amount": "-18000.00", "label": "The car" },
    { "type": "loan", "principal": "18000.00",
      "annual_rate": "0.069", "term_months": 48,
      "start": "2026-12-01", "label": "Car loan" }
  ]
}
From docs/scenarios.md
salli compare
$ salli compare cash.json instalments.json
Comparing 2 options as of Oct 11, 2026, in EUR, over 20 years

                                 BASELINE      PAY CASH   INSTALMENTS
Lowest cash                     13,998.91     11,598.91     13,821.01
Net worth in 5 years           485,551.81    483,151.81    482,585.47
Interest on debts                2,009.25      2,009.25      2,099.93
Financially independent          May 2042      Jun 2042      Jul 2042
From the CLI’s scenarios test
MCP · start_decision

Your AI calls a tool

{
  "method": "tools/call",
  "params": {
    "name": "start_decision",
    "arguments": {
      "template": "emergency-fund",
      "answers": {
        "target_months": "9",
        "set_aside": ["200.00", "500.00"]
      }
    }
  }
}

Salli answers, in part

"cover": {
  "monthly_spending": "1898.32",
  "target": "17084.88",
  "now": "8.32",
  "options": [
    { "option": "As things are", "month": null },
    { "option": "Set aside 200.00 a month", "month": "2027-05" },
    { "option": "Set aside 500.00 a month", "month": "2027-01" }
  ]
}
From the golden template test
salli tax rules activate
$ salli tax rules activate "XA 2031"
Activate XA 2031, version 2?
Salli would compute your XA 2031 tax with version 2 instead of version 1 (active since Feb 2, 2031).

Written by  an agent (Claude)
Why         Allowance raised to 12,500 by the 2031 budget

Changed figures (1)
  ~ blocks[key=allowance].amount  12000 → 12500
      source: Budget Statement 2031 — https://example.org/xa/budget-2031, retrieved 2031-03-02

Worked examples (2 of 2 pass)
  ✓ Salary of 30,000
  ✓ Salary of 60,000

Type 2 to activate version 2 of XA 2031, or anything else to cancel
# a person types 2; an agent can't, and there is no --yes
✓ XA 2031, version 2, is active: Salli computes your XA 2031 tax with it.
From the CLI’s tax rules test

Build or start from Salli

The money layer under your AI is the hard part.

Built in-house

  1. A model does the arithmetic.
  2. Figures arrive without their sources.
  3. Records are edited in place.
  4. Tax rules hide in code.
  5. The same review is rebuilt each time.

With Salli underneath

  1. Engines compute; the model only explains Salli’s figures.
  2. Every result records its assumptions, versions and a hash.
  3. Postings are permanent. A correction is a reversal.
  4. Tax rules are cited data, activated only by a person.
  5. Same inputs, same figures, every time.

Trust you can check.

Every claim links to the code that proves it. No certifications yet.

Everything you can check, and what isn’t there yet

What Salli records Demo data
  1. 09:41:02 audit_log post_journal_entry {"description": "Weekly groceries", "amount": "412.35", "currency": "USD"} approved
  2. 09:41:02 journal_entry 000000cb posted: Dr Groceries 412.35, Cr Credit Card 412.35
  3. 09:44:17 journal_entry 00000bb8 posted: REVERSAL: Rent for October, reverses 000000ca
  4. 09:52:40 audit_log activate_tax_rule_set {"version": 2, "content_hash": "b2b2b2b2b2b2…"} approved
  5. 10:03:11 decision recorded: chosen "Keep as is", hash sha256:… verified
Real record types and field names; made-up times.

Become a design partner.

A paid pilot of four to six weeks on your own client cases, run alongside the way you work today.

By email to hello@salli.money. No form, no tracking.