Skip to content

Latest commit

 

History

History
651 lines (482 loc) · 37.1 KB

File metadata and controls

651 lines (482 loc) · 37.1 KB

Vision: The Cashflow CFO

Elevator Pitch

Avisio is the Cashflow CFO for freelancers and small service businesses. It answers the one question your bank, bookkeeping, and spreadsheets don't: what can you safely spend right now?

A bank balance is not spendable money. Taxes are coming. VAT might already be owed. Bills you've committed to will hit later. Avisio models that reality and keeps it current.

Connect your accounts, set your tax and reserve rules once, and Avisio continuously calculates your spendable amount ("Verfügbarer Betrag"). It factors in tax reserves, your planned expenses, recurring fixed costs, and upcoming commitments — so you stop guessing. You also get net worth, reserve buckets (income tax, VAT, emergency, custom), and a clear view of what's driving changes week to week.

Then there's Navi, the built-in agent that works on your actual numbers — not generic advice. Ask why your spendable amount dropped, what happens if you buy a new laptop next month, or how long your runway lasts at your current burn. Navi explains the drivers, flags risk early, and proposes concrete actions like adjusting reserve rates, moving money into a bucket, or rescheduling a planned expense. When you need a better view, Navi can generate a new dashboard widget or chart on the spot — so the dashboard matches the way you think.

Avisio replaces the fragile spreadsheet workflow with a living financial model. Fewer surprises. Cleaner decisions. More confidence to invest, hire, or take time off — because you know what's truly available.


The Problem

As a self-employed person in Germany, you live in two worlds:

Bookkeeping (Lexoffice, sevDesk, etc.)

  • Write invoices
  • Capture receipts
  • VAT pre-registration
  • EÜR / Annual accounts
  • Document the past

Your Head (Excel, gut feeling, anxiety)

  • What can I spend this month?
  • Will the money last until year-end?
  • What if client X drops out?
  • Is the new camera worth it tax-wise?
  • Why was Q2 so tight?
  • Plan & understand the future

Bookkeeping tools solve the first problem. Nobody solves the second.

The standard advice is literally "set aside 30–40% of income for taxes" — a flat guess because no tool calculates the real number. Meanwhile, the actual answer depends on your marginal rate, Splitting status, church tax, Gewerbesteuer, deductible expenses, depreciation, and quarterly prepayments already made. That's a CFO's job. Most freelancers are doing it with a spreadsheet and a knot in their stomach.


The Vision

Avisio makes every freelancer their own CFO.

Not another bookkeeping tool. No invoice creation. No receipt capture. Instead: a living financial model that continuously answers "What can I safely spend?" — and an AI agent (Navi) that explains why the number changed, simulates decisions before you make them, and surfaces risks before they become problems.

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   "You can safely spend €4,500 this month."                     │
│                                                                 │
│   Your monthly breakdown:                                       │
│   ┌─ Income (net)              €10,000                          │
│   ├─ VAT collected              €1,900  (pass-through)          │
│   ├─ Business expenses         -€2,000                          │
│   ├─ Tax set-aside (28%)       -€2,240                          │
│   ├─ Reserve contributions       -€360                          │
│   └─ Verfügbar                  €4,500                          │
│                                                                 │
│   Year-end projection: €1,200 Nachzahlung expected              │
│   Reserve coverage: 82% funded                                  │
│   Net worth: €142,300                                           │
│                                                                 │
│   💬 Navi: "Good month — you earned 15% above plan. Your        │
│   effective tax rate ticked up to 28.4%. Consider putting        │
│   the extra €800 into your emergency fund (€2,100 short)."      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

The spendable amount is a monthly number, not a balance-minus-reserves snapshot. It answers the real question: "I got paid — how much can I keep?" Think of it as the freelancer's Gehaltsabrechnung — the payslip employees get but freelancers have to calculate themselves.


The Paradigm Shift

