All work

Personal Finance

Pawket

A budgeting app with an AI you can talk to — and a ledger that never leaves your phone.

Pawket — a local-first personal finance PWA for tracking spending, budgets, and receipts on-device, with an AI finance assistant

Pawket is my own product — a personal-finance PWA where an AI assistant named Molly lets you log spending in plain language, while every peso of your data stays in your phone's own browser storage. No account, no backend database, no server holding your financial life.

The problem

Every budgeting app makes the same trade you never agreed to: hand over your bank login and your whole financial life so their servers can hold it. I wanted the opposite — an app genuinely helpful with money that keeps your ledger on your device, with no account to create and nothing stored on a server you have to trust. The catch is that 'genuinely helpful' now means AI, and AI usually means shipping your data somewhere. Threading that needle was the whole design problem.

The approach

Pawket is a local-first Next.js PWA: all your data lives in the browser's IndexedDB, there's no backend database and no account — a WebAuthn biometric lock guards it on the device. Molly, the AI assistant, is built on the Vercel AI SDK with real function-calling: type 'spent 250 on lunch' and she logs it, categorized; ask 'how's my food budget?' and she reads it back. Receipts scan in-browser with OCR first. The only thing that ever leaves the phone is the AI step — the context needed to answer — routed through a stateless function that stores nothing.

The calls I made

Every real decision costs something. Here's what I traded, and why it was worth it.

  1. Local-first: no backend, no account, data in the browser.

    Why

    For a money app, 'nothing of yours is stored on our servers' is the whole promise — it kills an entire class of breach and every bit of signup friction at once.

    Trade-off

    No automatic cross-device sync, and the data lives with the browser storage. A real limitation I chose on purpose, for privacy and instant, account-free use.

  2. Make Molly conversational with real tool-calling, not a canned chatbot.

    Why

    Logging should be as fast as texting a friend — 'spent 250 on lunch' becomes a categorized entry, no forms. That's the difference between an app people keep and one they abandon.

    Trade-off

    The AI is the one feature that needs the network and reaches a cloud model — so I kept it honest: a stateless pass-through that stores nothing, and you can plug in your own OpenAI or Claude key.

  3. Read receipts on-device with OCR before anything goes out.

    Why

    Tesseract does the heavy lifting in the browser, so as much stays local as possible and only what's needed leaves the phone.

    Trade-off

    In-browser OCR is slower and less bulletproof than a pure cloud pipeline — worth it to keep the device the default, not the server.

The result

Pawket is where I show the whole stack of thinking, not just execution — the local-first architecture, the AI assistant, the honest privacy trade-offs, and the design system (down to Molly the corgi) are all mine. It's my clearest proof that I can take a product from a stubborn principle — your money stays yours — all the way to a shipped, installable app.