A step-by-step trace from CSV upload to AI-generated spending recommendations.
Flow
Create an account with email + password. Passwords are hashed with bcrypt. A JWT is issued and stored client-side for subsequent requests.
POST /api/auth/register → POST /api/auth/loginName your dataset — e.g. 'Jan 2026 Expenses'. This creates a Dataset row in Postgres with status UPLOADED.
POST /api/datasetsUpload a CSV with date, description, category, amount columns. The server parses every row, validates fields, and batch-inserts Transaction rows. Status advances to PARSED.
POST /api/datasets/:id/uploadThe metrics endpoint aggregates income, expenses, net savings, savings rate, top categories, and monthly breakdown. Results are cached as a MetricSnapshot for 1 hour.
GET /api/datasets/:id/metricsTransactions are PII-redacted, then passed to the FinanceAI engine — BM25 retrieval, linear regression, expert rules, and NLG composition all run in-process. Results are Zod-typed and saved to the database.
POST /api/datasets/:id/insightsStructured output: summary text, top spending categories with reasons, anomaly transactions, and 3 personalised recommendations — all rendered as expandable cards.
GET /api/datasets/:id/insightsEngineering
Production-grade details that are invisible when they work.
Emails, phone numbers, NRICs, and long digit strings are scrubbed from transaction descriptions before any processing.
FinanceAI runs entirely in-process — BM25 retrieval, linear regression, expert rules, and NLG. No API key, no latency, no cost per call.
Each user has a 30-insights-per-day cap enforced via AuditLog counting.
Identical data hashes skip recomputation entirely and return the cached insight. Metrics snapshots cache for 1 hour.
Cookie-authenticated requests require a matching CSRF header. Bearer token requests bypass this (standard SPA pattern).
Every upload, insight generation, rename, and delete writes an immutable AuditLog row with IP and user-agent metadata.
Format
Any bank or credit card export works. The parser expects four columns:
Download sample CSV — try it right nowdate,description,category,amount 2026-01-02,McDonalds,Food,-9.50 2026-01-22,Salary,Income,1200.00 2026-01-25,Phone bill,Utilities,-25.00 2026-02-01,Netflix,Entertainment,-15.99
Upload a CSV and get AI analysis in under a minute.
Get started for free →