Planning eval · Codex · the plans
Same brief, five plans.
Each Codex build got exactly one of these as its PLAN.md. Every plan starts with the same short brief; each step down adds more structure and detail.
Goal only · The short brief only · 158 words
Build me a simple app to keep track of my money across all my bank accounts. Bring together my bank statements and receipts, reconcile the totals, and match transfers, refunds and duplicate entries so I can trust the numbers. I want to see what's coming in, where it's going and, when the records support it, what's available. Give me a clear overview and make it easy to drill into any payment. Help me spot realistic ways to save and plan monthly and daily budgets going forward. Keep things up to date each day, flag anything that needs attention and let me add notes. If a vendor or payment is unclear, show me what's missing and let me label it rather than guess. Remember my budgets, notes and corrections when I come back or refresh the data. Start with the supplied made-up bank data and supporting files, and keep everything local so no private financial information leaves the machine.
Epics · + high-level user outcomes · 414 words
Build me a simple app to keep track of my money across all my bank accounts. Bring together my bank statements and receipts, reconcile the totals, and match transfers, refunds and duplicate entries so I can trust the numbers. I want to see what's coming in, where it's going and, when the records support it, what's available. Give me a clear overview and make it easy to drill into any payment. Help me spot realistic ways to save and plan monthly and daily budgets going forward. Keep things up to date each day, flag anything that needs attention and let me add notes. If a vendor or payment is unclear, show me what's missing and let me label it rather than guess. Remember my budgets, notes and corrections when I come back or refresh the data. Start with the supplied made-up bank data and supporting files, and keep everything local so no private financial information leaves the machine.
Epics
Epic 1. Trust the money before acting
The user can rely on reconciled amounts and inspect exclusions, uncertainty and provenance before making a decision.
Epic 2. Understand where money comes from
The user understands who paid, why the evidence says they paid, and how income differs from spending and bank balances.
Epic 3. Understand where money goes
The user can recognize destinations, categories and locations from evidence instead of decoding cryptic statements or trusting guesses.
Epic 4. Navigate from a question to an answer
The user moves easily from the big picture to a payment or next action, without losing their place or learning accounting jargon.
Epic 5. Find realistic ways to spend less
The user sees evidenced opportunities and trade-offs, rather than generic advice or claims that a proposed saving has already happened.
Epic 6. Plan an affordable month and day
The user chooses clear monthly and category limits, sees daily room and future commitments, and can adjust plans before overspending.
Epic 7. Stay up to date every day
The user sees recent money movements and sync freshness, and can refresh safely without duplicates or losing a previously trusted view.
Epic 8. Notice problems while there is time to act
The user receives a small set of explainable, actionable alerts for budget pressure, unusual changes and gaps, without repeated noise.
Epic 9. Keep context and stay in control
The user resolves uncertainty, remembers decisions in their own words and returns tomorrow without repeating work.
Stories · + stories with done-when checks · 1,749 words
Build me a simple app to keep track of my money across all my bank accounts. Bring together my bank statements and receipts, reconcile the totals, and match transfers, refunds and duplicate entries so I can trust the numbers. I want to see what's coming in, where it's going and, when the records support it, what's available. Give me a clear overview and make it easy to drill into any payment. Help me spot realistic ways to save and plan monthly and daily budgets going forward. Keep things up to date each day, flag anything that needs attention and let me add notes. If a vendor or payment is unclear, show me what's missing and let me label it rather than guess. Remember my budgets, notes and corrections when I come back or refresh the data. Start with the supplied made-up bank data and supporting files, and keep everything local so no private financial information leaves the machine.
Epics
Epic 1. Trust the money before acting
The user can rely on reconciled amounts and inspect exclusions, uncertainty and provenance before making a decision.
- 1.1 Read all four account sources. Done when: one fixture folder and one command ingest Bank 1 TSV and Bank 2 USD/EUR plus Bank 3 PDFs without manual preprocessing.
- 1.2 Deduplicate overlapping files. Done when: Bank 3 rows repeated across files count once by account and transaction identifier while retaining their statement provenance.
- 1.3 Reconcile to the cent. Done when: each original statement's native-currency debits and credits match printed totals before deduplication, or rebuilding stops with the named mismatch.
- 1.4 Show USD alongside original amounts. Done when: EUR rows use their month's printed rate and per-row half-up cent rounding; missing rates are reported instead of invented.
- 1.5 Match owned-account transfers. Done when: supported, unambiguous transfer sides within five days are matched once, principal is excluded, evidenced fees up to USD 25 remain spend and matches appear in the checks.
- 1.6 Cancel bounced principal. Done when: confirmation evidence links a returned transfer to its principal, both cancel and only evidenced fees or FX loss remain spend.
- 1.7 Net supported refunds. Done when: linked in-period refunds reduce their purchase's vendor and category in the posting month; both rows are marked, pre-period refunds are excluded and unpaired refunds remain unresolved.
- 1.8 Show trust checks. Done when: the page shows pass or look with evidence for reconciliation, category sums, evidence-backed share, unidentified share, vendor/category conflicts, transfer matches and missing periods.
- 1.9 Review the largest charges. Done when: the 20 largest kept charges, or all when fewer exist, show source detail for review without claiming that the agent performed a human check.
Epic 2. Understand where money comes from
The user understands who paid, why the evidence says they paid, and how income differs from spending and bank balances.
- 2.1 Keep income outside spending. Done when: customer receipts and other credits appear as income and do not inflate spending or category totals.
- 2.2 Explain income by payer. Done when: every income payment shows payer, memo, account and amount, with payer totals agreeing with income and unsupported payment reasons left unknown.
- 2.3 Open matching email context. Done when: payer or payment links open the matching local synthetic email thread rather than a fabricated or external destination.
- 2.4 Separate actuals from plans and balances. Done when: the overview shows current income, spending and their net difference for a labelled period, never calls net movement a balance, and shows balances only with supplied source evidence.
Epic 3. Understand where money goes
The user can recognize destinations, categories and locations from evidence instead of decoding cryptic statements or trusting guesses.
- 3.1 Resolve cryptic business names. Done when: frozen synthetic business evidence is used and saved, unresolved facts stay unknown and private people or financial data are never researched externally.
- 3.2 Match local mailbox evidence. Done when: receipts and confirmations use transaction references or matching supported vendor identity, native amount and dates within five days, and ambiguous matches are not claimed.
- 3.3 Reuse the research. Done when: a rebuild reuses saved source-backed vendor research without new lookups for known merchants or losing user labels.
- 3.4 Verify material vendor identities. Done when: identified vendors with retained charges over USD 25 have sourced identities and descriptions, unresolved material vendors remain visible until labelled, at least 98% of kept gross debit USD has evidence-backed identification and a user label resolves the remaining material vendor through rebuild.
- 3.5 Apply the two-level taxonomy. Done when: each kept transaction has exactly one of the supplied 60 categories in 10 groups, and every category breakdown agrees with confirmed spend.
- 3.6 Recognize confirmed rent. Done when: the rent transfer uses the payee and category confirmed by the fictional user answers, with evidence visible.
- 3.7 Keep unnamed transfers honest. Done when: outgoing transfers lacking a resolved payee remain in the explicit unknown-transfer category rather than an invented category or vendor.
- 3.8 Show spending locations. Done when: country totals include Online, Transfers and Unknown buckets; explicit missing or ambiguous source evidence keeps ride-hailing Unknown, otherwise direct or unanimous same-day evidence resolves it and conflicting or missing evidence stays Unknown.
Epic 4. Navigate from a question to an answer
The user moves easily from the big picture to a payment or next action, without losing their place or learning accounting jargon.
- 4.1 Show headline numbers. Done when: the page shows net total, total divided by 12, biggest month and active recurring monthly cost from the same retained transactions.
- 4.2 Find the next useful action. Done when: the overview separates history from today, shows changes, budget position, freshness and attention items, and reaches income, spending, savings, budget, alerts or notes within three clicks.
- 4.3 Filter and drill down. Done when: month, group, category, vendor, country and heatmap clicks combine across spending views, removable chips and Clear filters work, and any purchase is reachable within three clicks.
- 4.4 Inspect every transaction. Done when: search and sort expose date, account, vendor, description, raw text, group, category, country, native and USD amounts, evidence and clear refund, source-evidence and user-correction tags.
- 4.5 Use the app on mobile and with a keyboard. Done when: navigation and forms work at 360 pixels and with a keyboard, focus and labels are visible, Back retains filters, and empty, loading, invalid-input and error states explain the next step.
Epic 5. Find realistic ways to spend less
The user sees evidenced opportunities and trade-offs, rather than generic advice or claims that a proposed saving has already happened.
- 5.1 Detect recurring charges. Done when: known subscriptions and software/bill vendors with at least three monthly charges 21-40 days apart are listed without guessing unsupported schedules.
- 5.2 Show actual recurring cost and status. Done when: monthly cost uses net payments over inclusive first-to-last calendar months, the 45-day active cutoff at the selected period end is applied, cancellation wins and current cost includes active series only.
- 5.3 Review grounded savings scenarios. Done when: active recurring cancellation scenarios and supported comparable-period increases have source links, calculation basis, estimated monthly amounts and uncertainty; insufficient coverage is explicit and overlapping amounts are not promised as a total.
- 5.4 Keep a savings decision. Done when: planned or dismissed statuses and linked notes persist through reload, restart, sync and rebuild without changing money totals or claiming a service was cancelled.
Epic 6. Plan an affordable month and day
The user chooses clear monthly and category limits, sees daily room and future commitments, and can adjust plans before overspending.
- 6.1 Set monthly and category budgets. Done when: current or future month plans save total, category limits, expected income and unpaid reserve; negative or invalid amounts are rejected, zero limits are safe and plans survive reload, restart, sync and rebuild.
- 6.2 See actuals, daily allowance and pace. Done when: the user sees month-to-date and daily spend against saved limits, overspend and remaining room, with estimates labelled and refunds, fees, zero limits and month end handled without double counting or dividing by zero.
- 6.3 Adjust a plan without double counting. Done when: editing limits or unpaid reserves immediately refreshes budgets and warnings, future months do not invent actuals, and a reserve is not counted as an expense or added to the spending limit.
Epic 7. Stay up to date every day
The user sees recent money movements and sync freshness, and can refresh safely without duplicates or losing a previously trusted view.
- 7.1 Sync accepted snapshots safely. Done when: launch and simulated-day advances automatically sync once per day, manual sync is available, only listed forward dates are accepted, repeated imports are idempotent and failed reconciliation retains the last good state.
- 7.2 Follow the daily movement timeline. Done when: sync status, per-account coverage, new and duplicate counts and recent movement sources are visible; excluded transfers stay inspectable and user records and the selected day survive restart and rebuild.
Epic 8. Notice problems while there is time to act
The user receives a small set of explainable, actionable alerts for budget pressure, unusual changes and gaps, without repeated noise.
- 8.1 Explain budget and movement alerts. Done when: budget pressure, unusual charges, unresolved payments and failed or stale sync produce explainable alerts with evidence and a useful next action, without claiming fraud.
- 8.2 Acknowledge and revisit alerts. Done when: stable keys prevent refresh duplicates, higher severity supersedes lower severity, acknowledgements persist, resolutions remain in history, and recurrence or escalation requests attention again.
Epic 9. Keep context and stay in control
The user resolves uncertainty, remembers decisions in their own words and returns tomorrow without repeating work.
- 9.1 Expose unresolved rows. Done when: unidentified vendors, unnamed transfers and unknown booking types are visible with amounts and their unresolved status.
- 9.2 Label a transaction in the page. Done when: a correction form applies the selected transaction's vendor/category to every affected view immediately, preserve raw text and survive reload.
- 9.3 Preserve labels on rebuild. Done when: saved corrections are retained and reapplied when bash run.sh rebuild rereads the frozen inputs.
- 9.4 Write and revisit notes. Done when: notes on existing transactions, months, savings or alerts support create, edit, delete and search; text is safe and validated, timestamps and targets remain visible, and all user records survive sync, reload, restart and rebuild without changing source data.
Epics, features, stories · + features grouping the stories · 1,893 words
Build me a simple app to keep track of my money across all my bank accounts. Bring together my bank statements and receipts, reconcile the totals, and match transfers, refunds and duplicate entries so I can trust the numbers. I want to see what's coming in, where it's going and, when the records support it, what's available. Give me a clear overview and make it easy to drill into any payment. Help me spot realistic ways to save and plan monthly and daily budgets going forward. Keep things up to date each day, flag anything that needs attention and let me add notes. If a vendor or payment is unclear, show me what's missing and let me label it rather than guess. Remember my budgets, notes and corrections when I come back or refresh the data. Start with the supplied made-up bank data and supporting files, and keep everything local so no private financial information leaves the machine.
Epics
Epic 1. Trust the money before acting
The user can rely on reconciled amounts and inspect exclusions, uncertainty and provenance before making a decision.
Feature 1A. Reliable source records
- 1.1 Read all four account sources. Done when: one fixture folder and one command ingest Bank 1 TSV and Bank 2 USD/EUR plus Bank 3 PDFs without manual preprocessing.
- 1.2 Deduplicate overlapping files. Done when: Bank 3 rows repeated across files count once by account and transaction identifier while retaining their statement provenance.
- 1.3 Reconcile to the cent. Done when: each original statement's native-currency debits and credits match printed totals before deduplication, or rebuilding stops with the named mismatch.
- 1.4 Show USD alongside original amounts. Done when: EUR rows use their month's printed rate and per-row half-up cent rounding; missing rates are reported instead of invented.
Feature 1B. Honest spending versus movement
- 1.5 Match owned-account transfers. Done when: supported, unambiguous transfer sides within five days are matched once, principal is excluded, evidenced fees up to USD 25 remain spend and matches appear in the checks.
- 1.6 Cancel bounced principal. Done when: confirmation evidence links a returned transfer to its principal, both cancel and only evidenced fees or FX loss remain spend.
- 1.7 Net supported refunds. Done when: linked in-period refunds reduce their purchase's vendor and category in the posting month; both rows are marked, pre-period refunds are excluded and unpaired refunds remain unresolved.
Feature 1C. Visible confidence and review
- 1.8 Show trust checks. Done when: the page shows pass or look with evidence for reconciliation, category sums, evidence-backed share, unidentified share, vendor/category conflicts, transfer matches and missing periods.
- 1.9 Review the largest charges. Done when: the 20 largest kept charges, or all when fewer exist, show source detail for review without claiming that the agent performed a human check.
Epic 2. Understand where money comes from
The user understands who paid, why the evidence says they paid, and how income differs from spending and bank balances.
Feature 2A. Explain incoming payments
- 2.1 Keep income outside spending. Done when: customer receipts and other credits appear as income and do not inflate spending or category totals.
- 2.2 Explain income by payer. Done when: every income payment shows payer, memo, account and amount, with payer totals agreeing with income and unsupported payment reasons left unknown.
- 2.3 Open matching email context. Done when: payer or payment links open the matching local synthetic email thread rather than a fabricated or external destination.
Feature 2B. Understand the current money position
- 2.4 Separate actuals from plans and balances. Done when: the overview shows current income, spending and their net difference for a labelled period, never calls net movement a balance, and shows balances only with supplied source evidence.
Epic 3. Understand where money goes
The user can recognize destinations, categories and locations from evidence instead of decoding cryptic statements or trusting guesses.
Feature 3A. Recognizable destinations with evidence
- 3.1 Resolve cryptic business names. Done when: frozen synthetic business evidence is used and saved, unresolved facts stay unknown and private people or financial data are never researched externally.
- 3.2 Match local mailbox evidence. Done when: receipts and confirmations use transaction references or matching supported vendor identity, native amount and dates within five days, and ambiguous matches are not claimed.
- 3.3 Reuse the research. Done when: a rebuild reuses saved source-backed vendor research without new lookups for known merchants or losing user labels.
- 3.4 Verify material vendor identities. Done when: identified vendors with retained charges over USD 25 have sourced identities and descriptions, unresolved material vendors remain visible until labelled, at least 98% of kept gross debit USD has evidence-backed identification and a user label resolves the remaining material vendor through rebuild.
Feature 3B. Meaningful spending categories
- 3.5 Apply the two-level taxonomy. Done when: each kept transaction has exactly one of the supplied 60 categories in 10 groups, and every category breakdown agrees with confirmed spend.
- 3.6 Recognize confirmed rent. Done when: the rent transfer uses the payee and category confirmed by the fictional user answers, with evidence visible.
- 3.7 Keep unnamed transfers honest. Done when: outgoing transfers lacking a resolved payee remain in the explicit unknown-transfer category rather than an invented category or vendor.
Feature 3C. Honest locations
- 3.8 Show spending locations. Done when: country totals include Online, Transfers and Unknown buckets; explicit missing or ambiguous source evidence keeps ride-hailing Unknown, otherwise direct or unanimous same-day evidence resolves it and conflicting or missing evidence stays Unknown.
Epic 4. Navigate from a question to an answer
The user moves easily from the big picture to a payment or next action, without losing their place or learning accounting jargon.
Feature 4A. Understand the overview
- 4.1 Show headline numbers. Done when: the page shows net total, total divided by 12, biggest month and active recurring monthly cost from the same retained transactions.
- 4.2 Find the next useful action. Done when: the overview separates history from today, shows changes, budget position, freshness and attention items, and reaches income, spending, savings, budget, alerts or notes within three clicks.
Feature 4B. Explore without losing context
- 4.3 Filter and drill down. Done when: month, group, category, vendor, country and heatmap clicks combine across spending views, removable chips and Clear filters work, and any purchase is reachable within three clicks.
- 4.4 Inspect every transaction. Done when: search and sort expose date, account, vendor, description, raw text, group, category, country, native and USD amounts, evidence and clear refund, source-evidence and user-correction tags.
Feature 4C. Comfortable human navigation
- 4.5 Use the app on mobile and with a keyboard. Done when: navigation and forms work at 360 pixels and with a keyboard, focus and labels are visible, Back retains filters, and empty, loading, invalid-input and error states explain the next step.
Epic 5. Find realistic ways to spend less
The user sees evidenced opportunities and trade-offs, rather than generic advice or claims that a proposed saving has already happened.
Feature 5A. Understand ongoing commitments
- 5.1 Detect recurring charges. Done when: known subscriptions and software/bill vendors with at least three monthly charges 21-40 days apart are listed without guessing unsupported schedules.
- 5.2 Show actual recurring cost and status. Done when: monthly cost uses net payments over inclusive first-to-last calendar months, the 45-day active cutoff at the selected period end is applied, cancellation wins and current cost includes active series only.
Feature 5B. Evidence-backed opportunities
- 5.3 Review grounded savings scenarios. Done when: active recurring cancellation scenarios and supported comparable-period increases have source links, calculation basis, estimated monthly amounts and uncertainty; insufficient coverage is explicit and overlapping amounts are not promised as a total.
Feature 5C. Choose without changing the facts
- 5.4 Keep a savings decision. Done when: planned or dismissed statuses and linked notes persist through reload, restart, sync and rebuild without changing money totals or claiming a service was cancelled.
Epic 6. Plan an affordable month and day
The user chooses clear monthly and category limits, sees daily room and future commitments, and can adjust plans before overspending.
Feature 6A. User-owned future plans
- 6.1 Set monthly and category budgets. Done when: current or future month plans save total, category limits, expected income and unpaid reserve; negative or invalid amounts are rejected, zero limits are safe and plans survive reload, restart, sync and rebuild.
Feature 6B. Daily room and month-end outlook
- 6.2 See actuals, daily allowance and pace. Done when: the user sees month-to-date and daily spend against saved limits, overspend and remaining room, with estimates labelled and refunds, fees, zero limits and month end handled without double counting or dividing by zero.
- 6.3 Adjust a plan without double counting. Done when: editing limits or unpaid reserves immediately refreshes budgets and warnings, future months do not invent actuals, and a reserve is not counted as an expense or added to the spending limit.
Epic 7. Stay up to date every day
The user sees recent money movements and sync freshness, and can refresh safely without duplicates or losing a previously trusted view.
Feature 7A. Repeatable daily updates
- 7.1 Sync accepted snapshots safely. Done when: launch and simulated-day advances automatically sync once per day, manual sync is available, only listed forward dates are accepted, repeated imports are idempotent and failed reconciliation retains the last good state.
Feature 7B. Freshness and movement history
- 7.2 Follow the daily movement timeline. Done when: sync status, per-account coverage, new and duplicate counts and recent movement sources are visible; excluded transfers stay inspectable and user records and the selected day survive restart and rebuild.
Epic 8. Notice problems while there is time to act
The user receives a small set of explainable, actionable alerts for budget pressure, unusual changes and gaps, without repeated noise.
Feature 8A. Evidence-based attention
- 8.1 Explain budget and movement alerts. Done when: budget pressure, unusual charges, unresolved payments and failed or stale sync produce explainable alerts with evidence and a useful next action, without claiming fraud.
Feature 8B. Quiet, durable alert history
- 8.2 Acknowledge and revisit alerts. Done when: stable keys prevent refresh duplicates, higher severity supersedes lower severity, acknowledgements persist, resolutions remain in history, and recurrence or escalation requests attention again.
Epic 9. Keep context and stay in control
The user resolves uncertainty, remembers decisions in their own words and returns tomorrow without repeating work.
Feature 9A. Correct unknowns honestly
- 9.1 Expose unresolved rows. Done when: unidentified vendors, unnamed transfers and unknown booking types are visible with amounts and their unresolved status.
- 9.2 Label a transaction in the page. Done when: a correction form applies the selected transaction's vendor/category to every affected view immediately, preserve raw text and survive reload.
- 9.3 Preserve labels on rebuild. Done when: saved corrections are retained and reapplied when bash run.sh rebuild rereads the frozen inputs.
Feature 9B. Remember why a decision was made
- 9.4 Write and revisit notes. Done when: notes on existing transactions, months, savings or alerts support create, edit, delete and search; text is safe and validated, timestamps and targets remain visible, and all user records survive sync, reload, restart and rebuild without changing source data.
Sprint · + story points and four sprints · 2,614 words
Build me a simple app to keep track of my money across all my bank accounts. Bring together my bank statements and receipts, reconcile the totals, and match transfers, refunds and duplicate entries so I can trust the numbers. I want to see what's coming in, where it's going and, when the records support it, what's available. Give me a clear overview and make it easy to drill into any payment. Help me spot realistic ways to save and plan monthly and daily budgets going forward. Keep things up to date each day, flag anything that needs attention and let me add notes. If a vendor or payment is unclear, show me what's missing and let me label it rather than guess. Remember my budgets, notes and corrections when I come back or refresh the data. Start with the supplied made-up bank data and supporting files, and keep everything local so no private financial information leaves the machine.
Epics
Epic 1. Trust the money before acting
The user can rely on reconciled amounts and inspect exclusions, uncertainty and provenance before making a decision.
Feature 1A. Reliable source records
- 1.1 Read all four account sources. Done when: one fixture folder and one command ingest Bank 1 TSV and Bank 2 USD/EUR plus Bank 3 PDFs without manual preprocessing.
- 1.2 Deduplicate overlapping files. Done when: Bank 3 rows repeated across files count once by account and transaction identifier while retaining their statement provenance.
- 1.3 Reconcile to the cent. Done when: each original statement's native-currency debits and credits match printed totals before deduplication, or rebuilding stops with the named mismatch.
- 1.4 Show USD alongside original amounts. Done when: EUR rows use their month's printed rate and per-row half-up cent rounding; missing rates are reported instead of invented.
Feature 1B. Honest spending versus movement
- 1.5 Match owned-account transfers. Done when: supported, unambiguous transfer sides within five days are matched once, principal is excluded, evidenced fees up to USD 25 remain spend and matches appear in the checks.
- 1.6 Cancel bounced principal. Done when: confirmation evidence links a returned transfer to its principal, both cancel and only evidenced fees or FX loss remain spend.
- 1.7 Net supported refunds. Done when: linked in-period refunds reduce their purchase's vendor and category in the posting month; both rows are marked, pre-period refunds are excluded and unpaired refunds remain unresolved.
Feature 1C. Visible confidence and review
- 1.8 Show trust checks. Done when: the page shows pass or look with evidence for reconciliation, category sums, evidence-backed share, unidentified share, vendor/category conflicts, transfer matches and missing periods.
- 1.9 Review the largest charges. Done when: the 20 largest kept charges, or all when fewer exist, show source detail for review without claiming that the agent performed a human check.
Epic 2. Understand where money comes from
The user understands who paid, why the evidence says they paid, and how income differs from spending and bank balances.
Feature 2A. Explain incoming payments
- 2.1 Keep income outside spending. Done when: customer receipts and other credits appear as income and do not inflate spending or category totals.
- 2.2 Explain income by payer. Done when: every income payment shows payer, memo, account and amount, with payer totals agreeing with income and unsupported payment reasons left unknown.
- 2.3 Open matching email context. Done when: payer or payment links open the matching local synthetic email thread rather than a fabricated or external destination.
Feature 2B. Understand the current money position
- 2.4 Separate actuals from plans and balances. Done when: the overview shows current income, spending and their net difference for a labelled period, never calls net movement a balance, and shows balances only with supplied source evidence.
Epic 3. Understand where money goes
The user can recognize destinations, categories and locations from evidence instead of decoding cryptic statements or trusting guesses.
Feature 3A. Recognizable destinations with evidence
- 3.1 Resolve cryptic business names. Done when: frozen synthetic business evidence is used and saved, unresolved facts stay unknown and private people or financial data are never researched externally.
- 3.2 Match local mailbox evidence. Done when: receipts and confirmations use transaction references or matching supported vendor identity, native amount and dates within five days, and ambiguous matches are not claimed.
- 3.3 Reuse the research. Done when: a rebuild reuses saved source-backed vendor research without new lookups for known merchants or losing user labels.
- 3.4 Verify material vendor identities. Done when: identified vendors with retained charges over USD 25 have sourced identities and descriptions, unresolved material vendors remain visible until labelled, at least 98% of kept gross debit USD has evidence-backed identification and a user label resolves the remaining material vendor through rebuild.
Feature 3B. Meaningful spending categories
- 3.5 Apply the two-level taxonomy. Done when: each kept transaction has exactly one of the supplied 60 categories in 10 groups, and every category breakdown agrees with confirmed spend.
- 3.6 Recognize confirmed rent. Done when: the rent transfer uses the payee and category confirmed by the fictional user answers, with evidence visible.
- 3.7 Keep unnamed transfers honest. Done when: outgoing transfers lacking a resolved payee remain in the explicit unknown-transfer category rather than an invented category or vendor.
Feature 3C. Honest locations
- 3.8 Show spending locations. Done when: country totals include Online, Transfers and Unknown buckets; explicit missing or ambiguous source evidence keeps ride-hailing Unknown, otherwise direct or unanimous same-day evidence resolves it and conflicting or missing evidence stays Unknown.
Epic 4. Navigate from a question to an answer
The user moves easily from the big picture to a payment or next action, without losing their place or learning accounting jargon.
Feature 4A. Understand the overview
- 4.1 Show headline numbers. Done when: the page shows net total, total divided by 12, biggest month and active recurring monthly cost from the same retained transactions.
- 4.2 Find the next useful action. Done when: the overview separates history from today, shows changes, budget position, freshness and attention items, and reaches income, spending, savings, budget, alerts or notes within three clicks.
Feature 4B. Explore without losing context
- 4.3 Filter and drill down. Done when: month, group, category, vendor, country and heatmap clicks combine across spending views, removable chips and Clear filters work, and any purchase is reachable within three clicks.
- 4.4 Inspect every transaction. Done when: search and sort expose date, account, vendor, description, raw text, group, category, country, native and USD amounts, evidence and clear refund, source-evidence and user-correction tags.
Feature 4C. Comfortable human navigation
- 4.5 Use the app on mobile and with a keyboard. Done when: navigation and forms work at 360 pixels and with a keyboard, focus and labels are visible, Back retains filters, and empty, loading, invalid-input and error states explain the next step.
Epic 5. Find realistic ways to spend less
The user sees evidenced opportunities and trade-offs, rather than generic advice or claims that a proposed saving has already happened.
Feature 5A. Understand ongoing commitments
- 5.1 Detect recurring charges. Done when: known subscriptions and software/bill vendors with at least three monthly charges 21-40 days apart are listed without guessing unsupported schedules.
- 5.2 Show actual recurring cost and status. Done when: monthly cost uses net payments over inclusive first-to-last calendar months, the 45-day active cutoff at the selected period end is applied, cancellation wins and current cost includes active series only.
Feature 5B. Evidence-backed opportunities
- 5.3 Review grounded savings scenarios. Done when: active recurring cancellation scenarios and supported comparable-period increases have source links, calculation basis, estimated monthly amounts and uncertainty; insufficient coverage is explicit and overlapping amounts are not promised as a total.
Feature 5C. Choose without changing the facts
- 5.4 Keep a savings decision. Done when: planned or dismissed statuses and linked notes persist through reload, restart, sync and rebuild without changing money totals or claiming a service was cancelled.
Epic 6. Plan an affordable month and day
The user chooses clear monthly and category limits, sees daily room and future commitments, and can adjust plans before overspending.
Feature 6A. User-owned future plans
- 6.1 Set monthly and category budgets. Done when: current or future month plans save total, category limits, expected income and unpaid reserve; negative or invalid amounts are rejected, zero limits are safe and plans survive reload, restart, sync and rebuild.
Feature 6B. Daily room and month-end outlook
- 6.2 See actuals, daily allowance and pace. Done when: the user sees month-to-date and daily spend against saved limits, overspend and remaining room, with estimates labelled and refunds, fees, zero limits and month end handled without double counting or dividing by zero.
- 6.3 Adjust a plan without double counting. Done when: editing limits or unpaid reserves immediately refreshes budgets and warnings, future months do not invent actuals, and a reserve is not counted as an expense or added to the spending limit.
Epic 7. Stay up to date every day
The user sees recent money movements and sync freshness, and can refresh safely without duplicates or losing a previously trusted view.
Feature 7A. Repeatable daily updates
- 7.1 Sync accepted snapshots safely. Done when: launch and simulated-day advances automatically sync once per day, manual sync is available, only listed forward dates are accepted, repeated imports are idempotent and failed reconciliation retains the last good state.
Feature 7B. Freshness and movement history
- 7.2 Follow the daily movement timeline. Done when: sync status, per-account coverage, new and duplicate counts and recent movement sources are visible; excluded transfers stay inspectable and user records and the selected day survive restart and rebuild.
Epic 8. Notice problems while there is time to act
The user receives a small set of explainable, actionable alerts for budget pressure, unusual changes and gaps, without repeated noise.
Feature 8A. Evidence-based attention
- 8.1 Explain budget and movement alerts. Done when: budget pressure, unusual charges, unresolved payments and failed or stale sync produce explainable alerts with evidence and a useful next action, without claiming fraud.
Feature 8B. Quiet, durable alert history
- 8.2 Acknowledge and revisit alerts. Done when: stable keys prevent refresh duplicates, higher severity supersedes lower severity, acknowledgements persist, resolutions remain in history, and recurrence or escalation requests attention again.
Epic 9. Keep context and stay in control
The user resolves uncertainty, remembers decisions in their own words and returns tomorrow without repeating work.
Feature 9A. Correct unknowns honestly
- 9.1 Expose unresolved rows. Done when: unidentified vendors, unnamed transfers and unknown booking types are visible with amounts and their unresolved status.
- 9.2 Label a transaction in the page. Done when: a correction form applies the selected transaction's vendor/category to every affected view immediately, preserve raw text and survive reload.
- 9.3 Preserve labels on rebuild. Done when: saved corrections are retained and reapplied when bash run.sh rebuild rereads the frozen inputs.
Feature 9B. Remember why a decision was made
- 9.4 Write and revisit notes. Done when: notes on existing transactions, months, savings or alerts support create, edit, delete and search; text is safe and validated, timestamps and targets remain visible, and all user records survive sync, reload, restart and rebuild without changing source data.
Sprint checkpoints
These four ordered checkpoints fit inside the same single build session and fixed budget used by every approach. They are not two-week periods or extra sessions. Points are relative scope estimates, not measured effort. The expanded backlog totals 145 points; it supersedes the annual-only 85-point estimate.
Finish evidence lookup before coverage verification. Finish money rules before daily budgets and daily imports before alerts. These checkpoints grant no extra time. Proceed without waiting for a human response.
Backlog with points
| Story | Feature | Points |
|---|---|---|
| 1.1 Read all four account sources | 1A | 8 |
| 1.2 Deduplicate overlapping files | 1A | 2 |
| 1.3 Reconcile to the cent | 1A | 3 |
| 1.4 Show USD alongside original amounts | 1A | 1 |
| 1.5 Match owned-account transfers | 1B | 5 |
| 1.6 Cancel bounced principal | 1B | 2 |
| 1.7 Net supported refunds | 1B | 3 |
| 1.8 Show trust checks | 1C | 3 |
| 1.9 Review the largest charges | 1C | 1 |
| 2.1 Keep income outside spending | 2A | 1 |
| 2.2 Explain income by payer | 2A | 2 |
| 2.3 Open matching email context | 2A | 2 |
| 2.4 Separate actuals from plans and balances | 2B | 3 |
| 3.1 Resolve cryptic business names | 3A | 5 |
| 3.2 Match local mailbox evidence | 3A | 5 |
| 3.3 Reuse the research | 3A | 1 |
| 3.4 Verify material vendor identities | 3A | 8 |
| 3.5 Apply the two-level taxonomy | 3B | 3 |
| 3.6 Recognize confirmed rent | 3B | 1 |
| 3.7 Keep unnamed transfers honest | 3B | 1 |
| 3.8 Show spending locations | 3C | 3 |
| 4.1 Show headline numbers | 4A | 3 |
| 4.2 Find the next useful action | 4A | 5 |
| 4.3 Filter and drill down | 4B | 5 |
| 4.4 Inspect every transaction | 4B | 3 |
| 4.5 Use the app on mobile and with a keyboard | 4C | 5 |
| 5.1 Detect recurring charges | 5A | 3 |
| 5.2 Show actual recurring cost and status | 5A | 2 |
| 5.3 Review grounded savings scenarios | 5B | 5 |
| 5.4 Keep a savings decision | 5C | 3 |
| 6.1 Set monthly and category budgets | 6A | 5 |
| 6.2 See actuals, daily allowance and pace | 6B | 5 |
| 6.3 Adjust a plan without double counting | 6B | 3 |
| 7.1 Sync accepted snapshots safely | 7A | 8 |
| 7.2 Follow the daily movement timeline | 7B | 5 |
| 8.1 Explain budget and movement alerts | 8A | 5 |
| 8.2 Acknowledge and revisit alerts | 8B | 3 |
| 9.1 Expose unresolved rows | 9A | 2 |
| 9.2 Label a transaction in the page | 9A | 5 |
| 9.3 Preserve labels on rebuild | 9A | 2 |
| 9.4 Write and revisit notes | 9B | 5 |
| Total | 145 |
Checkpoint 1. Trust the historical money (41 points)
Order: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 3.1, 3.2, 3.3, 3.5, 3.6, 3.7.
Demo: Reconcile every source and explain transfer, refund, vendor and category evidence without invented facts.
Checkpoint 2. Answer human questions (48 points)
Order: 3.8, 2.2, 2.3, 2.4, 5.1, 5.2, 4.1, 4.2, 4.3, 4.4, 9.1, 9.2, 9.3, 3.4.
Demo: Navigate from overview to a purchase and income message, retain filters and a saved label, and distinguish actual movement from balances.
Checkpoint 3. Plan and refresh daily control (34 points)
Order: 6.1, 6.2, 6.3, 7.1, 7.2, 8.1, 8.2.
Demo: Set a month and daily budget, advance a fixture day, sync without duplication and investigate a budget or freshness alert.
Checkpoint 4. Act, remember and verify (22 points)
Order: 5.3, 5.4, 9.4, 4.5, 1.8, 1.9.
Demo: Review a sourced saving, record a decision and note, use the app by keyboard on mobile, then restart and rebuild without losing user records.