┌─────────────────────────────────────────────────────────────────┐
│  LEXOFFICE (Bookkeeping)        │  AVISIO (Cashflow CFO)       │
├─────────────────────────────────┼───────────────────────────────┤
│  ✓ Write invoices               │  ✓ "What can I spend?"        │
│  ✓ Capture receipts             │  ✓ "Where am I in the year?"  │
│  ✓ VAT pre-registration         │  ✓ "What if project X falls?" │
│  ✓ EÜR / Annual accounts        │  ✓ "Is purchase Y worth it?"  │
│                                 │  ✓ "Why did my number drop?"  │
│                                 │  ✓ "Will I hit my goals?"     │
│                                 │  ✓ "What should I do next?"   │
│                                 │                               │
│  Document the past              │  Model, plan & act on the     │
│                                 │  future                       │
└─────────────────────────────────┴───────────────────────────────┘

The key difference is the verb. Bookkeeping records. Avisio models. A living financial model absorbs your accounts, your plans, and your tax situation — then continuously recalculates what's true right now and what's coming. When something changes, Navi tells you what shifted and what to do about it.


Core Questions Avisio Answers

1. "What can I spend this month?"

→ Monthly spendable amount: income minus expenses, tax set-aside, VAT pass-through, and reserve contributions. Your freelancer payslip — updated continuously.

2. "Will I owe money at year-end?"

→ Nachzahlung projection: projected annual tax minus Vorauszahlungen already paid. Updated in real-time as income flows in. The number that eliminates tax surprise anxiety.

3. "Where am I in the year?"

→ YTD income vs. plan, forecast to December, comparison to last year, net worth trajectory.

4. "What if...?"

→ Scenario simulation: Client drops out in July, new client starts in September, hourly rate changes, big one-time expense. Navi runs these on your actual numbers — including the impact on taxes and reserves.

5. "Is it worth it?"

→ Tax impact calculator: "The €2,000 camera costs you only €1,160 net." → Considers your marginal tax rate, joint filing status, and depreciation rules.

6. "Why did my number change?"

→ Navi explains the drivers: overdue invoice, new expense, seasonal dip, reserve adjustment. Not a chart you have to interpret — a plain-language explanation with the math behind it.

7. "What should I do?"

→ Navi proposes concrete actions: adjust a reserve rate, reschedule a planned purchase, move money between buckets, flag a client concentration risk. The CFO doesn't just report — they recommend.


What Avisio is NOT

Not But Rather
Bookkeeping Planning, modeling & analysis
Write invoices Plan expected income positions
Scan receipts Estimate expense categories
Track individual transactions Model with planning positions & the controlling loop
VAT pre-registration Calculate VAT reserves
Tax advisor replacement Tax advisor preparation + year-round clarity
Tax software Living tax model (partner income, not payroll)
Banking app Connected accounts feeding a financial model
For employees primarily For self-employed primarily

Navi: The AI Agent

Navi is not a chatbot bolted onto a dashboard. It's a financial reasoning agent that operates on the user's actual model — their income plans, expenses, reserves, tax settings, account balances, and scenarios.

What Navi Does

Explains — "Your spendable amount dropped €1,200 this week because Client B's invoice is overdue and your quarterly tax prepayment hit."

Simulates — "If you buy the laptop (€2,400), your spendable amount drops to €6,020 but your tax reserve decreases by €960 due to the deduction — net impact is -€1,440."

Recommends — "Your emergency fund is €4,420 short. If you move €2,000 from your operating account to reserves this month, you'll be fully covered by April."

Warns — "Client A represents 62% of your income. If they drop off, your runway falls from 8 months to 3."

Builds — When the standard dashboard doesn't show what the user needs, Navi can generate a custom widget or chart on the spot — a client concentration pie chart, a monthly cashflow waterfall, a reserve coverage timeline. Declarative JSON configurations, not arbitrary code.

What Navi is NOT

Navi does not give tax advice, legal opinions, or investment recommendations. It calculates, explains, and proposes actions within the user's own financial model. It's a CFO's analytical capability — not a Steuerberater replacement.

Navi Across Tiers

Navi uses a BYOAI (Bring Your Own AI) model at the Max tier — users connect their own API keys (OpenAI, Anthropic, etc.) with envelope encryption (AES-256-GCM). Lower tiers use platform-managed AI.

Tier Navi Access
Free Limited messages/month, core explanations
Pro Full access with managed AI
Max Full access + BYOAI (bring your own API key) across providers

