← All work

Mobile · Personal Finance · 2026

Finwise: Money Tracking That Does Itself

A money tracker that reads the payment alerts your bank already sends, so you only have to confirm.

RoleProduct Strategy, Interaction & Visual Design, Building
Timeline2026 · Ongoing
TeamSolo, with AI as a coding partner

Key Highlights

Finwise is a personal money tracker for people who pay with UPI and cards in India. It reads the payment alerts your bank already sends, by SMS or email, and turns each one into a ready-to-confirm expense.

I designed it end to end and built it myself with AI as my pair, as a native Android app. The goal was simple: make tracking money something you barely have to do.

  1. 1. Effortless capture
  2. 2. Never lose a rupee
  3. 3. Private by default
Team

Madhav, Product Designer
+ AI as a coding partner

My Role

Product Strategy, Interaction Design,
Visual Design, Building & Testing

Platform

Android (React Native · Expo)
Offline, on-device

Problem Space

Why do expense trackers get abandoned?

Almost everyone who has tried to track their spending has the same story: a strong first week, a few missed days, and an app quietly forgotten. The tracking itself was never the hard part: remembering to log every payment was.

  • Logging is a chore. A ₹20 chai, a ₹534 Swiggy order, a fuel top-up, each one needs you to stop and type.
  • The data already exists. Every UPI or card payment already sends an SMS or an email. It just sits in the inbox.
  • Totals lie quietly. Pay a credit-card bill and most trackers count the same money twice: once when you spent it, again when you paid the card.
  • Mistakes feel permanent. One wrong tap and a payment disappears or lands in the wrong place, and trust in the numbers is gone.

Who is it for?

“I want to know where my money goes. I just don’t want to write it all down.”

Pays mostly by UPI & cardsGets a bank SMS or email for every debitSpends on small, frequent thingsHas tried a tracker before and dropped itDoesn’t want to link a bank accountWants a monthly budget, not an accounting tool

Identifying Gaps

Looking at how people actually track money, and why they stop, four gaps stood out, and each one became a design principle.

Capture should be automatic

If the bank already told you about a payment, the app should already know too. You should only have to confirm, not type.

Automation needs a human check

Auto-adding everything creates junk: OTPs, mandate set-ups, failed payments. Every detected payment waits for one tap before it counts.

Every action must be undoable

Confirm, dismiss, delete, recategorise: each comes with Undo. Dismissed payments can always be brought back. Nothing is ever lost.

Money data stays with you

No accounts, no bank linking, no uploads. The database lives on the phone, with a CSV export and a backup file you own.

How It Works

Every detection source goes through one pipeline, so a payment is understood the same way wherever it came from.

1Bank SMS or debit emailRead when you tap Refresh, or caught the moment it arrives
→
2Understand itAmount, payee, account and reference pulled from the message
→
3De-duplicateThe same payment reported by SMS, email and receipt is counted once
→
4Guess the categoryWhat you chose last time for this payee, then smart keywords
→
5You confirmOne tap on a category, with Undo

Structuring The App

Three tabs, each answering one question: what just happened, where is my money going, and how should it behave.

HomeThis month’s spending vs budgetToday so farNew payments to reviewQuick add (most-used categories)Activity, grouped by day
DashboardWeek · Month · YearSpending trendAverage per day, payment countTop spending vs category limitsTap a category → its payments
SettingsMonthly & category budgetsScan my messages · GmailDon’t count card billsDismissed paymentsExport & backup

Final Screens

9:41
Sunday, 12 October

Good evening

↻ Refresh+
₹
October spending↘ 12% less than Sep
₹30,000 ✎
₹18,42061.4% used
Today so far₹752
New payments
3
Tap a category to add each one to your expenses.
SwiggyToday · 2:52 pm · Email
₹534✕
Add toFoodGroceriesFuelTravel
Indian OilToday · 9:10 am · SMS
₹1,200✕
Add toFuelFoodTravelShopping
View 1 more ⌄

Home: what just happened

The month’s spending sits on top in a dark card, against your budget and last month. Below it, New payments lists what the app found in your messages.

  • Each payment shows the payee, amount, time and where it came from (SMS or Email).
  • The guessed category comes first and is outlined; the rest follow, most-used first.
  • Only two are shown, with “View more”, so the rest of Home stays close to the top.
  • ✕ marks it “not a payment”, with Undo.
