Business challenge
A person who runs a household and two or three companies keeps money in several currencies and in two different states: what has actually moved, and what is merely expected. Generic finance tools collapse both distinctions. They merge planned and recorded amounts into one balance, and they convert currencies at whatever rate the API returned that morning. The result is a figure that looks authoritative and cannot be reconciled against a single bank statement, which is precisely when people go back to a spreadsheet.
Solution
Recorded money and expected money live apart until an obligation is settled, so a forecast never quietly becomes a fact. Balances are derived from activity rather than stored as a running total, which is the decision that makes any past date reconstructable, carried-forward overdue items and receivables included, without a nightly job rewriting history. And the product does not convert currencies at all: EUR, RSD and USD are grouped and reported side by side, because a consolidated total resting on a rate nobody agreed to is worse than no total. Each entity keeps its own accounts and its own result, with the consolidated view one click away.
Results
- Every entity, family and each company, kept separate with a consolidated view on demand
- Three currencies reported side by side, with no exchange rate ever inserted by the system
- Recurring rules and one-time obligations held apart from recorded transactions until settled
- Any point in time reconstructable, including carried-forward overdue items and receivables
Technology stack
- React
- TypeScript
- Node.js
- PostgreSQL