The Controlling Loop

Avisio is a financial controlling tool. It follows the classic cycle: Plan → Monitor → Analyze → Steer.

┌─────────────────────────────────────────────────────────────────┐
│  THE CONTROLLING LOOP                                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  📋 PLAN                                                        │
│     Enter your financial reality: expected income, committed    │
│     costs, variable spending budgets. The system normalizes     │
│     everything — yearly insurance, quarterly tax prepayments,   │
│     one-time purchases — into a monthly cashflow view.          │
│                                                                 │
│  📊 MONITOR                                                     │
│     Connected bank accounts provide live balances. Lexoffice    │
│     integration feeds actual income and expenses. The system    │
│     continuously compares plan vs. reality.                     │
│                                                                 │
│  🔍 ANALYZE                                                     │
│     Navi explains variances: why your cashflow changed, which   │
│     plan assumptions were off, where you're over or under       │
│     budget. Dashboards surface trends, anomalies, and risks.    │
│                                                                 │
│  🎯 STEER                                                       │
│     Adjust your plan based on reality. Run scenarios before     │
│     making decisions. Move money into reserves. Update income   │
│     projections. The plan is living — not set-and-forget.       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

How Uncertainty is Handled

Not through confidence scores on every line item. Instead, three dedicated mechanisms:

  • Reserves buffer against the unknown — tax reserves, emergency fund, custom goals. Calculated from rules, not guesses.
  • Scenarios let you test "what if?" before committing — client drops out, big purchase, rate change.
  • Navi flags risk proactively — client concentration, runway warnings, stale assumptions, reserve gaps.

Income plans carry a simple status — contracted or planned — so you can filter for a conservative view when needed. But the primary dashboard always shows your best-estimate plan, because that's what you steer by.


Data Model Concepts

Planning Positions (not Transactions)

Avisio does NOT track individual transactions. That's Lexoffice's job.

Instead, all financial data is entered as planning positions — recurring estimates with a name, amount, and frequency. Connected bank accounts provide balance snapshots and recurring transaction detection, but the planning model remains the core.

Income examples:

  • "Retainer Client A" → €5,000 net/month + 19% VAT, contracted
  • "Average freelance income" → €3,500 net/month + 19% VAT, historical
  • "Website Redesign Client X" → €12,000 net total over 3 months + 19% VAT, estimated

Each income position carries tax metadata: net or gross amount, VAT rate (19%/7%/0%). The system derives the other side — if you enter €5,000 net at 19%, it knows you'll collect €950 VAT (pass-through, never yours) and that €5,000 is the taxable base.

Expense examples:

  • "Adobe Creative Cloud" → €59 gross/month, deductible, 19% VAT
  • "Food & groceries" → €400/month, non-deductible
  • "New camera" → €2,000 gross one-time, deductible (GWG), 19% VAT

Expenses carry deductibility (affects tax calculation) and VAT rate (Vorsteuer reduces your VAT bill). Non-deductible personal expenses still affect your spendable amount — they're just not tax-relevant.

You don't enter each grocery purchase. You estimate "I spend ~€400/month on food" as a planning position. The model uses these positions to project your financial future and calculate the spendable amount.

Two Income Models

Retainers (recurring): amount per period, no total value, open-ended. "Client A pays me €5,000/month indefinitely."

Projects (bounded): total project value spread over a time period. "Website redesign: €12,000 total over 3 months = €4,000/month." If the project extends by one month, you only change the end date — the monthly amount recalculates automatically.

Expense Categories & Tax Treatment

Not all expenses are equal. The tool distinguishes:

Category Examples Tax Treatment (expense_type)
Software Adobe CC, hosting, SaaS operating — fully deductible
Hardware Laptop, camera, monitor equipment — depreciation (AfA) or instant write-off (GWG ≤ €800)
Travel Flights, hotels, per diem operating — deductible
Office Rent, utilities, supplies operating — deductible (% if home office via business_percentage)
Vehicle Fuel, insurance, leasing operating or limited — deductible at business_percentage
Property Mortgage interest, Hausgeld operating — deductible for rental properties
Insurance Liability, business insurance operating — fully deductible
Professional Tax advisor, lawyer, coaching operating — fully deductible
Marketing Ads, website, branding operating — fully deductible
Education Courses, books, conferences operating — deductible if job-related
Personal Living expenses, rent (private) non_deductible — not deductible, but central to spendable amount
Other Anything else varies

