Pennyworth
- Building
- $0 / mo
- $0
Track your accounts, investments, spending, debt and net worth in one place all whist being able to ask questions about your finances.
Status
Building, and not launched. There are no production users. The web app is deployed and publicly reachable, but that live build predates the current codebase. The iOS app runs on the simulator only: there is no TestFlight build and no App Store record. Nothing can be bought yet, because StoreKit is not wired up and the paywall's subscribe button does nothing.
The web app started as the product and is now the headless API and reference implementation for the iOS app, which is where the work is. 85 commits landed on the native app in 8 days.
Features
Add a record by typing or speaking one sentence. "Spent £42 at Tesco" is classified first, as a record, goal, recurring payment, account or mortgage payment, then lands on an editable screen before anything is written.
Import a bank statement as CSV or PDF, with columns mapped and every row categorised automatically. Imports land in a review queue where you swipe right to approve, or approve the lot at once.
See what you are worth and what it is made of: net worth, an assets breakdown by class, and charts for liquid, investments, assets and debt from one month to all time, across nine account types including property, pensions, crypto and valuables.
Ask the in-app assistant about your own money and get answers in your own figures.
Budget by folder, with suggested ceilings worked out from real spending history, plus savings goals you can move actual money into with a two-legged transfer.
Track crypto wallets watch-only: paste an EVM or Solana address and balances sync automatically.
How it works
The app is zero-knowledge at rest. On sign-up the phone generates a 256-bit AES-GCM data key and wraps it twice, once under a PBKDF2-SHA256 key derived from the password at 600,000 iterations, and once under a printed recovery code. Only those two wrapped blobs are stored.
Amounts, account names, merchants and notes are encrypted field by field on the device before they leave it, so the amount column in Postgres holds ciphertext rather than numbers. Balances are never stored at all: the phone recomputes them from an opening balance plus every entry. There is no application server between the app and the database, and Supabase row level security is the entire authorisation layer.
The AI features are not zero-knowledge, and it would be dishonest to imply otherwise. The device decrypts, then posts plaintext to the app's own API, which forwards it to Anthropic. Asking the assistant a question sends a summary built on the phone: net worth, account names and balances, six months of income and spending, top categories, budgets, goals, recurring payments and investment positions. Importing a statement uploads the whole PDF. Nothing is persisted server-side, as those routes contain no database writes and no logging, but the claim that the server can never read your figures stops being true the moment an AI feature is used.
There are five API routes, all POST, all gated behind a Supabase JWT and a subscription check. Claude Haiku 4.5 handles four cheap structured jobs: parsing a sentence into an entry, classifying intent, turning a search phrase into a filter the device then runs locally, and mapping and categorising statement rows. Each uses forced strict tool use, so the model returns a validated object rather than prose. Claude Sonnet 5 handles only the conversational assistant, with the financial summary marked as an ephemeral cache block so it is not re-billed every turn.
Two Vercel cron jobs run once daily and neither touches a language model. One posts due recurring payments, the other snapshots prices and warms foreign exchange rates. Everything else runs on demand on the device.
Three services are live and keyless in production: CoinGecko for crypto prices, Frankfurter for foreign exchange, and the Anthropic API. Etherscan, Alchemy, Helius and Finnhub are built but key-gated and issuing no requests. Coinbase, Kraken, Gemini, Binance and Trading 212 connect on each user's own read-only key, so they cost nothing at any number of users. TrueLayer open banking is a working scaffold and inert until configured, with real work still to do before it can ship.
Tech stack
- Claude
- Codex
- Vercel
- Supabase
- Anthropic API
- GitHub
- Expo
Priced in full on the projects index, where the subscriptions are counted once across everything.
What it costs
Nothing today, because nothing is launched. Everything sits on a free tier and the Anthropic API has cost $0 to date.
| Item | Plan | Monthly |
|---|---|---|
| Vercel | Hobby | $0 |
| Supabase | Free | $0 |
| Anthropic API | Pay as you go | $0 |
| GitHub | Free | $0 |
| Expo and EAS | Free | $0 |
| CoinGecko and Frankfurter | Free, keyless | $0 |
| Total | $0 |
At launch it changes sharply, mostly because of open banking.
| Item | Plan | Monthly |
|---|---|---|
| TrueLayer | Open banking | $405.75 |
| Anthropic API | Budgeted | $100 |
| Supabase | Pro | $25 |
| Vercel | Pro, per seat | $20 |
| Apple Developer Program | $99 a year | $8.25 |
| Total | About $559 |
That splits into about $53 of fixed infrastructure, $406 of open banking and $100 budgeted for AI. TrueLayer alone is 73% of it and does not move with user count. The $405.75 is £300 a month converted at 1.3525.
At £6.99 a month per subscriber, infrastructure breaks even at roughly 60 subscribers on gross revenue, or roughly 70 after Apple's 15% Small Business Program commission. Without TrueLayer, break-even drops to about 8.
Two figures in that projection are estimates rather than measurements. The cost of PDF statement imports is unmeasured, and Anthropic bills a PDF as extracted text plus one page image per page, so it scales with page count. The $100 for AI is a budget rather than a measured bill.
Claude and Codex are subscriptions used across everything, including this blog, so they are listed as part of the stack rather than charged to this project. The same goes for the Notion workspace.
Next.js, React, TypeScript, Tailwind CSS, shadcn/ui, Base UI, Lucide, React Native, Expo Router, NativeWind, React Native Reanimated, React Native SVG, Phosphor Icons, WidgetKit, Swift, PostgreSQL