./ Case study
Alpha / MVP portfolio project — not a finished product.
SmartPockets
Personal finance and credit-card management platform.
01Problem
Most personal finance apps optimize for budgeting; few help cardholders actually manage their portfolio of credit cards — payment timing, utilization, rewards, and the cognitive load of switching between issuer dashboards.
02What I built
A Plaid-synced credit-card dashboard with card management, transactions, wallet organization, settings, and an AI assistant interface for surfacing payment and account insights.
03Highlights
- 01
Plaid Link + transactions sync via Convex actions, normalized into a single transactions schema
- 02
Card-level utilization and payment-due tracking driving prioritized notifications
- 03
AI assistant scaffolded for surfacing account-level insights from transaction history
- 04
Turborepo monorepo with apps/app + apps/marketing, shared @repo/* packages
- 05
Email infra via React Email + Resend; auth via Clerk
04Outcomes
- Live and open source at smartpockets.com — an alpha / MVP, intentionally not presented as a finished product.
- Plaid Link and transaction sync normalize into a single Convex schema that drives card-level utilization and payment-due tracking.
- Built as a Turborepo monorepo (app + marketing) with Clerk auth and React Email + Resend transactional email.
05Stack
06Status
Alpha / MVP portfolio project — not a finished product.
07What this demonstrates
End-to-end full-stack TypeScript: financial-data integration, schema design under realtime constraints, monorepo architecture, transactional email, auth, AI feature scaffolding.
08Author's note
The hardest part was schema design under realtime constraints — Convex makes the optimistic UI cheap, so the work shifts to making the source-of-truth normalization predictable.
5 min read