Your household's money, explained. With your own numbers.

A private coach for one household. It syncs your bank accounts through the EU's open-banking rules, sorts every payment, and answers questions like “why was July expensive?” with figures computed by code, never guessed by a model.

Self-hosted and open source, for households in France and Italy.

No bank yet? Explore the demo household: uv run python scripts/demo/seed_demo.py --home /tmp/coach-demo

July · demo household
    Labelled by your rules and memory first; a model only sees the long tail, redacted.
    39read-only finance tools
    13coaching skills
    4model backends, one local
    0trackers, CDNs, telemetry
    en · fr · itinterface languages
    How it answers

    Numbers come from code.
    Words come from the coach.

    The model never reads your raw transactions. It calls read-only tools that return computed, redacted results, and every claim it makes points to the payments behind it.

    Why was July so expensive?

    No model in the data path

    Sync, de-duplication, recurring payments, forecasts and budgets are plain, tested code.

    Evidence for every claim

    Each figure cites hashed transaction refs; the app turns them back into the real payment for you.

    It proposes, you decide

    The coach can only propose memory changes. You read the diff and accept it yourself, in a terminal.

    The web app

    Every corner of a household's money.

    A fast local web app over the analytics: light and dark, phone and desktop, English, French and Italian. These are real screens of the demo household.

    127.0.0.1:8765/
    What it does

    Everything a household needs.
    Nothing it didn't ask for.

    01

    Bank sync, the legal way

    PSD2 through your own Enable Banking application in restricted mode: the longest history your bank allows, a daily incremental sync, consent expiry warnings. CSV, OFX and CAMT.053 imports for the rest.

    02

    Categories that learn

    Bank parsers, your notes, rules and a nearest-neighbour step first; a model only for the long tail.

    03

    A usual month

    Averages without one-offs, anomalies, a 90-day forecast with its band, budgets and goals.

    04

    Subscriptions & contracts

    Price rises, overlaps, notice periods under French and Italian rules, cheaper offers dated and sourced.

    05

    Loans & net worth

    Amortisation schedules, payment checks, renegotiation and insurance estimates, leases with mileage.

    06

    A rental flat

    Twelve months of rent and costs, the effort d'épargne, a tax-incentive scheme's commitment with its rent cap and tenant checks, and the tax-year candidates. Never a recommendation to sell or keep.

    07

    A household, not just an account

    Who owns which account, who a payment belongs to, the kids' pocket money and gentle limits, and who pays what. Per-person logins: a child sees only their own money, and nothing about a child ever leaves the machine.

    08

    Alerts, quietly

    In the app by default. ntfy, e-mail or Telegram only if you enable them, with minimal messages.

    09

    Claude Code skills

    Monthly review, explain a spike, what-if, mortgage check, tax candidates: 13 skills over the same tools.

    Private by construction

    You can see, and cut,
    every outbound path.

    An encrypted database on your machine, keys in the Keychain or a 0600 secrets folder, the web app on 127.0.0.1 behind a one-time login link. Pick a mode and watch the paths.

    Data flows: your machine in the middle, the bank API, the model backend and alert channels outside YOUR MACHINE Sync · dedup · balances Classify · rules · memory Encrypted database Analytics · forecast Web app on 127.0.0.1 + redacted tools for the coach Your bank PSD2 · Enable Banking Model backend redacted, on request Alert channels off until you enable Ollama local model, loopback

    • Encrypted at rest. SQLCipher database, encrypted backups, keys never in a file you commit.
    • Redacted for models. People and accounts become pseudonyms, payments hashed refs, small merchants generalised.
    • A journal of every call. coach privacy report lists host, size and purpose of each outbound call, never a payload.
    • A typed yes. Nothing leaves the machine at first run without a typed confirmation; destructive commands need a terminal.
    The film

    A minute and a half with the Rossi family.

    Recorded on the synthetic demo household: a tour, a question to the coach, an explained transaction and the subscription inventory. Narrated in English and French by Kokoro, an open-source speech model, with subtitles.

    Your model, your call

    Bring the model you trust.

    A model is used for the long tail of categories and for the coach's words. Everything else works without one.

    Subscription

    Claude Code

    Your own Claude plan through the claude CLI. Also in Docker, opt-in.

    [coach] backend = "claude-code"
    API

    Anthropic API

    An API key in the Keychain, batch mode for cheaper bulk categorisation.

    [coach] backend = "anthropic-api"
    Any provider

    OpenRouter, Eden AI…

    Any OpenAI-compatible API. On OpenRouter, only providers that don't keep prompts.

    [llm] openai_base_url = "…/v1" openai_model = "…"
    Fully local

    Ollama

    Pair it with local_only: the bank sync becomes the only network use.

    [privacy] local_only = true
    Get started

    Up in ten minutes.

    Install it, create your own free Enable Banking application, and let the first-run wizard walk you through the rest. It is resumable and asks before anything leaves your machine.

    1. coach initYour private home, the secrets, an encrypted database.
    2. coach setup enablebankingYour own application in restricted mode, step by step.
    3. coach setupConnect a bank, first sync, categorise, the household interview.
    4. coach uiOpen the app through a one-time login link.