Case study · Production FinTech PWA
Finance Tracker — AI Bank Statement Intelligence
Privacy-first web app that turns any bank statement into SIP analytics, expense insights, bounce detection, and an AI executive report.
Live product: tracker.manishfullstack.online
Project Snapshot
Bank Excel/CSV exports are messy and bank-specific. Finance Tracker lets investors upload statements in the browser, parse them locally with SheetJS, use AI to map unfamiliar columns, classify investments vs expenses, detect real ledger bounces, and generate dashboards plus an AI narrative report. Statement files are not stored as server uploads; analysis runs are metered for trial users. Live at tracker.manishfullstack.online.
Key Contributions
- Built end-to-end on React + Netlify Functions + Postgres with JWT/OTP auth and SMTP transactional email.
- Designed a bank-agnostic ingest pipeline: local fast-path parsers + AI column mapping for unknown statement layouts.
- Implemented ledger-accurate SIP bounce detection and investment labeling for unfamiliar AMC narrations (CAMS/KFin/MFU/BSE Star heuristics).
- Shipped privacy-forward UX (client-side parse, no statement file storage) and admin analytics for trials/uploads via
report_runsmetrics. - Deployed to production as an installable PWA with Overview, Investments, and Expenses dashboards plus PNG/PDF export.
Statement Intelligence
Accepts any bank .xls / .xlsx / .csv. Fast-path parsers for known layouts; AI mapColumns for unfamiliar formats. Column maps cached in session; deduplication across multiple uploaded files.
Analysis & Reporting
Classifies SIPs, lumpsums, platform debits, return charges, and consumer spend. Bounce detection from real debit↔credit ledger pairs (same SIP identity + amount + same/next day) — not naive AI guesses. AI executive report with highlights, risks, and recommendations.
Auth & Privacy
Email + password with 6-digit OTP verification and password reset. JWT in httpOnly cookies (jose). Files stay on-device for parsing; server receives masked/batched transaction JSON and stores account + run metrics only — not raw statement blobs.
Access & Admin
New users get 3 free analysis trials; admin has unlimited runs and a Users console (verified status, trials, sessions, documents analyzed). Recharge is manual via email (contact@manishfullstack.online) — no in-app payment gateway.
Tech Stack
React 19, TypeScript, Vite 8, React Router 7, Recharts, Netlify Functions, OpenAI via LangChain + Zod structured outputs, bcrypt + jose JWT, Nodemailer SMTP, Netlify Postgres / Neon, SheetJS (xlsx), vite-plugin-pwa, html2canvas + jspdf.
Architecture
Browser parses Excel/CSV → optional AI mapColumns → dedupe + sanitize → batched classify → local bounce merge → report aggregates. Netlify Functions handle auth, analyze-statement (mapColumns | classify | report), and admin/users. Postgres stores users, email_otps, and report_runs telemetry.
Privacy Boundary
Statement files stay on-device for parsing. The server receives masked or batched transaction JSON for AI classification and stores only account and run metrics — never raw statement file blobs. Narrations are masked before AI where appropriate.
Portfolio Impact
A production FinTech product that pairs AI with deterministic ledger logic: bank-agnostic ingest, accurate bounce detection, trial metering, admin usage analytics, and a privacy-first PWA deployed at tracker.manishfullstack.online.
Frequently asked questions
- Does Finance Tracker store bank statement files on the server?
- No. Statements are parsed in the browser with SheetJS. The server receives masked or batched transaction JSON for AI analysis and stores only account and run metrics — not raw statement file blobs.
- Which banks does it support?
- Any bank Excel/CSV export — not limited to one bank brand. Known layouts use fast-path parsers; unfamiliar formats use AI column mapping.
- How does SIP bounce detection work?
- Real debit↔credit ledger pairs with the same SIP identity, amount, and same/next-day timing — deterministic ledger logic, not naive AI guesses.
- Is there Razorpay or automated card billing?
- No. New users get 3 free analysis trials. Recharge is manual via email at contact@manishfullstack.online.
- Where is it live?
- Production PWA on Netlify at tracker.manishfullstack.online.