SmartPockets
Personal finance side project: credit card dashboard on live Plaid data, with a Claude agent behind a propose / confirm / execute / undo safety machine.
SmartPockets is a side project I started to get back into coding and learn AI coding tools on something with real scope: a personal finance app where a streaming Claude agent works against live Plaid-synced data. Building it is also how I got hands-on with Convex, a Turborepo monorepo, Clerk billing, and the rest of the stack around an app that size.
Most of the work went into the credit card dashboard UI, built with UntitledUI. There is also a write-safety layer for agent actions (propose / confirm / execute / undo with a 10-minute undo window and an audit log), a Zod-typed tool registry over live Plaid data, and a standalone OAuth-2.1 MCP server that exposes read-only tools to external clients. AI tools made the build a lot faster; keeping a real app maintained afterward is still a lot of work.
I am not growing it into a product. Monarch Money and ChatGPT's Finances feature already cover what I needed personally, so SmartPockets stays alpha: open to read as a reference, not something to adopt. Extracted from the build and published separately is @crowdevelopment/convex-plaid, a Plaid component for Convex on npm.
Highlights
- 01
Credit card dashboard UI built with UntitledUI: the main surface for cards, balances, and related account views
- 02
Streaming agent on a custom Convex runtime via the Vercel AI SDK (streamText with a bounded step count and per-thread cancellation): Claude Sonnet drives, Claude Haiku handles compaction and classification
- 03
Zod-typed tool registry over live Plaid data: read tools for accounts, transactions, and cards, plus write tools gated by the safety machine
- 04
Propose / confirm / execute / undo write-safety machine: 10-minute undo window, content-hash dedup, idempotent confirms, and an audit log so no model write is irreversible or unsupervised
- 05
Standalone OAuth-2.1 MCP server (mcp-handler, dynamic client registration via Clerk) exposing read-only tools to external MCP clients over a Convex bridge
- 06
Plaid Link + transaction sync via Convex actions; Clerk auth; React Email + Resend transactional email; tested with a Vitest agent suite