Getting Started
Everything you need to go from a blank slate to a full 12-month forecast β and understand every number on the way.
Contents
- What is Cashflow Compass? Β· Finding your way around
- Your First 10 Minutes
- Accounts, Transfers & Credit Cards
- Categories
- Transactions & Frequencies
- The Forecast Grid
- Charts
- Insight Cards
- Balance Check-ins
- Importing Your Bank's File
- Plan vs Actual
- Confidence Bands
- The Debt Payoff Planner
- Goals & Sinking Funds
- The Bills Calendar
- Scenarios
- Export, Import & Backup
- Live Workbook Mode
- Settings & Housekeeping
- Pro Tips
1 What is Cashflow Compass?
Cashflow Compass is a personal budgeting and forecasting tool that answers one question: given what you earn and spend today, what does your financial picture look like over the next 36 months?
Unlike a spreadsheet you maintain manually, the app models every recurring transaction β your bi-weekly paycheck, monthly rent, annual insurance renewal β and projects them forward automatically. You set things up once and the forecast, charts, and insights update in real time.
It also checks that forecast against reality, on your terms. You can record what an account actually holds today and see how far the projection has drifted, and you can open a transaction file you downloaded from your own bank and compare what you planned with what really happened. That is the full extent of its contact with the outside world β there is no connection to any institution, and there never will be.
Everything in it is free, permanently. There is no paid tier, no subscription, no locked feature and nothing to buy β there's no service behind the app to sell you.
vendor/ folder rather than loading from a CDN, so the whole thing works offline: open index.html straight from disk, on a plane, with the Wi-Fi off, and everything still runs. You can export the full state to an Excel workbook or JSON file at any time as a portable backup, and re-import it later to pick up exactly where you left off.
What it's great for
- Seeing whether your monthly net cash flow is positive or negative before it becomes a problem
- Planning for irregular windfalls β like the two extra "3-paycheck months" you get with bi-weekly pay
- Stress-testing scenarios: what happens if rent goes up 5% at renewal? What if you take the new job? What if you cut dining out?
- Finding out whether your plan matches your actual spending, and retuning the plan when it doesn't
- Working out what a credit card really costs you, and which payoff order clears it soonest
- Building a backup budget you can open in Excel, edit, and re-import
What it doesn't do
- Connect to any financial institution. Permanent, and the next heading explains why
- Convert currencies. The currency setting changes formatting only β
$1,000becomesβ¬1,000, never today's exchange rate - Calculate your tax. You enter tax as an expense like anything else; the app has no idea what you owe
- Model investment returns. An investment account is a number you typed in that counts toward net worth. It does not grow on its own
- Amortize a loan. Credit cards accrue interest at their APR, but a mortgage or car loan is modelled as a payment you type in, not as a principal/interest schedule
- Give financial advice. Every number it shows you is arithmetic on the numbers you entered. It has no opinion about what you should do
- Sync by itself, or back itself up. Your data is in this browser. Exporting β or connecting a file in a synced folder β is what moves it and what saves it
What it will never do: link to your bank
Cashflow Compass will never ask for online banking credentials and will never connect to a real account β no Plaid, no open banking, no aggregator of any kind. This isn't a feature waiting for a future release; it's a deliberate design choice, and it's why the rest of the app can be as simple as it is.
- Privacy. Data that never leaves the machine can't be sold, subpoenaed, or spilled in someone else's breach. There is no server here to hold it and no company behind it to hold it for you.
- Nothing to trust. Bank linking means handing credentials β or a long-lived token β to a middleman. A planning tool doesn't need that level of access to do its job, so it doesn't ask for it.
- Nothing to break. Aggregator connections rot: banks change their APIs, tokens expire, an institution drops off the supported list, and the tool that depended on it quietly stops being accurate. Typed-in numbers keep working forever.
Opening a file you downloaded from your own bank is a completely different thing β no credentials, no third party, no live connection, nothing transmitted β and that is built and described in section 10. You download the file; you open it; the app reads it off your disk. Nobody is contacted at any point.
Finding your way around
The app is six views, switched from the rail on the left (a tab bar along the bottom on a phone) or with the keys 1β6:
- Overview β the headline tiles (cash today, net worth, projected cash with a sparkline, average monthly net, savings rate, the next seven days, and the lowest point or first shortfall), then the six charts and the insight cards. Every tile and every insight card is a link to the section behind it.
- Plan β accounts, categories and transactions: everything the forecast is built from.
- Forecast β the month-by-month grid, balances by account, and the bills calendar.
- Reality β balance check-ins, plan vs actual, and the button that imports a file from your bank.
- Planning β the debt payoff planner, savings goals, and scenarios.
- Backup β plain, encrypted and live-file backups.
The bar across the top holds the controls that apply everywhere: a search box, the Horizon and Currency selectors, the β¬ Export button, and a Data βΎ menu with the imports, the JSON export, the sample data, this guide, and Reset. While a scenario is active a chip beside them names it, with a Base plan button to step back out.
Three habits are worth learning on day one:
- Adding things β every list in Plan has a οΌ Add button in its header that opens a form in a panel from the right. Save or press Esc and the panel goes away. Editing a row opens the same panel filled in.
- The β― menu β every row has one, holding Edit, Pause, Duplicate and Delete (or Move, for a category). A transaction's name and amount can also be changed right in the table: double-click the cell, type, press Enter. Tick several rows and a bar appears to pause, resume or delete them together.
- The command palette β press βK (Ctrl K on Windows and Linux) or click the search box. Type a view, a section, an action, or the name of any account, category, transaction or scenario, and press Enter. It is the fastest way to reach anything.
The first time the app opens it shows a three-step checklist on the Overview β an account, an income, a recurring expense β with a button on each step that opens the right form. It disappears on its own once the plan has the basics.
2 Your First 10 Minutes
Follow these five steps and you'll have a working forecast in under 10 minutes.
Add at least one account
Open Plan and press οΌ Add account in the Accounts header (or just press a anywhere). Add a checking account with its current balance and today's date as the "as of" date, then save β the panel closes on its own. This is the starting point every projection builds from. Add savings, credit cards, or investments if you want the full net worth picture.
Add your income first
Press οΌ Add transaction in the Transactions header (or n) and add your paycheck as an Income transaction. If you're paid bi-weekly, select Bi-weekly β the app will automatically model the two "3-paycheck months" per year. Enter the amount as your net take-home pay after taxes, since everything else is post-tax too.
Add your fixed expenses
Rent/mortgage, car payment, phone bill, internet, insurance β these are the same every month (or year). Add them as Expense transactions under the appropriate category. For rent with a known renewal, set an Annual Escalation % to model the increase automatically.
Add your variable expenses
Groceries, gas, dining out, entertainment β use your real average monthly spend, not a wishful number. You can always adjust later. These fill in the Variable and Discretionary categories in the forecast grid.
Choose your horizon and review
Use the Horizon control in the top bar to pick End of Year, 12, 18, 24, or 36 months. Open the Forecast view for the grid β red cells flag months where the balance goes negative β and the Overview for the headline tiles and the Insight cards: your savings rate, biggest spending category, and projected end balance. The rail on the left (a tab bar on a phone) switches views; keys 1β6 do the same.
The second ten minutes
Those five steps give you a plan. Sections 9 to 16 are about finding out whether the plan is true, and they're worth coming back to once the basics are entered:
- Check in a balance in a week's time and see how far the forecast has drifted from your real account.
- Import a few months of transactions from a file you download from your bank, then read Plan vs Actual to find the categories where your plan and your habits disagree.
- Build a scenario before a big decision, so "can we afford this?" has a number attached.
3 Accounts, Transfers & Credit Cards
Accounts hold the balances the forecast builds from. Each account carries its own starting balance and the date that balance was true, and the forecast tracks them separately β every transaction is assigned to an account, so money leaves and lands where it really would.
That per-account tracking is what makes the projection useful rather than merely tidy. A single combined balance can look healthy all year while the checking account it's mostly made of goes to zero in March. Because each account is projected on its own you can see that coming: the Balances by Account section walks each account forward month by month alongside the combined totals.
Two different totals come out of that. Net worth is everything you own minus what you owe. Liquid cash is only the money you could actually spend this week β and it's the liquid figure the red-balance warnings watch, so a healthy brokerage account can't paper over a checking account that runs dry.
| Account type | How the balance is treated |
|---|---|
| Checking | Spendable cash β counts toward both net worth and liquid cash. The primary account for most forecasts |
| Savings | Spendable cash β good for modeling an emergency fund or sinking fund |
| Credit Card | A liability: subtracted from net worth and never counted as cash. Enter the balance you owe as a positive number, and set the card's APR and minimum payment (see below) |
| Investment | Counts toward net worth so you see the full picture, but not toward liquid cash β a brokerage balance isn't this month's rent |
| Cash | Spendable cash β for money on hand you want to include |
The "As of" date
This tells the app when that balance was accurate β use today's date if you just checked the account. It isn't decoration. The forecast anchors itself to the latest as-of date across your accounts and only counts money from that date forward, so a bill you already paid before then isn't charged to you a second time: it's already reflected in the balance you typed in. That's what lets you set the app up mid-month without your rent, paid on the 1st, being replayed on top of a balance recorded on the 20th.
Transfers β moving money between accounts
Add as many accounts as you like; the forecast keeps a running balance for each one plus the combined totals. To move money between them, add a transaction with the kind set to Transfer and pick both ends: the account it comes from and the account it goes to.
A transfer is neither income nor an expense, so it never changes your net cash flow or your net worth β it changes only where the money sits. A $500 monthly transfer from checking to savings shows your checking balance growing more slowly and your savings balance climbing, which is exactly what happens in real life.
Credit cards β the one part worth reading twice
Cards behave the way real cards do, and that catches almost everyone out at first. Two sentences carry the whole idea:
- An expense charged to a card raises the card's balance. Record it as an ordinary expense with the card as its account. No cash leaves your checking, because in real life none has yet β you owe more instead.
- A payment to a card is a transfer, from the cash account you pay out of to the card. That's the moment cash actually leaves checking and the card balance comes down.
Worked example
You have $3,000 in checking and a Visa with $1,200 owed at 22% APR. Your net worth is $3,000 β $1,200 = $1,800. Now play out a month:
| What happens | How you record it | Checking | Visa owed | Net worth |
|---|---|---|---|---|
| Starting point | β | $3,000 | $1,200 | $1,800 |
| $400 of groceries, paid with the Visa | Expense, account = Visa | $3,000 | $1,600 | $1,400 |
| A month's interest at 22% APR on $1,600 | automatic, from the card's APR | $3,000 | $1,629 | $1,371 |
| You pay the card $500 from checking | Transfer, Checking β Visa | $2,500 | $1,129 | $1,371 |
Read the last two columns together and the model explains itself:
- The groceries cost you $400 the moment you swiped. Net worth fell by $400 even though your cash didn't move β which is exactly what happened in reality. The bill was real; you just hadn't settled it yet.
- The payment cost you nothing. Net worth is the same on both sides of it: $1,371 before, $1,371 after. You moved $500 out of checking and $500 off a debt you already owed, and the two cancel. Liquid cash fell, because that part is real β but you did not become poorer by paying your bill.
- The interest is the only thing the card added. $29 of net worth that simply evaporated, which is the honest cost of carrying the balance.
So a card payment is a transfer, not an expense. If you record the groceries and log the $500 payment as an expense, you have charged yourself for the same groceries twice, and your forecast is $500 a month gloomier than your life.
Detailed: record purchases against the card and pay it down with transfers. The card balance moves, interest is modelled, and the payoff planner works. Use this if you carry a balance.
Simple: don't record card purchases at all β just model the monthly payment as an expense in a Debt category. Quick to set up, but the card balance never moves and no interest is modelled. Fine if you clear the card in full every month.
What you must not do is both. That double-counts every purchase.
APR and minimum payment
- APR β set it and the balance accrues interest month by month instead of sitting frozen, so carrying a balance costs you something in the forecast the way it does in life. Interest is charged on the outstanding balance each month at APR Γ· 12: 22% on $1,600 is about $29.
- Minimum payment β the smallest payment the issuer accepts. It's what makes the difference visible between a payment that's genuinely reducing the balance and one that's mostly covering interest.
With both recorded on each card, the Debt Payoff Planner can project when every card clears, what the interest costs, and how much a different payoff order would save you.
4 Categories
Every transaction belongs to a category, and every category belongs to a kind. The category is the label you read; the kind is what the app reasons with β it decides which group a row lands in on the forecast grid, and it separates committed costs from the ones you actually control.
The app ships with 19 default categories covering the usual shape of a household budget: Salary and Other Income; Housing, Utilities, Home Internet, Phone Bill, Insurance and Subscriptions; Electric, Groceries and Gas / Transport; Dining, Entertainment and Shopping; Savings and Retirement; Debt Payment; Taxes; and a Savings Goal to start you off on the Goal kind. Keep the ones that fit, rename the ones that don't, add your own.
The eight kinds
| Kind | What belongs in it |
|---|---|
| Income | Money coming in β salary, freelance work, rent received, dividends |
| Fixed | Committed costs that don't move month to month β rent, insurance, phone, subscriptions |
| Variable | Recurring but fluctuating β groceries, fuel, electricity |
| Discretionary | Lifestyle spending you could cut this month if you had to β dining, entertainment, shopping |
| Savings | Money you're deliberately setting aside β emergency fund, retirement contributions |
| Debt | Loan and credit card payments |
| Tax | Estimated payments, self-employment tax, anything owed to the revenue service |
| Goal | A specific target you're funding β a car deposit, a wedding, a trip. A Savings Goal category ships as a starting point; rename it or add your own per goal. Goal categories can carry a target amount and a target date, which is what turns them into tracked goals with an ETA |
Adding, editing, and deleting
οΌ Add category in the section header opens a small form in a side panel: a name, a kind, and a color. Add a category and it's immediately available in the transaction form. Choose Edit from the β― menu on any row to open it in the same panel and change it β the edit applies everywhere that category is used, including its color in every chart.
Delete, in the same β― menu, removes a category. If any transactions are using it, the confirmation asks where to move them and reassigns them as part of the delete β nothing is ever quietly orphaned, and you don't have to go and re-file them by hand first. (The one case it refuses is deleting your last remaining category while transactions still need one; add a replacement first.) Deletes are undoable β see Settings & Housekeeping.
Colors
The color you pick is the color that category gets in the Spend by Category doughnut, the Category Trend stack, and the Income Sources chart, and it's the dot beside the category name in the transaction list. Defaults are drawn from the Observation Deck palette and are already bright enough to read against the dark cards; if you add your own, pick something with similar punch.
Sorting the list
Click the Name or Kind column header to sort the table AβZ; click the same header again to flip to ZβA. The arrow in the header shows which column is driving the sort and in which direction. This is display only β it changes nothing about your data or the forecast.
Work Subscriptions gets picked up automatically), and any transaction you simply tag subscription. That last route is the useful one: a streaming service you'd rather file under Entertainment still lands in the total if you tag it.
5 Transactions & Frequencies
Transactions are the heart of the app. Each one represents a real recurring (or one-time) cash flow β a paycheck, a subscription, a car insurance renewal β and is either income, an expense, or a transfer between two of your accounts (see Accounts). The app supports nine frequency types so you can model virtually any real-world payment schedule.
Bi-weekly and the 3-paycheck month
Most salaried workers paid bi-weekly notice that two months a year have three pay deposits instead of two. With 26 paychecks spread over 12 months, two months end up with an "extra" paycheck β a significant windfall if you plan for it. Cashflow Compass detects these months automatically and flags them in the Insights panel so you can decide in advance what to do with the extra cash.
Annual escalation %
For transactions that grow over time β rent renewals, cost-of-living raises, utility creep β set an escalation percentage. The amount steps up by that % on each anniversary of the start date, compounding: a 5% escalation on a $900 rent makes it $945 in year 2, $992 in year 3, and so on.
Pause / resume
Choose Pause from the β― menu on any transaction to suspend it without deleting it, and Resume from the same menu to bring it back. To pause several at once, tick their checkboxes and use the bar that appears above the table. This is useful for gym memberships you've cancelled (but plan to restart), freelance income that stopped, or seasonal expenses that are off right now.
Tags and notes
Tags let you group transactions that cut across categories β for example, work-reimbursable, kid, or shared. Notes are free-text reminders attached to a transaction ("Lease renews in August", "Cancel before trial ends").
End date
Set an end date on any transaction to stop it from appearing in the forecast after a certain point. Perfect for a fixed-term loan payoff, a sublease, or a promotional subscription price that expires.
Editing: the panel, the table, and the bulk bar
There are three ways to change a transaction, and which one you reach for depends on how much is changing:
- The panel β choose Edit from the row's β― menu (or pick the transaction from the command palette). The full form opens from the right with every field filled in; save or press Esc to close it.
- In the table β double-click the Name or Amount cell (or focus it and press Enter), type the new value, and press Enter. Esc abandons it. Good for the quick "rent went up to $950" edit that doesn't deserve a form.
- The bulk bar β tick the checkbox on any rows (the one in the header ticks everything the filters are showing) and a bar appears offering Pause, Resume and Delete for all of them at once.
Every one of these is a single undo step, so a slip is one click to reverse. Duplicate, also in the β― menu, makes a copy named "(copy)" for quick variants.
Finding things: search, filters, and sorting
A real budget gets to fifty or sixty transactions quickly. Three controls sit above the list to keep it navigable (and / jumps straight to the search box from anywhere):
- Search β type anything and the list narrows as you go. It matches on the transaction name, its tags, and its notes, so searching
kidfinds everything tagged for the kids and searchingrenewsfinds the notes you left yourself about renewal dates. - Kind filter β show only income, only expenses, or only transfers.
- Category filter β narrow to a single category. Combine it with the search box; the filters stack rather than replace each other.
Four column headers are clickable and sort the visible list: Name, Amount, Start, and Annualized. The first click sorts ascending, a second click on the same header flips to descending, and the arrow in the header tells you which is active. Sorting applies to whatever the filters have left on screen, so you can filter to Discretionary, sort by Annualized descending, and see your most expensive habit at the top.
The Next column shows when each transaction lands next β the quickest way to sanity-check that a start date and frequency are doing what you meant.
6 The Forecast Grid
The forecast grid is a month-by-month projection table. Rows are your transactions grouped by category kind; columns are the months in your chosen horizon.
| Row group | What it contains |
|---|---|
| Income | All income transactions β paychecks, side income, rental income |
| Fixed | Predictable, recurring expenses. This group orders itself β see How the Fixed group sorts itself below |
| Variable | Expenses that recur but fluctuate β groceries, gas, utilities |
| Discretionary | Lifestyle spending β dining out, entertainment, travel |
| Savings | Savings contributions and sinking funds β vacation fund, emergency fund top-up |
| Debt | Loan and credit card payments |
| Tax | Estimated tax payments and tax-related expenses |
| Goal | Anything you're funding toward a specific target β a deposit, a wedding, a trip |
Groups appear in that order, and a group with nothing in it is skipped entirely. If a transaction's category has gone missing, its row lands in a final Other group at the bottom rather than disappearing.
How the Fixed group sorts itself
Fixed costs are the ones you look at most, so the app orders them for you rather than leaving them in entry order. Rows are sorted into three frequency buckets, and the buckets always appear in this order:
- Weekly, bi-weekly, semi-monthly, monthly, and quarterly β anything that hits at least a few times a year
- Semi-annual and annual β the big periodic bills
- One-time and custom β everything else
Within each bucket, rows are ordered by the amount you typed on the transaction, largest first. That's the raw per-occurrence amount β not the annual total, and not adjusted for escalation β so a $1,200 annual insurance premium sorts below a $12 monthly subscription, because they're in different buckets. Periodic bills stay grouped together instead of being scattered through the list by size.
Summary rows
Below all the transactions, five summary rows appear for every month:
- Total Income β all income for that month
- Total Expenses β all outflows combined
- Net Cash Flow β income minus expenses (green = positive, red = negative)
- End-of-Month Cash β running spendable balance; turns red if it goes negative. This is the row that answers "will I actually make it through the month"
- Net Worth β everything you own minus everything you owe, including investments and card debt. It can be climbing while cash is falling, which is exactly why both rows are here
Choosing your horizon
The global horizon dropdown in the top-right changes the forecast length for the grid and all charts simultaneously. Options are End of Year (remaining months in the current calendar year), 12, 18, 24, and 36 months. Each chart can also be set to its own independent horizon β see the Charts section.
7 Charts
Six charts visualize your forecast from different angles. Every chart has its own horizon dropdown β you can keep most on the global setting and override one or two for a deeper look without affecting the rest of the page.
Side-by-side bars for each month's total income and total expenses, with a net cash-flow line overlay. The quickest way to spot months where spending overtakes income.
Area chart of your projected account balance month by month. Shows the trajectory of your financial position β are you building a cushion or drawing one down? Once you've imported enough real history, it can also draw confidence bands around the line.
Doughnut chart breaking down total expenses by category over the horizon. Instantly answers "where is my money going?" in percentage terms.
Stacked area chart showing how each category's spend evolves over time. Useful for seeing the effect of annual escalations and seasonal expenses building up.
Horizontal bar chart of the 10 individual expense lines that cost you the most over the chosen horizon. These are totals for the window, not annualized figures, so the ranking moves when you change the horizon: a $5,000 one-time car repair tops a 12-month view, but over 36 months a $200 monthly bill ($7,200) passes it. Hover any bar for the exact amount.
Doughnut breakdown of income by category β useful if you have multiple income streams (salary, freelance, rental, dividends) and want to see your income diversification at a glance.
8 Insight Cards
The Insights panel reads your forecast and writes the findings in plain language. Cards update instantly when you change a transaction or the horizon.
Cards appear only where your data supports them. An empty budget produces no cards at all β the panel simply invites you to add something. From there most cards are conditional: no income stream means no savings rate, no subscriptions means no subscription card, no spending at all means no biggest-category card. A few always report once you have data, and say so plainly when there's nothing to flag ("0 days", "None forecast") β an all-clear is information too.
Savings Rate
The percentage of your income you actually keep over the horizon. Money you move into savings, toward a goal, or onto debt principal counts as kept, not spent β otherwise the card would penalise you for the exact behaviour it's measuring. A rate of 20%+ is healthy; below 10% means most of your income is committed before it arrives; negative means expenses exceed income on average.
Biggest Category
The single expense category that consumes the largest share of your total spending over the horizon, shown as a percentage. Housing dominating at 40%+ is normal in high-cost areas; if Dining Out is your biggest category, that's a cue worth noticing.
Fixed vs Variable
What share of your everyday spending is committed β the Fixed group: rent, insurance, phone, subscriptions β measured against everything flexible (Variable plus Discretionary). A high fixed share isn't automatically bad, but it tells you how much room you'd have if income dropped: you can skip a dinner out, not a lease payment. Past roughly three-quarters fixed, the card starts warning you.
Annual Subscription Cost
The annualized total of your subscriptions, with the monthly equivalent beneath. It picks up the built-in Subscriptions category, any Fixed category you've named after subscriptions, and anything you've simply tagged subscription β so a streaming service filed under Entertainment still gets counted if you tag it. Subscription creep is real; this makes the full annual number visible in one place.
Emergency Fund
Your liquid cash measured against four tiers instead of one blanket target: a $1,000 starter buffer, then six weeks of take-home pay, then three months of expenses, then six. The card tells you which tier you're past and exactly how much is left to reach the next one, because "build a bigger buffer" means something very different at three weeks of runway than at five months. It's also shown at zero and below β that's precisely when it matters most.
Days in the Red
A count of forecast days where your liquid cash goes negative, plus the lowest point reached. Note that this looks at spendable cash, not net worth β an overdrawn checking account is a real problem even if a brokerage balance keeps your net worth healthy. Zero is the target.
First Shortfall
The exact date your liquid cash is first projected to drop below zero, and how many days away that is. The red-day count tells you how bad; this tells you how long you have. It's the most actionable number in the panel β go to that date in the forecast grid and look at what lands just before it. When nothing goes negative, the card says so.
Tightest Week
The worst seven-day stretch in the horizon by net cash flow, with its exact dates β effectively "keep at least this much in reserve". Monthly totals hide this completely: a month can finish comfortably positive and still contain a week where the rent has gone out and the paycheck hasn't come in. This is the card that catches near-misses.
Best Month and Worst Month
Two cards, naming the strongest and weakest months in the horizon by net cash flow, each with the income and expenses behind it. The worst month is usually where an annual bill lands; seeing the pair together is what tells you whether a shortfall is a real trend or one lumpy renewal you can plan around. They need a horizon of at least two months to mean anything, so a one-month view omits them.
3-Paycheck Months
For bi-weekly income streams, shows which calendar months will have three pay deposits instead of two. This happens twice a year and represents a meaningful windfall β equal to one full extra paycheck. The card flags the specific months so you can plan ahead: extra savings, debt paydown, or a budgeted splurge.
If you cut [category] by 20%
A quick what-if: reduce one category by a fifth, and here's what it's worth over the full horizon. It deliberately targets your biggest discretionary category β falling back to the biggest variable one, and only then to the largest outright β because "spend 20% less on rent" isn't advice. This is the highest-leverage change you could actually make.
Projected Cash
Where your liquid cash lands in the final month of the chosen horizon, plus the change from where you are today. Green means you finish ahead; yellow means you end below where you started. This is the single number that summarizes whether your current trajectory is sustainable.
9 Balance Check-ins
A forecast built from a balance you typed in three weeks ago has a hole in it. Life happened in between: a refund arrived, a bill was larger than you remembered, you forgot to enter the vet bill. The projection is still running off the old number and quietly getting further from the truth.
A check-in closes that gap in about ten seconds. In the Monthly Check-in section, pick an account, type what it holds right now, confirm the date, and press Log check-in. That's the whole interaction β no import, no file, no connection.
What the drift number tells you
The panel then leads with the number it exists for: the drift. It shows what the forecast said you'd have on that date, what you actually had, and the gap between them β as money and as a percentage of the projection β with a per-account table underneath giving the same three figures for each account you've checked in.
| What you see | What it usually means |
|---|---|
| Drift near zero | Your plan matches your life. Nothing to do β this is the result you're after |
| Actual consistently below forecast | Something real is missing from the plan, or an amount is too low. Spending that never got entered is the usual culprit |
| Actual consistently above forecast | You're planning for spending that isn't happening, or income you forgot to record. Pleasant, but it still makes the forecast wrong |
| A single large one-off gap | One event, not a pattern β a bonus, a big repair, a bill that landed in a different month than planned |
Drift is a measurement, not a verdict. It doesn't say you overspent; it says the model and the world disagree, and points at where.
Re-anchoring the forecast
A check-in measures the gap; it doesn't silently rewrite your accounts. When the drift is real rather than a rounding wobble, close it yourself in two fields: open the account in the Accounts panel, set its starting balance to what you observed, and set its as-of date to the day you observed it. Everything from that date forward is then projected from a number you have actually looked at, rather than one you typed in weeks ago and have been compounding ever since.
Re-anchoring fixes the level of the forecast, not its shape. If the same drift reappears at the next check-in, the plan itself is missing something β that's the point to go looking for the transaction you never entered, or to import a few months of real transactions and let Plan vs Actual tell you which category it lives in.
10 Importing Your Bank's File
Nearly every bank lets you download your own transactions β usually a button marked Export, Download, or Statement somewhere near the transaction list. Cashflow Compass reads that file. You get your real spending sitting next to your plan, without typing a single line of it in.
Importing a file is the opposite of linking an account, and the difference is worth being precise about:
- No credentials. The app never asks for a username, password, PIN, security question or one-time code. There is no login form anywhere in it.
- No aggregator. No Plaid, no SimpleFIN, no GoCardless, no open banking, no OAuth to any institution, no third-party service of any kind.
- Nothing is uploaded. The app makes no network requests at all. You pick a file with a file picker; the browser reads it from your disk; the parsing happens in the page. Nothing is sent anywhere, because there is nowhere for it to be sent.
- Credentials inside the file are thrown away. OFX and QFX downloads often still carry the sign-on block the request was built from β
USERID,USERPASS, session keys, the lot. The parser strips that whole block before it reads anything, and then keeps only the transaction fields it explicitly recognises: date, amount, payee, id, memo, type. Nothing else survives the parse, so those values are never stored in your data, never written into an export, and never shown on screen.
You downloaded a file, and you opened it. That's all that happened.
Formats it reads
| Format | Where you'll meet it |
|---|---|
| CSV | The universal fallback β nearly every bank offers it. Column layouts vary wildly, which is what the mapping wizard is for |
| OFX / QFX | The "download for Quicken / Money" option. Structured, and usually carries a unique id per transaction, which makes duplicate detection exact |
| QIF | The older Quicken format. Still offered by plenty of banks and by most personal-finance software as an export |
| camt.053 | The ISO 20022 XML bank statement, common in Europe and for business accounts |
The four steps
Importing walks through four screens, and nothing is written to your data until you confirm the last one. You can back out at any point.
| Step | What happens |
|---|---|
| 1 Β· Which account is this? | Which of your accounts the file belongs to. If a saved column layout exists for that account, it says so here |
| 2 Β· Does this look like your statement? | A preview of the parsed rows. If the file is wrong, or the parse has gone sideways, you find out before anything is added |
| 3 Β· Point the columns at the right fields | The mapping step, for CSV. Structured formats say "there is nothing to line up here" and skip straight past it |
| 4 Β· Check what is about to be added | The review: what's new, what's already recorded, what might be a duplicate, and anything that couldn't be read |
Mapping the columns (CSV only)
OFX, QFX, QIF and camt.053 name their own fields β the app knows where the date is. CSV doesn't: one bank exports Date, Description, Amount, another Posted, Payee, Debit, Credit, Balance. So step 3 asks you to point at them:
| You choose | What it does |
|---|---|
| Date column | Which column holds the transaction date |
| Payee / description column | Which column names the merchant |
| How the amount is written | Either one column, already signed (money out negative), or separate money-out and money-in columns β the split layout common in UK and European exports |
| Flip the sign | Turn on if your bank writes money out as a positive number. Available for the structured formats too, for the occasional bank that does this in OFX |
| Date format | Which way round the day and month are β see below |
The layout is remembered per account. Next month's export from the same bank arrives with the mapping already applied and a note saying so β change anything that's different, or just carry on. If the bank changes its format, you remap once and that becomes the saved layout.
Ambiguous dates are asked about, never guessed
A column full of values like 03/04/2026 is genuinely ambiguous: April 3rd to a British bank, March 4th to an American one. Guessing would be both catastrophic and invisible β every transaction would land in the wrong month, the comparison against your plan would be quietly nonsense, and nothing on screen would look broken.
So the app asks, and shows its working: it tells you which reading the file's own values support (a day above 12 anywhere in the column settles it), and offers the choice as Day first β 03/04/2026 is 3 April 2026 against Month first β 03/04/2026 is 4 March 2026. Unambiguous files β ISO 2026-04-03, or a column that can only be read one way β don't interrupt you. A column with evidence for both readings is flagged as inconsistent, because that's a fact about the file you'd want to know.
Duplicates
Overlapping imports are normal: you download "last 90 days" every month, so two-thirds of every file is already in your records. The review step sorts that out for you, in three piles:
- New β imported. Rows carrying a unique bank id (the
FITIDin OFX, QFX and QIF) are keyed on it exactly; rows without one, which means most CSVs, get a stable fingerprint built from the date, amount and payee. - Already imported β recognised and left alone. An import that adds nothing reports as a clean no-op, not a failure.
- Possible duplicates β same amount, within three days of something already recorded. These are your call, with a tickbox each: two identical $40 fuel stops in one week are perfectly normal, and so is the same transaction appearing twice in overlapping exports. The app won't guess which.
Categories, and what it won't invent
New rows arrive with a category suggested from what you've already filed β if you've categorised "SAFEWAY" as Groceries before, the next one follows. Anything it can't recognise is left uncategorised rather than guessed at, and the review screen tells you how many of each. The first rows are editable right there before you commit, and everything is editable afterwards.
If the file's currency differs from the one you budget in, you're told β and the numbers are imported exactly as written, with no conversion. The app never invents an exchange rate.
Matching actuals to your plan
Imported rows are matched against your planned transactions inside a date window, because reality is never punctual: the rent you planned for the 1st cleared on the 3rd, and it's still the rent. A match records which planned transaction the real one settled, and how many days off it was. Unmatched rows aren't a problem β they're often exactly what you want to see, since a real transaction with nothing planned behind it is spending your plan doesn't know about.
You can re-categorise, edit or delete any imported row afterwards. Nothing the parser decides is final.
11 Plan vs Actual
With actuals imported, the app can put the two side by side over the same period and show you where your plan and your life disagree.
- By category β planned versus actual, the gap in money and percent, and how many months of evidence sit behind the comparison. That last number matters: a 40% overrun on one month of data is noise, and the same overrun across six months is a fact about you.
- By month β planned versus actual net for each month, which is where you see whether a bad month was a blip or the start of a trend.
- Totals β the whole period in one line, so you know whether the plan is broadly right with a couple of bad categories, or broadly wrong.
Recalibration prompts
Where a category has been consistently different from its plan, a card appears under Recalibration: "Dining has run $310/mo against a $200 plan across 4 months", tagged with how much evidence sits behind it β early days, fair evidence, or strong evidence. Weigh the tag before you act on the number; four months of agreement is an argument, one month is an anecdote.
Press Update the plan and you're shown exactly which planned transactions would change and from what to what, line by line, before anything happens. Accept it and the amounts are rewritten β proportionally, if several transactions share the category, so the split you set up is preserved. Ignore it and nothing moves. And it's undoable, like every other destructive action in the app.
If a category has no planned transaction to move, the card says so rather than offering a button that couldn't do anything.
Going over on groceries three months running is not a character flaw. It's a signal that the number in your plan is wrong β you don't spend $400 on groceries, you spend $520, and you have never once spent $400.
A budget you miss every month isn't a budget, it's a wish, and a forecast built on wishes tells you nothing useful about next March. Correcting the plan to match reality is what makes every other number in the app trustworthy. If you then want to spend less on groceries, that's a decision you make on purpose β and the plan is the place you record the decision, not the place you punish yourself for it.
12 Confidence Bands
The Running Balance chart can draw a shaded band around the projected line instead of a single confident stroke β a plausible range, showing that a forecast twelve months out is a spread, not a promise.
Why the band is usually missing
It won't draw until it has evidence. A category must have at least three observed months of imported actuals before it contributes, and with nothing imported there is no band at all.
That refusal is the feature. Your plan is deterministic arithmetic: $900 of rent, twelve times. There is no uncertainty inside that number, so any spread drawn around it would have to be invented β a decoration shaped like statistics. Fake error bars are worse than none, because they make a guess look measured, and a range you can't justify is worse than a line you know is a single scenario.
So the app waits. Import a few months of real transactions and the band appears, built from how much your actual monthly spending in each category has varied β the 25th, 50th and 75th percentiles of your own observed history. At that point the range means something: it's your spending, not a formula's idea of it.
13 The Debt Payoff Planner
Give each credit account a balance, an APR and a minimum payment (see Accounts), put whatever you can spare in the Extra per month box, and the Debt Payoff section simulates clearing the cards β two ways at once, side by side, with the cheaper of the two marked.
Both run the same simulation month by month: interest is added to each balance at its APR Γ· 12, every card receives its minimum, and everything left over β including the minimums freed up by cards that have already cleared β is thrown at the front of the queue. You get each card's payoff date and interest total, the debt-free date, and the total interest for each strategy.
What the difference actually looks like
Two cards β $6,000 at 24.99% with a $150 minimum, and $1,500 at 12% with a $40 minimum β and $200 a month spare on top of the $190 of minimums:
| Strategy | Debt-free in | Total interest | First card cleared |
|---|---|---|---|
| Avalanche (24.99% card first) | 24 months | $1,778 | month 22 |
| Snowball (smaller balance first) | 25 months | $2,084 | month 7 |
So on these numbers avalanche saves $306 and one month, while snowball gets one of the two cards off your back 15 months sooner. That's the real trade, stated in money and months rather than in slogans β and it's small enough here that either answer is defensible, which is precisely the kind of thing you can only know by looking.
14 Goals & Sinking Funds
A goal is something you're saving toward: a deposit, a wedding, a replacement car, three months of runway. A sinking fund is the same machinery pointed at a bill you know is coming β the $1,200 annual insurance premium you'd rather meet as $100 a month than as one bad morning in June.
Setting one up
Add the goal
In the Savings Goals section, give it a name β "House Deposit", "Japan 2027", "Car Insurance Fund" β a Target amount, and optionally a By date. That creates a category of the Goal kind for you; you can also make one by hand in the Categories panel, and the shipped Savings Goal category is there to rename if you only need one.
Fund it with an ordinary transaction
A $250 monthly transfer from checking to savings, filed under that goal category. Nothing special β it's a transaction like any other. Money moved into a goal category counts toward the goal, so the progress figure, the run-rate and the ETA all start moving. What you won't see is a new row in the forecast grid: a transfer changes where your money sits, not how much of it there is, so it adds nothing to a monthly income or expense total.
Adjust the target whenever it changes
Each goal's target and date stay editable in place. The target is what makes it a goal rather than a label β the percentage, the ETA and the on-track verdict are all measured against it. Leave the date off when there's no real deadline.
What you get back
- Accumulated β how much your plan puts into the goal across the horizon
- Monthly run-rate β the average per month, which is the number to change if the ETA disappoints you
- Percent of target β how far the horizon gets you
- ETA β the month the target is met. If the horizon isn't long enough to reach it, the ETA is projected beyond the horizon at your current rate rather than reported as "never"
- On track β with a target date set, whether the ETA lands before it
15 The Bills Calendar
The Bills Calendar section β headed Pay vs bills β draws a calendar of the forecast, one square per day, coloured by that day's net: green where money lands, red where it leaves, barely tinted where nothing much happens. Step through the months with the arrows, and click a day to see exactly what falls on it and for how much.
Why a calendar, when you already have monthly totals
Because a month is not experienced as a total. Consider a perfectly ordinary month that ends $300 up β a good month by every summary row in the app. Now look at the shape of it: rent, the car payment and the insurance renewal all fall on the 1st and 2nd, and the paycheck doesn't arrive until the 14th. Between those dates you are living on whatever was left over, and the monthly figure said nothing about that.
The calendar is where you see it β and where you see the fix, which is usually not "spend less" but "move that direct debit to the 16th". Most banks will change a payment date if you ask.
16 Scenarios
A scenario is a named set of changes layered over your base plan. It doesn't edit your plan β it's a lens you look through, and you can take it off again.
Each scenario holds any number of changes, and there are only three kinds:
- Add a transaction that doesn't exist in the base plan β childcare, a second rent, a new subscription
- Remove one that does β the rent on the flat you're leaving
- Modify one β change its amount, its start or end date, its escalation, or pause it
| Scenario | Typically holds |
|---|---|
| New job | Modify the salary line upward from a start date; add a commute; remove the freelance income it replaces |
| Baby | Add childcare from a date; pause the travel fund; modify groceries upward |
| The move | End the current rent in June; add the new, larger one from July; add a one-time moving cost and deposit |
| Lean month | Cut the discretionary lines by half and see how much runway that actually buys |
Switching and comparing
The Scenarios section lists your base plan first β labelled everything you have entered β with each scenario beneath it, and marks which one is active. Activate a scenario and the entire app recalculates through it: the forecast grid, every chart, every insight card. Switch back and everything returns. Your base plan is never modified in place, so there is nothing to undo and nothing to be careful about; a scenario you delete takes only its own changes with it.
Underneath, Base plan vs each scenario is the view to reach for when you're actually deciding. Each row is the whole forecast rebuilt with that scenario's changes applied, so you can read closing cash, net worth and monthly net down the column instead of trying to remember what the numbers looked like a minute ago. Nothing you've entered is altered by looking.
17 Export, Import & Backup
Your data lives in your browser's LocalStorage β it persists between visits on the same browser and device. But LocalStorage can be cleared. Export regularly to keep a portable backup.
Excel (β¬ Export / Data βΎ β Import Excel workbook)
The Excel workbook contains five sheets:
| Sheet | Contents |
|---|---|
Accounts | Every account β id, name, type, starting balance, as-of date, plus apr and minPayment for credit cards |
Categories | Every category β id, name, kind, color, plus the target amount and target date on Goal categories |
Transactions | Every transaction with all its fields β kind, amount, category, account (and from-account for transfers), frequency, custom interval, start and end dates, escalation, tags, notes, paused state |
Settings | Schema version, currency, the global forecast horizon, and one row per per-chart horizon override β so a re-import restores the same view you left, not just the same numbers |
Forecast | A snapshot of the projection: one row per transaction (name, its category, a column per month, and a total), then the income, expense, net cash flow and closing balance summary rows |
The first four sheets are what get read back on import. The Forecast sheet is a rendered snapshot for reading and charting in Excel β it's written on export and ignored on import, since the app recalculates the projection from your accounts and transactions every time.
To edit amounts in Excel and re-import: export β open the Transactions sheet β change any amount, frequency, or date β save β import the file back. Every change ripples through the forecast and charts immediately.
A file written by a newer version of the app is refused rather than imported, because loading it here would silently drop the fields this build doesn't know about and then save that loss back over your data. The message tells you which format version the file is and which one this copy understands.
JSON (Data βΎ β Export JSON / Import JSON file)
A lighter alternative to Excel β a single .json file containing all your state. Useful for quickly transferring data between browsers or devices, or sharing a budget template with someone else. Same replace-all import semantics apply.
JSON is the complete one. The workbook is designed to be readable and editable in Excel, so it carries accounts, categories, transactions and settings. The JSON file carries everything the app knows β including your imported actuals, your check-in history and your scenarios. If you're moving to a new machine or keeping one true backup, make it the JSON.
Encrypted export (optional)
The Encrypted export block of the Backup & Portability section writes a JSON export that's scrambled with a passphrase β worth doing when the file is headed for a shared computer, a USB stick, or a backup somewhere you don't fully control.
Type the passphrase twice, tick the box confirming you understand it can't be recovered, and press Export encrypted JSON. To open one again, use the ordinary Import JSON file item under Data βΎ and pick the encrypted file β you're asked for the passphrase at that point.
The scrambling uses the browser's own encryption engine: the passphrase is stretched into a key with PBKDF2-SHA256 (310,000 rounds), and the file is encrypted with AES-GCM. No server, no account, no key held anywhere β this is a lock on a file on your disk, applied on your machine.
There is no reset link, no recovery code, no security question, no support address and no back door. Nobody can open that file for you β not the person who wrote this app, not anyone. That isn't an oversight or a feature nobody has got round to: a back door would defeat the entire point of encrypting it.
Before you encrypt anything, decide where the passphrase is written down β a password manager, or paper somewhere you trust. Keep a plain export as well until you're certain the passphrase is safe. If you'd rather not carry that risk at all, don't encrypt: an ordinary export in a folder only you can reach is a perfectly reasonable choice, and it's the default.
.xlsx wouldn't open in Excel, which is the whole point of the workbook. And a connected live file is always written in plain text, since the app has to be able to read and rewrite it continuously. Browsers also withhold their encryption engine from pages opened straight from a folder, so if you're on a file:// address the block will say so; serving the folder over http://localhost enables it.
The export-age indicator
The app keeps track of when you last exported and shows it in the top bar β Exported today, Exported 12d ago, or Never exported. If it's been more than a month and you have data worth losing, it says so and offers both export buttons on the spot. It's the one nag in the app, and it's there because a cleared browser takes an un-exported budget with it.
18 Live Workbook Mode
Normally the cycle is: work in the app, remember to export, and later import the file back. The Live file block of the Backup & Portability section removes the round trip. Connect the app to a .json or .xlsx file on your computer and every save writes that file as well as the browser. The spreadsheet stops being a snapshot you remember to take and becomes the data itself.
Connecting
- Connect a file β choose a location and name, and the app creates the file and starts writing it. Pick
.jsonfor everything, or.xlsxif you want the workbook itself to be the live file. - Use an existing file β point at a file you already have. Because that file and the browser can disagree, you're asked which way to resolve it first: load the file into the app (replacing what's in the browser) or overwrite the file with what the browser holds. It won't guess.
- Write now and Load from file force a save or a reload on demand β handy after another device has been editing.
- Reconnect appears when the app remembers your file from a previous session but the browser needs you to re-grant permission. Disconnect stops writing; the file stays exactly as it was last written.
Sync with no server, no account, and no third party
Put that file in a folder your computer already syncs β iCloud Drive, Dropbox, OneDrive, Google Drive, Syncthing β and you have multi-device sync for free. Your sync client moves the file exactly as it moves your other documents, and every device opens the same one. Nothing about your budget passes through anything belonging to this app, because there is nothing belonging to this app: no service, no account, no server, and nothing of yours on anyone else's computer.
Where it works
Live mode uses the browser's File System Access API, which exists only in Chromium-based browsers β Chrome, Edge, Brave, Opera, Arc β and only on a secure origin. Two consequences worth knowing:
- Firefox and Safari don't implement it at all, so the buttons won't appear there.
- Opening the app straight from a folder isn't enough. No browser hands a
file://page write access to a file on your disk. Serve the folder overhttp://localhost(for examplepython3 -m http.serverin the project folder) or use a hosted copy over https.
Whenever it's unavailable, the panel says which of those reasons applies rather than simply hiding. And it isn't a downgrade: the export and import buttons remain the fully-supported path everywhere, with the same data and the same formats. Nothing is locked behind live mode.
What to expect
- The browser asks permission for that one file. You pick it; the app can touch nothing else. Being asked again in a new session is the browser protecting you, not a fault β press Reconnect.
- Writes are debounced and rate-limited. Changes land in the file a moment after you stop editing, and never more than once a second, so a burst of typing doesn't thrash your disk or your sync client.
- LocalStorage keeps working too. Connecting a file adds a destination; it doesn't remove the one you had.
- A live file is written in plain text β the app has to reread and rewrite it constantly. If you need the file locked, use an encrypted export instead.
19 Settings & Housekeeping
Everything the app can be configured with lives in the top bar and its Data βΎ menu. There is no settings page, no account, and nothing to sign in to.
Currency
The currency dropdown covers USD, EUR, GBP, CAD, AUD, and JPY, and it changes how every number in the app is formatted β the symbol, the separators, and the decimal places your locale expects. It does not convert anything: switching from USD to EUR turns $1,234.56 into β¬1,234.56, not into today's exchange rate. Pick the currency you actually budget in and enter your amounts in that currency.
Forecast horizon
The horizon dropdown next to it sets the length of the forecast for the grid and every chart at once. End of Year is the months remaining in the current calendar year, which shrinks as the year goes on β useful in January, less so in December. Individual charts can override it; see the Charts section.
Collapsible sections
Within a view, every section carries a βΎ toggle in its header β Categories and Transactions, the forecast and the charts, balances, the calendar, check-ins, variance, debt, goals, scenarios and the workbook panel. Collapse the ones you're not working on. Between views, use the rail on the left, the keys 1β6, or the command palette.
Keyboard shortcuts
These work anywhere except while you're typing in a field. Press ? in the app for the same list.
| Key | What it does |
|---|---|
| βK / Ctrl K | Open the command palette |
| 1β6 | Switch view: Overview, Plan, Forecast, Reality, Planning, Backup |
| n | New transaction |
| a | New account |
| / | Jump to the transaction search box |
| e | Export an Excel workbook |
| j | Export a JSON file |
| Esc | Close a panel, menu or dialog, or cancel the edit in progress |
Where your data lives
Everything is saved to your browser's LocalStorage, automatically, a moment after each change. That storage is tied to this browser on this device: your budget won't follow you to a different browser, a different machine, or a private window, and clearing site data removes it. Moving between devices is what the JSON export β or live workbook mode β is for.
That's the complete list of places your data goes: this browser, and any file you explicitly export or connect. There is no account, no server and no cloud copy, so there is nothing to sign into and nothing to delete anywhere else.
Undo
Deleting an account, a category, or a transaction β one at a time or several from the bulk bar β puts a message in the bottom corner of the screen with an Undo button next to it. So does an edit made in the table, and a bulk pause or resume. One click puts everything back exactly as it was, including any transactions that were reassigned as part of the delete. It's a single level of undo β the last destructive action, not a full history β so use it while the message is still on screen.
Reset
Reset everything, at the bottom of the Data βΎ menu, clears your data after a confirmation dialog. It removes every account and every transaction and returns your settings to their defaults β and it restores the 19 default categories, including any you had renamed or deleted. It's a clean slate, not an empty one. Export first if there's anything you'd want back.
20 Pro Tips
Plan around 3-paycheck months
When the Insights panel flags a 3-paycheck month, add a one-time transaction in that month β an extra savings deposit, a debt payment, or a planned purchase β so the windfall has a destination before it arrives.
Use escalation on rent and raises
Add an annual escalation % to your rent (5β10% is typical in many markets) and to your paycheck (2β4% COL raise). Over 24β36 months the compounding effect on your forecast becomes very visible.
Duplicate to create variants
Choose Duplicate from the β― menu on any transaction to quickly create a copy. Useful for modeling a second job, a spouse's income, or a what-if scenario β add it, check the forecast, then delete or pause it.
Pause instead of delete
If a subscription is on hold, a project income ended, or a seasonal expense is off, choose Pause from its β― menu rather than deleting it. It disappears from the forecast but is there to resume with one click when circumstances change.
Tag cross-cutting expenses
Use tags like kid, work, or shared on transactions that don't fit neatly into one category. Tags are searchable in the transaction list, making it easy to filter to just the items that matter for a given conversation.
Set end dates on temporary expenses
Loan payoffs, introductory subscription prices, a sublease β give them an end date so the forecast automatically stops counting them after that point. The impact on your future balance appears immediately.
Use 36-month Running Balance
Set the Running Balance chart to 36 months even if your main horizon is 12. The long-arc view reveals whether your savings are genuinely growing or just holding steady, which the short view can obscure.
Import three months, then recalibrate once
Download three months of transactions from your bank, import them, and work through the Plan vs Actual suggestions in one sitting. It's the single highest-value hour you can spend in this app: everything downstream β insights, bands, scenarios β gets more honest at once.
Check in every payday
Attach a balance check-in to something you already do. Payday works well. A run of small drifts is far more informative than one heroic reconciliation every six months.
Keep a "lean month" scenario on file
Build a scenario with the discretionary lines halved and leave it there. When something goes wrong, you already know exactly how much runway cutting back buys you, and you don't have to work it out in a bad week.
Test the extra payment before committing it
In the payoff planner, try the extra payment at $50, $100 and $200 before deciding. Seeing the debt-free date jump is a better motivator than any amount of resolve.
Edit in Excel, re-import
If you prefer editing in a spreadsheet, export to Excel, make bulk changes to amounts, dates, or frequencies in the Transactions sheet, and re-import. All changes ripple through the app instantly. It's the fastest way to do a full budget overhaul.
Built for the Observation Deck
Cashflow Compass uses the Observation Deck's dark "mission control" theme β the same design language as the rest of the fleet. Mono uppercase labels mark anything data-ish, and every number is set in tabular figures so columns line up as values change.