One workspace for accounts, spending, savings goals and crypto holdings. A private personal-finance application, presented through a real local walkthrough with synthetic data.
Private source. Public walkthrough.
- 01 / INPUTAccounts and statements
- 02 / PROCESSReview and organize
- 03 / OUTPUTAnalyze and plan
The problem
Balances, bank statements, recurring spending and crypto holdings are often scattered across different tools. Finance Core brings them into one workspace so that importing a statement, reviewing a transaction and planning a savings goal form a connected workflow.
Watch the demo
On mobile, use fullscreen and turn your phone sideways to read the application in detail.
Fullscreen could not open. Try the player controls or download this video.
- Change the month and open a day's spending, scrolling through its individual transactions.
- Explore account balances and individual account details.
- Understand the bank connector's requirements, open the real format/account options and select a synthetic CSV.
- Confirm two transactions and preview the same file again to see duplicate prevention.
- Review annual analytics, update a savings goal and create a budget.
- Calculate an illustrative savings scenario and pause/reactivate a local subscription record, without changing a provider contract.
- Save genuine local context for the advisor; external AI remains explicitly disabled.
- Inspect local crypto holdings and type an EUR snapshot for preview, without confirming an import, connecting a wallet or executing trades.
Technical decisions
Separate the interface from financial data
A React / TypeScript client consumes a Python / FastAPI API. PostgreSQL is the application database; the public walkthrough uses an isolated SQLite demo instead. Account balances and internal transfers are kept separate from income and spending.
Preview before importing
Statement imports support multiple bank formats and a generic CSV. Preview, duplicate detection and reversible import batches make changes inspectable before and after confirmation. The recording uses fictional statements, not personal banking data.
Connect banks with explicit consent
A GoCardless PSD2 read-only connector implements consent, account mapping, synchronization and revocation. Automatic bank data retrieval requires a configured provider and the user's authorization. The local demo has no bank connection; its import walkthrough uses CSV instead.
Show crypto without pretending to trade
Holdings can be entered manually or imported as snapshots. CoinMarketCap supplies market data when configured; it is not a wallet or exchange connector. Without a provider, quantities and recorded costs remain visible while market value and profit/loss remain unavailable.
Connect daily spending with planning
The monthly calendar opens each day's transactions and totals. Budgets, recurring subscriptions and savings goals complement those records; the simulator explores changes without moving money or modifying an external subscription.
Give the advisor explicit context
The advisor supports local notes that can be added, reviewed and deleted. The demonstration shows this genuine memory workflow. External AI is disabled in the isolated environment, so no generated advice or invented assistant response is presented.
Limits and data handling
- Both source repositories and the deployed application remain private. Only this case study and a sanitized demonstration are public.
- No live or sandbox bank consent was completed for this walkthrough. External bank, market-data and AI providers are disabled; no money or crypto is moved.
- Crypto holdings are tracked separately from the account-based net-worth total. A recorded purchase cost is not a current market valuation.
- Planning and simulations are estimates, not financial advice. Local functional tests do not certify production PostgreSQL migrations or external provider reliability.
A verifiable result
A working private application with connected workflows for accounts, transactions, import review, analytics, budgets, subscriptions, savings goals and crypto holdings. The public demonstration shows real interactions against an isolated local database, not mocked success screens.
How to check it
- Run the application against a dedicated synthetic database, with external providers disabled and no production configuration loaded.
- Check import preview, confirmation, duplicate prevention and undo; ensure internal transfers do not inflate income or spending.
- Review account analytics, savings scenarios and crypto quantities, keeping unavailable provider features explicitly labelled.