# FinPal - I Built a Finance App You Can Actually Ask Questions To

> Source: <https://dev.to/tejas164321/finpal-i-built-a-finance-app-you-can-actually-ask-questions-to-5dlb>
> Published: 2026-07-10 06:31:27+00:00

*This is a submission for Weekend Challenge: Passion Edition*

India runs on UPI now - small, constant, invisible payments for chai, autos, groceries, rent splits, all day, every day. What nobody's built is a way to actually *ask* your money anything. Not another dashboard you have to squint at - an app you can talk to. **FinPal** reads your real UPI and bank transaction history (GPay, PhonePe, CSV, PDF exports), auto-categorizes it with a hybrid rules-plus-Gemini engine, and now lets you ask it questions in plain English and get a real answer, grounded in your actual spending.

I use UPI dozens of times a day, and so does basically everyone I know - that's not an exaggeration in India anymore, it's just how money moves now. NPCI's own numbers make the scale hard to overstate: UPI processed **23.2 billion transactions worth ₹29.9 lakh crore in a single month (May 2026)** - an average of **737.79 million transactions every day** - and over **500 million people** now use it regularly, most of it in small, routine purchases averaging around ₹1,300 a transaction. That's the part that gets lost: when your financial life is made of hundreds of tiny, scattered UPI pings instead of a handful of big bank entries, "where did my money go" stops being a simple question. None of the apps handling those payments were built to answer it - they show you a list, not an explanation. I built FinPal because I wanted the app itself to be able to tell me, the way a person would if you just asked them.

FinPal treats AI as infrastructure, not decoration. The hybrid categorization engine keeps things fast and cheap for the transactions it already recognizes, and only calls on Gemini for the genuinely ambiguous ones - the cryptic UPI merchant strings every Indian user has seen and ignored. On top of that foundation, I added **Ask FinPal**: a natural-language chat layer that answers real questions against your real transaction data, not canned responses.

Instead of scrolling a transaction list trying to piece it together yourself, you just ask. Type something like *"How much did I spend on food delivery last month, and is that more than usual?"* or *"Can I afford a ₹15,000 trip next month if I keep spending like this?"* - Ask FinPal answers directly, reasoning over your actual categorized transaction history instead of giving generic financial-tips-style advice.

**Try it:** [https://finpal.tejasfolio.in/](https://finpal.tejasfolio.in/)

**In under a minute:**

**Repo:** [https://github.com/Tejas164321/FinPal](https://github.com/Tejas164321/FinPal)

**Frontend:** React 18 + TypeScript on Vite, TailwindCSS 3 with a custom purple-gradient/glassmorphism theme, Radix UI primitives wrapped by shadcn/ui for accessible components, Framer Motion for transitions, Recharts for the dashboard visualizations, React Query for data/caching, React Hook Form + Zod for validated inputs, react-dropzone for uploads, date-fns, sonner for toasts.

**Backend:** Node.js + Express 4.18. Multer handles multipart uploads; csv-parser, pdf-parse, and xlsx normalize wildly inconsistent Indian bank/UPI export formats into one internal schema.

**AI layer:** Categorization is rule-based first - heuristics tuned on real UPI merchant-string patterns - escalating to Google Gemini only for what the rules can't confidently place. **Ask FinPal** builds a compact structured summary of the user's categorized transaction data (not raw dumps - token budget matters) and passes it to Gemini alongside the question, so answers are grounded in the person's actual numbers instead of generic financial advice.

**Why the hybrid approach matters:** most AI finance tools go all-in on the LLM for everything, which is slow, costs more than it needs to, and occasionally gets confidently wrong about things a simple lookup would nail. Splitting the load means the fast path stays fast, and Gemini only gets pulled in where it actually adds value - ambiguous categorization, and now open-ended natural-language questions that no rule engine could ever anticipate.

Gemini isn't bolted on as a chatbot widget - it's doing two distinct jobs in FinPal. First, as a categorization fallback, it only fires for transactions the rule engine can't confidently place, so it's doing targeted, cost-aware work rather than processing every row. Second, in **Ask FinPal**, it's given a compact, structured summary of the user's own categorized spending - not a raw transaction dump - and asked to reason over it directly, so answers like "is that more than usual?" are grounded in real computed averages rather than generic advice. That combination - cheap-and-fast where possible, Gemini only where genuinely needed - is the core design decision behind the whole app.

I built FinPal because the money moving through my life - and everyone else's around me - got faster and more constant than any of the apps meant to explain it. Hundreds of millions of us are running our financial lives through a payment rail that was built for speed, not clarity. FinPal is my attempt to close that gap: not another list of transactions, but an app you can actually ask.