9:41
₹
October spending↘ 12% less than Sep
₹30,000 ✎
₹18,42061.4% used
Add this expense?✕
SwiggyToday · 2:52 pm · from email
₹534
CATEGORY
FoodGroceriesEntertainmentOther…
PAID TO
Swiggy
CancelAdd expense

Confirm before it counts

Tapping a category doesn’t add the payment straight away. A short sheet asks “Add this expense?”, so one stray tap never makes a payment disappear.

  • The category can still be changed, and the payee and a note edited.
  • Next time you pay the same payee, your choice is remembered and guessed first.
  • After adding, a toast says “Added ₹534 to Food” with an Undo button.
9:41

Dashboard

WeekMonthYear
‹October 2026›
₹18,420spent so far
📅 ₹1,535 per day🧾 46 payments
Spending trend
Top spending
Food12 payments
₹6,240of ₹6,000 · over
Groceries12 payments
₹4,180of ₹8,000
Fuel12 payments
₹2,90016%

Dashboard: where it’s going

Week, Month and Year views with a spending trend and the categories that took the most.

  • Averages only cover the part of the period that has already happened, so day 3 doesn’t look like a crisis.
  • Category limits show “of ₹6,000” and turn red with “over” when crossed.
  • Tiny categories share one neutral “others” slice instead of overlapping dots.
  • Tapping a category opens exactly those payments, already filtered.
9:41
CancelAdd expenseSave
−
₹250
+
Category
FoodGroceriesFuelTravelShoppingHealthPetOther…
Paid to
Sharma Tea Stall
Date
TodayYesterday📅 Pick
Note
Optional

Adding by hand, in seconds

For cash and anything the bank didn’t report. The amount is the hero, with − and + to nudge it.

  • The seven most-used categories are always within reach; “Other…” opens the rest.
  • Typing “pet food” or “fule” finds “Pet” or “Fuel” instead of creating near-duplicates.
  • Today and Yesterday are one tap; older dates are a picker away.
9:41

Settings

🔒 Stays on this phoneⓘ Version 1.0.0
Monthly budget
₹ 30,000
Scan my messagesLooks through your inbox once, when you tap a button, and suggests every bank or UPI debit it finds. Nothing runs in the background.Scan today
Don’t count card bill paymentsKeeps CC Bill out of your totals and charts, so money isn’t counted twice. They stay in Activity.
Your data stays on this deviceNothing is uploaded. There are no accounts.

Settings that build trust

Settings explain what the app does with your data in plain words, and what it doesn’t.

  • Message scanning runs only when you tap it. Nothing runs in the background unless you turn it on.
  • “Don’t count card bill payments” keeps card bills out of totals, so money isn’t counted twice.
  • “Your data stays on this device. Nothing is uploaded. There are no accounts.”

The Details That Matter

Bank messages are messy. Most of the craft went into the cases nobody notices, until they go wrong.

Not every “debit” is a payment

OTPs, failed or reversed payments and AutoPay set-up messages are ignored, but a SIP actually debited through AutoPay still counts.

One payment, many messages

A bank SMS, a bank email and a merchant receipt for the same payment are matched by reference and counted once.

Emails are stricter

Newsletters and receipts are far more common in email, so email detection needs more proof than SMS before suggesting anything.

Smart, not magic, categories

“Sharma Tea Stall” matches Food, but “Steakhouse” doesn’t match “tea”. “CRED” is a bill, “Credit Union” isn’t.

Safe exports

A payee named like a spreadsheet formula can’t run code when your CSV is opened in Excel or Google Sheets.

Backups you can trust

A backup file is fully checked before restoring, and errors are explained in plain words.

Designing By Building

Instead of handing off static screens, I built Finwise myself with AI as a coding partner. That changed how I designed: I could test an interaction on my own phone within minutes, with my own real bank messages.

79automated tests across 8 suites
2detection sources: SMS & Gmail
0accounts or uploads needed

The message parser is written as plain, testable functions, so the same code runs in the app, in the background task that catches SMS while the app is closed, and in the tests that guard every edge case above.

What I Learned

  • Automation earns trust only when it’s reversible. Undo did more for confidence than any accuracy number could.
  • The best input is no input. The most effective “form” in the app is a single tap on a category chip.
  • Building is designing. Using it every day with real messages surfaced problems no mockup would have.
Next projectNoBroker: Reimagining Rental Agreement ↗