Upload a bank statement. AI extracts every transaction, categorizes your spending, and becomes your personal financial advisor.
Bank statements are a mess. PDFs with weird formatting, CSVs with inconsistent columns, Excel files from 9 different Indian banks β each with their own layout. Manually entering transactions is tedious. Categorizing them is worse.
This app solves that: drop in a bank statement β AI does the rest.
graph LR
A[π Bank Statement] -->|Upload| B[Document Processor]
B -->|OCR + Parse| C[AI Extractor<br/>Claude Sonnet]
C -->|Structured Data| D[Review UI]
D -->|Approve| E[(PostgreSQL<br/>+ Prisma)]
F[π¬ Chat] -->|Natural Language| G[AI Advisor<br/>21 Tools]
G -->|Query/Mutate| E
E --> H[π Dashboard]
E --> I[π Budgets & Goals]
E --> J[π³ Accounts]
| Feature | How It Works |
|---|---|
| Smart Document Processing | Upload PDF, Excel, CSV, TXT β AI extracts every transaction with date, amount, merchant, category |
| AI Financial Advisor | Chat interface with 21 specialized tools β ask "where am I spending the most?" and get real answers from your data |
| Auto-Categorization | AI categorizes transactions (Food, Shopping, Utilities, Transport, etc.) β no manual tagging |
| Bank Detection | Automatically identifies which bank the statement is from and applies the right parser |
| Merchant Normalization | Cleans up raw text β "PAYPAL *NETFLIX" β "Netflix", "POS 4523 SWIGGY" β "Swiggy" |
- Review-First Workflow β Extract β Review β Edit β Import (you stay in control)
- Multi-Account β Bank accounts, credit cards, wallets, investments, loans
- Dashboard β Income vs expenses, trends, net worth, spending breakdown
- Budgets β Monthly budgets by category with progress tracking
- Goals β Savings goals with contribution tracking
- Credit Health β Credit card utilization, payment tracking
- 20 Prisma Models β User, Account, Transaction, Document, Budget, Goal, Investment, Loan, CreditCard, ChatRoom, and more
Built-in parsers for 9 Indian banks: HDFC, SBI, ICICI, Axis, Kotak, PNB, BOB, Canara, Union Bank. Each handles that bank's specific statement format.
| Layer | Technology | Why |
|---|---|---|
| Backend | Express.js + TypeScript | Fast, typed, battle-tested |
| AI | Anthropic Claude (Sonnet) | Best at structured extraction |
| Database | PostgreSQL + Prisma ORM | 20 models, type-safe queries |
| Frontend | Next.js + React 18 + MUI | Modern, responsive |
| Queue | Bull + Redis | Background document processing |
| Auth | JWT + bcrypt | Secure session management |
| Testing | Jest + Playwright | 31 test files, unit + E2E |
The chat isn't a gimmick β it has real tools that read and write your financial data:
Read Tools (14):
get_accounts Β· get_transactions Β· get_budgets Β· get_goals Β· get_categories Β· get_spending_summary Β· get_income_summary Β· get_net_worth Β· get_investments Β· get_loans Β· get_credit_cards Β· get_credit_health Β· get_insights Β· get_alerts
Write Tools (7):
create_transaction Β· create_budget Β· create_goal Β· update_transaction Β· contribute_to_goal Β· create_account Β· categorize_transactions
Ask in plain English:
- "How much did I spend on food this month?"
- "Add βΉ500 expense for groceries today"
- "What's my savings rate?"
- "Show me my top 5 spending categories"
# Clone
git clone https://github.com/abhiFSD/AI-Finance-Manager.git
cd AI-Finance-Manager
# Backend
npm install
cp .env.example .env # Add your Anthropic API key
npx prisma generate
npx prisma db push
# Frontend (separate terminal)
cd finance-app
npm install
npm run dev
# Seed test data
npm run seed
# Login: john.doe@example.com / Password123!Requirements: Node.js 18+, Redis (for job queues), Anthropic API key
βββ src/ # Backend (Express + TypeScript)
β βββ api/ # Route handlers
β βββ services/
β β βββ ai-chat.service.ts # AI advisor (21 tools)
β β βββ ai-tools.ts # Read-only financial tools
β β βββ ai-tools-crud.ts # Write tools
β β βββ parsers/ # 9 Indian bank parsers
β β βββ extraction/ # Transaction extraction
β β βββ categorization/ # Auto-categorization
β β βββ ocr/ # Document OCR
β β βββ analytics/ # Spending analytics
β β βββ automation/ # Recurring transactions
β βββ middleware/ # Auth, rate limiting
β βββ workers/ # Background job processor
βββ finance-app/ # Frontend (Next.js + React)
β βββ src/app/ # Pages (dashboard, chat, etc.)
β βββ src/components/ # Reusable UI components
β βββ src/store/ # State management
βββ prisma/
β βββ schema.prisma # 20 models
βββ test-data/ # Bank statement samples
| Method | Endpoint | What It Does |
|---|---|---|
| POST | /api/auth/register |
Register |
| POST | /api/auth/login |
Login β JWT |
| POST | /api/documents/upload/single |
Upload bank statement |
| GET | /api/documents/:id |
Get extracted data |
| POST | /api/documents/:id/import |
Import reviewed transactions |
| GET | /api/transactions |
List transactions (filterable) |
| POST | /api/chat/rooms/:id/messages |
Chat with AI advisor |
| GET | /api/analytics/spending |
Spending breakdown |
| GET | /api/net-worth |
Net worth calculation |
MIT β use it, learn from it, build on it.