The expense_type determines how the tax engine treats each cost:

  • operating: Full deduction from taxable income
  • equipment: Depreciation over useful life (AfA), or instant write-off if GWG
  • limited: Partially deductible (e.g., entertainment 70%, gifts €50 limit)
  • non_deductible: No tax benefit (but still affects cash availability)

Assets with Cashflow

Some things are both income AND expense. Classic example: rental property.

┌─────────────────────────────────────────────────────────────────┐
│  APARTMENT "Musterstraße 12"                                    │
├─────────────────────────────────────────────────────────────────┤
│  Income                          │  Expenses                    │
│  ├─ Rent: €950/mo                │  ├─ Mortgage interest: €380  │
│  └─ Parking: €50/mo              │  ├─ Hausgeld: €220           │
│                                  │  ├─ Insurance: €25           │
│                                  │  ├─ Grundsteuer: €45         │
│                                  │  └─ Maintenance reserve: €80 │
├─────────────────────────────────────────────────────────────────┤
│  Monthly Cashflow: +€250                                        │
│  Annual Cashflow: +€3,000                                       │
│  Tax-relevant: AfA €3,600/yr (not cashflow, but deductible)    │
└─────────────────────────────────────────────────────────────────┘

The model tracks:

  • Cashflow (actual money in/out)
  • Tax position (including non-cash items like depreciation)
  • Net contribution to the spendable amount

This applies to any asset with recurring income/expenses: rental properties, vehicles (if business use), equipment rentals, sublet office space.

Income plans and commitments link to assets via asset_id, enabling per-asset cashflow analysis.


Reserve Model

