A family investment portfolio on one screen
A family's wealth scattered across six platforms was brought into a single self-built web app, with the full investment history reconstructed. AI did the work through browser automation; passwords never left the owner's hands.
- Client
- Hungarian private individuals, family wealth
- Area
- Development
- Status
- In production, with daily automatic pricing
Starting point
Over the years the family’s wealth spread across six places: crypto on three exchanges, stocks and ETFs in a broker account, plus physical gold, cash in foreign currency and artwork. Nobody could see what the whole was worth or how each investment was performing.
- No overview. The current value required logging into five or six platforms and converting dollars, euros and pounds to forints in one’s head.
- No return measurement. Crypto purchases go back to 2022 through USDT and coin-to-coin swaps; nobody could answer “what did I pay and what is it worth now”.
- The manual spreadsheet does not scale. There was an Excel for transfers, but it did not track swaps, rewards or sales.
- Sensitive data. The family did not want to hand its entire wealth data to an external portfolio service. A private, closed system was needed.
The solution: a self-hosted portfolio PWA
A self-operated web app installable on a phone, with access for only the two authorised family members. All data lives in the family’s own database on an EU server, with row-level security across the whole database.
| Layer | Technology | Role |
|---|---|---|
| Frontend + backend | Next.js | Dashboard, asset management, API routes |
| Database + auth | Supabase (PostgreSQL, EU region) | Assets, transactions, daily snapshots, login |
| Hosting + scheduling | Vercel | Deploy from GitHub, daily and weekly cron jobs |
| AI | Claude API | Built-in AI chat and weekly report |
| Price sources | CoinGecko, Finnhub, metals.dev, frankfurter.app | Crypto, stock, gold and currency rates |
Main features: total wealth as a single number, invested capital and return in forints and percent, time-series chart; five asset classes with their own valuation logic and target allocations; automatic multi-source pricing, manual dated valuation for unpriceable assets; nightly snapshot from cron; per-asset profit and loss; built-in AI chat that answers questions like “which of my assets performs worst?”; a weekly AI report every Sunday evening.
The hard part: reconstructing the investment history
The biggest intellectual work was not the app but producing real data. A portfolio tracker is worth exactly as much as its cost bases are accurate, so we worked from the exchanges’ full transaction histories, not from estimates.
- Download. The largest exchange’s full history back to 2022 in 10 half-year exports (nearly 4,000 rows), the other exchanges’ histories and the broker’s PDF statement.
- Merge and clean. Deduplication, filtering doubly booked reward rows, ledger balance check per coin: the closing balance had to come out at zero.
- Provenance. Every coin held today traced back to its source: forint to USDT conversions at actual rates, coin-to-coin swaps with a “rolling cost” method, inter-exchange transfers matched to the unit.
- Settlement. Proportional cost reduction on partial sales; closed positions documented separately so they do not distort the live portfolio.
- Stocks. Every position’s forint cost from the actual currency conversions in the broker statement, fees included; dividends as separate transactions.
- Load. Straight into the database, with methodology notes in each asset’s note field. Where data was incomplete, an agreed, flagged estimate went in.
Most of the session ran through browser automation on the owner’s machine: the AI navigated, read and uploaded, the owner only logged into accounts and approved steps. Passwords and API secrets never left the owner’s hands.
Technical challenges
| Challenge | Solution |
|---|---|
| Exchange export UIs are hard to automate from a browser | Capturing the export API call and replaying it programmatically for other periods |
| The free stock API only prices US exchanges | Two-tier pricing: US stocks live, European ETFs with a manual dated value |
| Multiple currencies mixed in cost bases | Every cost basis in forints at the actual conversion rates |
| Original cost lost after coin-to-coin swaps | Rolling cost: the cost basis follows the coin through every swap |
Results
On first opening, the family saw its entire wealth on one screen for the first time, with per-asset returns, including facts that had been hidden until then: the 2024 altcoin purchases sit at over 90% loss while the major coins are in profit.
- One number, one screen. Answering “how much do we have in total?” went from hours to seconds, from a phone.
- A real return picture. Profit and loss is a number, not a feeling, per asset and at portfolio level.
- Data sovereignty. No external provider sees the family’s wealth; the database, the code and access belong to the family.
- Zero maintenance burden. Prices and daily snapshots refresh themselves; manual work is only needed for a new purchase.
- Zero licence cost. Every component runs on a free tier; the only usage-based item is the AI calls, a few hundred forints a month.
Lessons
First: most of a portfolio tracker’s value is in data quality, not software. Reconstruction took half the time and gives the numbers their credibility. Second: the AI and human division of labour works in a live financial setting too, if the boundaries are clear: the AI never handles passwords and never initiates a transaction, it only reads, calculates and records. Third: free API tier limits are design questions, not blockers.