A side project · personal finance
My bank already emails me every rupee. Now something reads them.
Four banks, two inboxes, a salary that lands on the last working day and credit card bills that look like spending. SpendOS reads the alerts, cleans them up and tells me where the money went, without me typing a thing.
The real app is private. Every number on this page is sample data.
₹0spent
₹18,400 card bill paid, not counted · ₹799 refunded
- Food delivery₹6,840
- Groceries₹5,210
- Travel₹3,120
- Bills₹2,890
- Shopping₹1,960
From inbox to ledger.
Six kinds of bank email. Watch each become one clean row, with transfers paired and the card bill kept out of spending.
- HDFCYou have done a transaction on your cardRs.450.00 spent on HDFC Bank Card x1234 at SWIGGY on 14-10-2026 21:42
- sliceUPI payment successfulYou paid ₹286 to UBER INDIA via UPI. Ref 6281…
- Union BankAccount debitedA/c XX9876 debited by Rs 5,000.00 via IMPS to slice. Ref 7739…
- AxisTransaction alertINR 1,120.00 spent on Axis Card no. XX5678 at ZEPTO MARKETPLACE
- HDFCPayment received on your credit cardPayment of Rs 18,400.00 received towards HDFC Card x1234
- HDFCRefund processedRefund of Rs.799.00 from AMAZON credited to Card x1234
Press sync and watch six real kinds of bank email become clean rows.
A month that starts on payday.
Pick a month.
October runs 30 Sept to 29 Oct.
Salary lands on the last working day of the month, so that is when my month starts. Weekends push it back to Friday. A coffee on payday counts toward next month, the way it feels.
Tested on my real inbox first.
Only anonymised samples ever made it into the code.
Under the hood.
- Read only
Gmail through Composio with read-only tools. Email bodies are not stored, only the parsed fields.
- Money in paise
Integers everywhere, days bucketed in IST. One definition of spending, used by every screen.
- Explains itself
Every row keeps its category, confidence and a plain reason. A correction offers to become a rule.
- Locked to me
Single owner, Face ID passkeys, signed sessions. Installs on the iPhone home screen.
- Next.js + Supabase
Server components, Drizzle migrations, Postgres on the free tier, Vercel hosting.
- On a schedule
GitHub Actions sync every 30 minutes, a nightly job for reconciling, budgets and digests.
Built for one person. On purpose.
I build small tools after the shift. In the day, I book meetings for WizCommerce.