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.
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.
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.
┌─────────────────────────────────────────────────────────────────┐
│ 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.
→ Monthly spendable amount: income minus expenses, tax set-aside, VAT pass-through, and reserve contributions. Your freelancer payslip — updated continuously.
→ Nachzahlung projection: projected annual tax minus Vorauszahlungen already paid. Updated in real-time as income flows in. The number that eliminates tax surprise anxiety.
→ YTD income vs. plan, forecast to December, comparison to last year, net worth trajectory.
→ 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.
→ Tax impact calculator: "The €2,000 camera costs you only €1,160 net." → Considers your marginal tax rate, joint filing status, and depreciation rules.
→ 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.
→ 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.
| 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 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.
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.
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 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 |
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. │
│ │
└─────────────────────────────────────────────────────────────────┘
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.
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.
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.
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 incomeequipment: Depreciation over useful life (AfA), or instant write-off if GWGlimited: Partially deductible (e.g., entertainment 70%, gifts €50 limit)non_deductible: No tax benefit (but still affects cash availability)
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.
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.
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.
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.
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 |
| Goal | Method | Target | Monthly contribution |
|---|---|---|---|
| Equipment investment | 10% of profit | ~€8,000 | ~€667/mo |
| Custom | Fixed €2,000 | €2,000 | €167/mo |
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."
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.
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.
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.
The financial model is fed from multiple layers:
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.
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.
Tax settings, reserve formulas, and savings goals. These define the rules that transform "money in accounts" into "money you can safely spend."
- 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.
- Capture individual receipts
- Create invoices
- Generate VAT pre-registration
- Replace your bookkeeping tool
- 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.
- 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
- Fixed salary → Less liquidity planning needed
- Wage tax automatic → No reserves needed
- Support: Tax savings calculators, but not core focus
- Connect bank accounts (enable-banking)
- Enter tax settings (marital status, church tax, health insurance, Kleinunternehmer)
- Plan your income (retainers, average monthly income, expected projects)
- Plan your expenses (rent, software, insurance, typical monthly costs, personal withdrawal)
- Set reserve rules (or accept smart defaults) → Immediately see: "You have €X available to spend." → Navi: "Here's what's driving that number."
- Open dashboard → See spendable amount, reserve coverage, net worth
- Ask Navi why the number changed since last week
- New contract signed → Add as contracted income position
- Larger expense planned → Ask Navi to simulate the impact
- Review month → Projections vs. actuals from connected accounts
- Plan next month → Adjust expected income
- Check reserve coverage — Navi flags gaps and proposes actions
- Analyze trends (income, expenses, categories)
- Check annual goal progress
- Run scenarios for rest of year
- Review tax reserve accuracy (prepayments vs. projected liability)
| 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.
- "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"
- Weekly Active Users
- Navi engagement (questions asked, actions taken)
- Retained after tax season (March–June)
- Upgrade to paid (after trial)
| 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.
Schema source of truth:
lib/db/schema/index.ts
| 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. |
| 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. |
| 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. |
| 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. |
| 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). |
| 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. |
| 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. |
| 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). |
| 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. |
| Entity | Purpose |
|---|---|
audit_log |
Immutable log of all data changes for GoBD compliance. |
subscriptions |
Stripe billing and tier management (Free/Pro/Max). |
"Know what you can safely spend — after taxes, reserves, and planned costs. Your Cashflow CFO."