Skip to content

feat: stale manual balance detection — nudge to update or snooze #113

Description

@tomfunk

Problem

Manual accounts (createManualAccount — type='other', subtype='manual') and CSV accounts only get a new balance_history row when the user edits the value by hand (updateAccountValue writes a row for today). Every net worth / health query (core/health.ts, getNetWorthHistory, getAccountsWithBalances) uses each account's latest balance row regardless of age, so a manual balance entered six months ago silently distorts net worth, runway, FIRE progress, and the Health page — with no indication anything is stale.

The Accounts screens (TUI + GUI) already show "synced " per account via last_synced (getLinkedAccounts computes MAX(date) from balance_history), but nothing warns when that date is old, and manual accounts will always go stale without user action.

Proposed solution

  • Staleness threshold for manually-maintained balances (manual + CSV accounts), e.g. default 30–60 days, configurable via the settings table.
  • Accounts screen: stale badge / warning color on the "synced " text for accounts past the threshold, with a quick path to the existing edit-value flow.
  • Health page: a small notice when any included (non-excluded) manual balance is stale, e.g. "2 manual balances are >60 days old — net worth may be inaccurate", so the numbers on that page carry a caveat.
  • Snooze: per-account "remind me later" that suppresses the warning until a date. Could be a stale_snooze_until column on accounts or a settings key per account id. Snoozing should be cheap — the point is a nudge, not nagging (same principle as Plaid sync health warnings #21: in-context, not modal).
  • MCP: list_accounts could include daysSinceUpdate / needsAttention so the agent can prompt too — dovetails with the flags proposed in Plaid sync health warnings #21.

Notes

  • Plaid sync health warnings #21 covers Plaid-linked accounts failing to sync (link errors, expired tokens). This issue is the complement: accounts that are designed to be updated by hand and have no sync to fail.
  • An alternative to snooze-per-account: let the user mark an account "slow-moving" (e.g. house value) with a longer threshold instead of repeatedly snoozing.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions