GitHub - RiccardoGrin/BankViz: BankViz

2 min read Original article ↗

BankViz

CI License: MIT

AI-powered bank statement analyzer. Upload CSV exports from your bank or PayPal, let AI categorize your transactions, and get a clear picture of your spending.

Financial planning features (superannuation, tax insights, Medicare Levy) are currently tailored to the Australian tax system.

Screenshots

Dashboard Financial Plan
Dashboard Financial Plan
Spending breakdown and monthly trends Wealth projections and planning

Screenshots use the included demo_transactions.csv sample data.

Features

  • CSV import — parses bank and PayPal exports with automatic column detection
  • AI categorization — OpenAI assigns main/sub categories based on merchant patterns
  • Duplicate detection — exact, similar (±2 days), and PayPal-specific matching
  • Interactive dashboard — spending charts, category breakdown, monthly trends
  • Custom categories — create your own with drag-and-drop and bulk editing
  • Rules engine — auto-categorize transactions by description patterns, applied retroactively
  • Financial profile — household, income, assets, liabilities, expenses, and goals
  • 23 insight calculators — superannuation, tax, debt, and investment analysis
  • Wealth projections — long-term financial planning with configurable assumptions

Local Development

Prerequisites

  • Node.js 18+
  • A Convex account (free tier)
  • An OpenAI API key

Setup

git clone https://github.com/RiccardoGrin/BankViz.git
cd BankViz
npm install
cp .env.example .env.local

Start Convex (first terminal)

On first run, this prompts you to log in and create a project. It auto-sets VITE_CONVEX_URL in .env.local.

Set your OpenAI key in the Convex environment:

npx convex env set OPENAI_API_KEY=sk-your-key-here

For authentication setup (JWT keys, optional Google OAuth), see the Convex Auth docs.

Start the frontend (second terminal)

Open localhost:5173.

Commands

Command Description
npm run dev Vite dev server
npx convex dev Convex backend
npm run build Production build
npm run lint ESLint
npm test Tests (watch mode)
npm run test:run Tests (single run)
npm run test:coverage Tests with coverage report

400+ tests using Vitest with enforced coverage thresholds on critical financial modules.

Deployment

See docs/DEPLOYMENT.md for deploying to Vercel + Convex.

Tech Stack

  • Frontend — React 18, Vite, TailwindCSS, Radix UI / shadcn/ui, Recharts
  • Backend — Convex (database, real-time sync, auth), OpenAI (server-side categorization)

License

MIT