Tidepool
A calm money dashboard that reads your bank exports
About
Tidepool turns the CSV files every bank lets you download into a dashboard you can actually read. It sorts transactions into categories, spots subscriptions you forgot about and shows where the month went, without connecting to your bank or sending your data anywhere.
I'm a designer, not an engineer, so the whole thing was built in conversation with Claude Code. The interesting part was teaching it the quirks of 14 Nordic bank formats. Every parser has tests, and the test files are real (anonymised) exports from people in the community.
It's open source under MIT. Fork it, add your bank, and send a pull request.
How it was made
Shared by the maker. Numbers are their own estimate.
- Build time
- 3 weekends
- AI spend
- $46
- Prompts
- ~182
- Written by AI
- 92%
Agents
Claude Code
72% of the workArchitecture, CSV parsers, tests and the deploy pipeline
v0
18% of the workFirst pass of the dashboard UI
ChatGPT
10% of the workCategory rules and onboarding copy
MCP servers3
Supabase
Schema, migrations and seed data straight from the agent
Playwright
End-to-end tests and the demo recording
GitHub
Issues and pull requests from contributors
Build log
Weekend 1
Sketched the dashboard in v0, exported it and moved to Claude Code to wire up uploads.
Weekend 1
First parser (Danske Bank). Asked the agent to write the tests before the parser, which saved me twice.
Weekend 2
Added Supabase through the MCP server. The agent wrote the migrations and the row level security policies.
Weekend 2
Community sent 9 bank exports. 14 formats supported by Sunday.
Weekend 3
Playwright MCP for end-to-end tests. The same run records the demo video you see above.
Build recipe
The code is on GitHub. If you’d rather build it yourself than fork it, paste this into your own agent.
Written by Claude Code
From the project’s code and history · 442 words
Build a web app called Tidepool: a calm money dashboard that reads your bank exports.
What it does
Tidepool turns the CSV files every bank lets you download into a dashboard you can actually read. It sorts transactions into categories, spots subscriptions you forgot about and shows where the month went, without connecting to your bank or sending your data anywhere.
Stack
Use Next.js, Supabase, Tailwind, shadcn/ui, Vercel. The original was built with Claude Code and v0 and ChatGPT in 3 weekends, for about $46 in AI usage.
How it fits together
- A server-rendered web app with a small API layer
- A database for user data, with row level security on every table
- Sign-in so each person only sees their own data
Build it in this order
- Set up the project, the database and sign-in, and deploy an empty page
- Build the main screen with realistic sample data
- Connect it to real data and add the one action the app exists for
- Add the empty states and error messages a new user will hit
- Write tests for anything that touches money, dates or other people's data
Tools to connect
- Supabase MCP: schema, migrations and seed data straight from the agent
- Playwright MCP: end-to-end tests and the demo recording
- GitHub MCP: issues and pull requests from contributors
A prompt that worked: Teach the agent a new bank format
Here is an anonymised CSV export from a bank we don't support yet (attached as fixtures/new-bank.csv). 1. Work out the column mapping, date format, decimal separator and how refunds are shown. 2. Write a parser in lib/parsers/ that follows the same interface as lib/parsers/nordea.ts. 3. Write tests first using the fixture. Cover refunds, foreign currency rows and the summary line at the bottom. 4. Run the tests until they pass. Do not change other parsers. When you're done, list anything in the file you weren't sure about.
Watch out for
- Don't build settings, teams or billing before the main screen works
- Keep the first screen useful with sample data, so the app makes sense before anyone has set it up
Done when
- A new user can sign in and get value in under two minutes
- Everything works on a phone
- Tests pass for the core logic
Before writing code, ask me up to five questions about who this finance web app is for and what the first version must do. Then work in small steps: after each one, tell me how to try it and wait for my feedback.
Built from this 1
Versions people built from Tidepool, by forking it or from its recipe.
Discussion
8 comments · 2 built their own
Built my own from the recipe for Swiss bank exports in an afternoon, and it got 96% of categories right on the first pass. The ‘tests first’ step for new banks is the best part. I've already stolen it for Patchnotes.
- Amara Okafor8 hours ago
How did you get the Supabase MCP to write row level security that you trust? That's the part I'm always nervous about letting an agent do.
I didn't trust it at first either. I asked it to write a test per policy that tries to read another user's rows and expects to fail. Those tests run in CI now.
- Priya Raman6 hours ago
Same approach here. Adding: ask it to explain each policy in one sentence. If it can't, the policy is probably too clever.
Forked it for couples (Tidepool Duo). The codebase was easy to extend, everything under features/ made it painless to keep merging upstream.
- Sofie Krag1 day ago
As someone who doesn't code: is there a way to use this without setting up Supabase myself?
More like this
Paste a README, get honest notes on what a stranger won't understand