Your health score
How keel decides a month can be trusted
The confidence states behind every month, and why coaching sometimes goes quiet on partial data.
Every financial ratio — fixed costs as a share of income, savings rate, spend versus your average — is only as good as the data behind it. A month with £1 of income and £445 of fixed costs produces a mathematically correct but useless number. That's not a coaching opportunity, it's a data gap.
So before keel coaches on anything built from ratios, it asks one question: do we actually have enough of the month's picture to trust this number?
How it works
Three confidence states
Every month lands in one of three states:
- Provisional — keel doesn't trust ratios yet. Coaching goes quiet on anything built on a percentage of income, and you'll see a "More data coming" note.
- Likely complete — keel is confident enough to coach. You'll see a small caveat noting the latest import date and any missing accounts, in case you want to close the loop yourself.
- Confirmed — either you completed the guided month close, or coverage is at 99%+ across all your accounts. No caveat; coaching fires clean.
Non-ratio signals — reminders to review transactions, subscription detection, import nudges — are unaffected. They work fine on partial data.
The caveat follows the numbers wherever you see them. On Reports it shows on all three tabs — Summary, Full P&L, and Trends — so opening up the detailed breakdown never quietly drops the warning the headline carried. On Trends the caveat reflects the most recent month on the chart; if that month is still settling, the caveat tells you.
What counts as "covered"
An account covers a month when two things are true:
- Its latest imported transaction is recent enough for that account's statement cadence (see below), and
- Its earliest imported transaction is on or before the end of the month in question — the account actually has data going back that far.
The second rule stops a new account from being falsely marked as covering months it didn't exist in. An account added in April with March-onwards data won't read as "covered" for February.
For monthly accounts (the default), a small buffer handles statement cutoff timing — a credit card that closes on the 28th counts just as covered as a current account imported on the 31st.
Statement cadence
Not every account sends a monthly statement. Some savings accounts statement every two months; some investment platforms statement quarterly; some accounts only show activity when you go looking.
You can tell keel an account's cadence in the account detail sheet:
- Monthly — the default
- Every 2 months — a sync in March counts as covering both February and March
- Every 3 months — a sync in March covers January through March
- Twice a year — six-month coverage window
- Yearly — annual statement only
- On demand — no regular statement at all. Each month is marked covered manually through the close flow's "Nothing happened" or "Skip" option. Useful for dormant accounts you keep open but rarely use.
Setting the cadence right means the account stops getting flagged as "missing" every month when the next statement simply isn't due yet.
Spend-weighted coverage
Not every account matters equally. Your main current account carries the bulk of your spending; a rarely-used travel card doesn't. keel weights each active account by its share of spending over the last 6 confirmed months.
A household whose main current account (80% of spend) is fully imported but whose credit card (20% of spend) hasn't synced sits at 80% coverage — provisional. Reach 90% and the month becomes likely complete.
Income on provisional months
Ratios need an income figure to divide by. On provisional months, keel works down a cascade, always preferring what you've told it over what it has inferred:
- Your declared income for the month. If you've set monthly income on the budget screen, that's used directly.
- Learned income patterns. After 3 or more confirmed months, keel learns who pays you, how often, and how much, and sums the monthly sources.
- 3-month rolling average. The mean of your actual income across the prior three months.
- Suppress. If none of the above produce a trustworthy number — a brand-new household, say — ratio signals simply don't fire.
Confirmed months always use actual observed income. No cascade, no guessing.
Why only ratios are gated
Suppressing all coaching on partial data would be over-correction. Most signals are about your behaviour, not arithmetic — review reminders, import nudges and subscription detection all work fine mid-month. Signals built on trailing multi-month averages don't depend on the current month either.
Only the signals that divide something by this month's income — or compare this month against a recent average while the month is still filling in — get gated.
Why it works this way
A shared threshold with month close. The 90% coverage bar is the same one the guided month close uses, so "likely complete" means the same thing everywhere in keel.
99% coverage auto-confirms. If your accounts are so current that 99%+ of your typical spend is covered, keel treats the month as confirmed even without a guided close — however you get your data in.
What you declare wins. If you've told keel what you earn, that beats anything keel learned. Learned patterns beat rolling averages because they account for variable pay timing. Rolling averages beat nothing.
Good to know
- Brand new household? With no confirmed months, spend weights can't be derived, so all active accounts are weighted equally until history builds up.
- Future months are skipped. Viewing a month that hasn't started yet won't show "more data coming" — the confidence check doesn't apply.
- An account added today shows no coverage for past months. Coverage requires data going back that far. A March-opened account can't cover February — and that's the correct answer, not a bug.
- Learned income patterns stay fresh automatically. Every time you complete a month or update a confirmed one, keel recomputes them in the background. You never wait for this.
FAQ
Why doesn't keel just hide partial months? Because you need to see what's been imported so far, especially mid-month. The numbers are real — they're just partial. Hiding them would be worse than labelling them.
The banner says "Nearly complete — based on data through 27 March". What do I do? You can wait for more imports to land, or import the missing statement yourself — the notice names the account holding things up. If you're happy the month is done, run the guided close to flip it to confirmed.
I confirmed the month but some numbers still changed. That's expected. Confirming captures a snapshot. If new data arrives later, keel flags the month as auto-updated and asks whether you want to refresh the score with the new data or keep your snapshot.
Why did coaching get quiet for a few days mid-month? Probably because coverage dropped below 90% — an account stopped syncing or a statement was due. Ratios went provisional; once the missing account syncs, they come back.
Does this affect my health score? No. The score has its own handling for partial data. Confidence is specifically about whether coaching signals fire and whether their ratios can be trusted. See how your score works.
My savings account only statements every two months — keel keeps marking it missing. Open the account detail sheet and change its cadence to "Every 2 months". A sync in any month will then cover both that month and the previous one. The same applies for quarterly, semi-annual and annual accounts.
I'm not getting statements for an account at all — it's there but dormant. Set its cadence to "On demand". keel will stop expecting regular data and you'll resolve each month explicitly through the close flow.