Reserves serve two purposes: yearly targets (how much should be in your accounts) and monthly set-asides (how much to put away from this month's income). The Rücklagen page shows the first; the dashboard Verfügbar uses the second.

Two Views, One Model

Dashboard (monthly budget view): Tax set-asides are proportional to income — your effective tax rate times this month's profit. Good months = bigger set-aside. Bad months = smaller. Non-tax reserves contribute as a percentage of income or fixed monthly amount per their chosen calculation method. This is the "payslip deduction."

Rücklagen page (stock/coverage view): Shows yearly targets and how well funded they are from actual account balances. Two-tier proportional allocation: tax reserves funded first, then non-tax. This is the "are my buckets full?" view.

Reserve Groups

Group 1: Tax Reserves (system-calculated)

Automatically calculated from tax settings + income plans + deductible costs. The user changes input data, not the reserve amount. The tax engine uses net taxable income (gross income minus VAT pass-through minus deductible expenses).

Reserve Yearly Target Monthly Set-aside Key Inputs
Income tax ESt + Soli + KiSt via §32a EStG, minus Vorauszahlungen Effective rate × monthly profit Projected income, Splitting, children, church tax
Trade tax GewSt from Hebesatz × Messbetrag, minus Freibetrag Effective GewSt rate × monthly profit Only if is_gewerbesteuerpflichtig
VAT Collected VAT minus Vorsteuer Pass-through: collected this month minus deductible this month Per vat_period. Not for Kleinunternehmer.

VAT is fundamentally different from income/trade tax: it's a pass-through, not a cost. Collected VAT was never the freelancer's money. The monthly Verfügbar excludes it entirely from income.

The income tax reserve supports Ehegattensplitting (joint filing for married couples), which can reduce the reserve by €5,000-10,000/year. The tool only needs a rough estimate of partner income — no payroll details.

Group 2: Liquidity Buffers (formula-based)

User chooses a formula + parameter, system calculates the target. Monthly contribution is target / 12 or proportional to income, depending on chosen method.

Buffer Formula Example Monthly contribution
Emergency fund X months × fixed costs 3 × €3,100 = €9,300 €775/mo
Vacation X months × expenses 1 × €2,000 = €2,000 €167/mo
Sick leave X months × expenses 3 × €2,000 = €6,000 €500/mo
Tax buffer X% on top of calculated tax 10% × €8,600 = €860 €72/mo

Group 3: Savings Goals (fixed or percentage)

Goal Method Target Monthly contribution
Equipment investment 10% of profit ~€8,000 ~€667/mo
Custom Fixed €2,000 €2,000 €167/mo

Coverage Calculation (Rücklagen page)

Reserves are assigned to bank accounts. Coverage is calculated live — not stored. Two-tier proportional allocation: tax reserves share available funds proportionally first, then non-tax reserves get the remainder.

Savings account (reserve role, €15,000):
  Tier 1 (tax):     income_tax €8,600 + vat €1,520 = €10,120 → covered
  Tier 2 (non-tax): emergency  €9,300 + tax_buffer €860 = €10,160
                     → €4,880 remaining, proportional: emergency €4,730 / buffer €150

→ Navi: "€5,280 of your reserves are uncovered.
   Your emergency fund is €4,570 short. At your current set-aside
   rate, you'll be fully funded by September."

Reserves in Scenarios + Time Travel

Scenarios change income/expense projections → the tax engine re-runs → reserve targets adjust → monthly set-asides change → Verfügbar responds. Time travel shows the state at that point: 6 months in, 6/12 of contributions made, reserves partially funded.

Pre-existing Balance

When a user starts, their bank balance may include money from before this tax year (savings, prior-year income already taxed). A one-time Freibetrag setting ("How much of your current balance is already-taxed money?") prevents this from inflating the tax calculation. The monthly review corrects drift over time.


Scenario Engine

Scenarios let users simulate financial changes with time-bounded adjustments. Users can build scenarios manually, or ask Navi: "What happens if Client B leaves in July and I replace them with a smaller retainer in September?"

┌─────────────────────────────────────────────────────────────────┐
│  SCENARIO: "Client B leaves, Client C starts later"             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Adjustment 1: Remove income "Client B" -€3,500/mo             │
│                from: July 2026                                  │
│                                                                 │
│  Adjustment 2: Add income "Client C" +€4,000/mo                │
│                from: September 2026                             │
│                                                                 │
│  ─────────────────────────────────────────────────              │
│  Result:                                                        │
│    June:      normal                                            │
│    July–Aug:  -€3,500/mo income gap                             │
│    September: +€500/mo net improvement                          │
│                                                                 │
│  Impact on spendable amount: -€7,000 temporary dip             │
│  Impact on tax reserve: ESt drops by ~€2,100 (less income)      │
│  Impact on runway: drops from 8 to 5 months                     │
│                                                                 │
│  💬 Navi: "The 2-month gap costs you €7,000 in cashflow but     │
│  saves ~€2,100 in taxes. Your emergency fund covers the dip     │
│  if you don't make other large purchases in July–Aug."          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Each scenario has multiple adjustments. Each adjustment can have:

  • A type: add/remove/modify income or cost
  • A time range: from when, until when (or open-ended)
  • Amount and frequency

One scenario is marked is_base = true — this represents current reality and has no adjustments. All other scenarios are deltas against the base.


Data Sources

The financial model is fed from multiple layers:

Layer 1: Connected Bank Accounts (enable-banking)

Live account balances, recurring transaction detection, and automatic balance snapshots. This is the ground truth for "how much money do I actually have?" Connected at onboarding — no CSV uploads, no manual balance tracking.

Layer 2: Planning Positions (manual + Navi-assisted)

Income plans, commitments, and spending estimates — your best-estimate plan. This is the planning layer — what you expect to happen. Navi can suggest positions based on detected recurring transactions from connected accounts.

Layer 3: Tax & Reserve Rules (set once, auto-calculated)

Tax settings, reserve formulas, and savings goals. These define the rules that transform "money in accounts" into "money you can safely spend."

Layer 4: Accounting Import for Plan-vs-Actual (Integrated)

  • Lexoffice API – Syncs actual income & expenses to compare against plan. "You planned €400/mo for software, but actually spent €520."
  • Future: Tax advisor export – Annual values for year-over-year comparison.

Never:

  • Capture individual receipts
  • Create invoices
  • Generate VAT pre-registration
  • Replace your bookkeeping tool

Target Users

Primary: Solo Freelancers (Freiberufler, §18 EStG)

  • Variable income → Liquidity planning critical
  • Manage taxes yourself → Reserves or nasty back-payment
  • No tool solves this problem well
  • Build for this group first. Get the tax math perfectly right.

Positioning: Freelancers & Small Service Businesses

  • The "Cashflow CFO" message resonates beyond solo freelancers
  • Small agencies, consultancies, solo GmbH founders share the same core problem
  • Broader positioning from day one, but feature scope stays focused on solo use cases
  • Expansion to multi-person businesses is a future milestone, not a launch constraint

Secondary: Employees (Limited)

  • Fixed salary → Less liquidity planning needed
  • Wage tax automatic → No reserves needed
  • Support: Tax savings calculators, but not core focus


User Flow

Onboarding (5 minutes to value)

  1. Connect bank accounts (enable-banking)
  2. Enter tax settings (marital status, church tax, health insurance, Kleinunternehmer)
  3. Plan your income (retainers, average monthly income, expected projects)
  4. Plan your expenses (rent, software, insurance, typical monthly costs, personal withdrawal)
  5. Set reserve rules (or accept smart defaults) → Immediately see: "You have €X available to spend."Navi: "Here's what's driving that number."

Weekly Use

  1. Open dashboard → See spendable amount, reserve coverage, net worth
  2. Ask Navi why the number changed since last week
  3. New contract signed → Add as contracted income position
  4. Larger expense planned → Ask Navi to simulate the impact

Monthly Use

  1. Review month → Projections vs. actuals from connected accounts
  2. Plan next month → Adjust expected income
  3. Check reserve coverage — Navi flags gaps and proposes actions

Quarterly Use

  1. Analyze trends (income, expenses, categories)
  2. Check annual goal progress
  3. Run scenarios for rest of year
  4. Review tax reserve accuracy (prepayments vs. projected liability)

Competitive Landscape

Tool Focus Why Not Enough
Lexoffice / sevDesk Bookkeeping Documents the past, no forward planning
Kontist Banking + flat tax % No Splitting, no scenarios, no cost planning, no "will it last?"
Commitly / Tidely KMU cashflow No German tax logic, needs ERP, €49–55/mo, wrong audience
YNAB Personal budgeting US-focused, no tax logic, no business focus
Excel Everything and nothing No system, manual, never current, no agent
Finanzguru Personal finance Shows what's on the account, not what's yours after taxes

Our position: German self-employed who have bookkeeping but need a CFO. We're the only tool that combines German tax intelligence with forward-looking planning and an AI agent that works on real numbers.


Success Metrics

For the User

  • "I always know what I can safely spend"
  • "No more tax surprises"
  • "I finally understand my numbers — and someone explains them to me"
  • "I make bigger decisions with more confidence"

For the Product

  • Weekly Active Users
  • Navi engagement (questions asked, actions taken)
  • Retained after tax season (March–June)
  • Upgrade to paid (after trial)

Tech Implications

Previously Prioritized Should Be Prioritized
Individual income tracking Income planning positions (retainers, projects)
Individual expense tracking Expense planning positions (commitments, spending estimates)
Invoice lifecycle (invoiced/paid/overdue) Plan-vs-actual comparison from bank data + Lexoffice
Individual receipts Estimated recurring expense categories
Transaction CRUD Spendable amount dashboard (Verfügbarer Betrag)
Simple tax percentage Full tax engine (Splitting, children, Gewerbesteuer)
Flat scenario modifiers Time-bounded scenario adjustments with projection engine
Manual balance entry Connected bank accounts (enable-banking)
AI as P2 afterthought Navi as core P0 experience (BYOAI multi-provider)
Static dashboard Navi-generated custom widgets (declarative JSON)
Confidence scoring on every item Uncertainty via reserves, scenarios, and Navi
Tiered availability views One clear spendable amount + Navi risk analysis

The controlling loop is the product. Plan your income and costs → monitor actuals from connected accounts and Lexoffice → analyze variances with Navi → steer by adjusting your plan. Planning positions are the data foundation. The tax engine provides ground truth for reserves. Navi ties it all together.


Database Entities

Schema source of truth: lib/db/schema/index.ts

Planning Positions (Core)

Entity Purpose
income_plans Planned income with client name, status (contracted/planned), optional total project value. Carries tax metadata: amount type (net/gross), VAT rate (19%/7%/0%). System derives the other side. Supports retainers (recurring) and projects (bounded, with total_project_value).
commitments Contractual obligations (rent, insurance, subscriptions) with category, tax treatment (expense_type), business percentage, VAT rate (for Vorsteuer). Supports recurring costs and one-time planned purchases (frequency: 'once'). Auto-generated from loans and tax prepayments.
spending_estimates Variable budget estimates (groceries, dining, entertainment) with monthly amount and category. Carries deductible flag and VAT rate. Not contractually bound — represents expected spending patterns.

Assets, Loans & Cashflow

Entity Purpose
assets Things with recurring cashflow (properties, vehicles, equipment). Tracks purchase price, depreciation (AfA), and GWG status.
→ linked via asset_id Income plans and commitments can belong to an asset for per-asset cashflow analysis.
loans Annuity, linear, interest-only, or bullet loans. Tracks principal, rate, term, current balance. Auto-generates commitments for interest/principal payments.
loan_events Sondertilgung, rate changes, refinancing. Each event triggers amortization schedule recalculation.

Accounts & Banking

Entity Purpose
bank_accounts User's accounts with pool_role (operating / reserve / personal / excluded). Balance updated via enable-banking connection + snapshots.
bank_connections Enable Banking connections linking bank accounts to live data feeds.
balance_snapshots Point-in-time balance records. Immutable. Sources: enable-banking sync, manual entry, CSV import.

Tax Settings

Entity Purpose
tax_settings Per-year tax configuration. Marital status + partner income (for Splitting), number of children (for Kinderfreibeträge), church tax, health insurance, Kleinunternehmer status, Gewerbesteuer, quarterly prepayments, VAT period.

Reserves (Three Groups)

Entity Purpose
reserves All reserves with type, calculation_method, optional calculation_parameter, target_amount, priority, and optional bank_account_id for coverage tracking. Tax reserves use engine methods (auto-calculated). Buffers use formula methods (user picks parameter). Savings use fixed method (user sets amount).

Scenarios

Entity Purpose
scenarios What-if containers. One is is_base = true (current reality). Others contain adjustments as deltas. Cached projection summaries (projected_income, projected_runway, etc.).
scenario_adjustments Individual changes: add/remove/modify income or costs. Optional effective_from / effective_until for time-bounded transitions.

Actuals & Transactions

Entity Purpose
actual_outflows Recorded actual expenses per month/category, for plan-vs-actual comparison.
actual_inflows Recorded actual income per month, for plan-vs-actual comparison.
transactions Raw bank transactions (via Enable Banking). Used for recurring detection and category matching — not user-facing.
commitment_suggestions Detected recurring outflows suggested as new commitments. User can accept or dismiss.
income_suggestions Detected recurring inflows suggested as new income plans. User can accept or dismiss.

Projections & AI

Entity Purpose
monthly_projections Pre-computed monthly values per scenario. Income, expenses, tax, reserves, availability. Recalculated on data changes (UPSERT).
insights AI-generated observations (from Navi) with type (trend/anomaly/recommendation/warning), severity, confidence score, and user feedback loop.
goals Financial targets (annual income, profit, savings, runway, custom) with progress calculated from projections.
ai_chats Persisted Navi chat sessions per user.
ai_chat_messages Normalized chat messages (one row per message, role + content).

Dashboard

Entity Purpose
dashboard_configs Dashboard layout presets and customizations. JSONB layout storage, level-based (beginner/standard/complete).
custom_widget_definitions User-created or AI-generated declarative widget configs. JSON-based, not React code.

System

Entity Purpose
audit_log Immutable log of all data changes for GoBD compliance.
subscriptions Stripe billing and tier management (Free/Pro/Max).

One-Liner

"Know what you can safely spend — after taxes, reserves, and planned costs. Your Cashflow CFO."