Building Fortuna: how we built the core Expense Tracking
The Problem with Expense Tracking Apps
I’ve tried most expense tracking apps. They all fail the same way. Either you log every purchase by hand—which nobody actually does—or they read your SMS messages, which feels invasive. Manual logging isn’t just tedious. It pulls you out of the moment. And the first time you forget to log something, your data is compromised.
Most apps are built around budgeting. They want you to set spending limits, then yell at you when you go over. A budget only helps if you check it before spending. Learning you overspent on groceries last month doesn’t help you make better decisions.
We built Fortuna around how we actually think about money: once a month, when statements arrive.
Accounts are Just Accounts
In Fortuna, an account is one of our real bank accounts. That’s it. Other apps make you specify types: salary, savings, credit. This is unnecessary. What the bank calls the account doesn’t matter. What matters is it’s our money.
Some tools want you to create hierarchies—nest your credit card under the bank account that pays it. Sounds smart, but it creates work. You manage the hierarchy, track transfers between nested accounts, add abstraction that doesn’t match reality. Money is fungible. 100 rupees in savings equals 100 rupees in checking. A flat list is honest.
The Monthly Review
We don’t track daily. Once a month, I download our bank statements and upload them to Fortuna. The app extracts the transactions. We spend 10-15 minutes reviewing them, fixing edge cases like transfers. Done.
The app handles the tedious part: amount, date, description. We just verify the categories.

How Statement Parsing Works
When you upload a statement, Fortuna reads the date, amount, and description. Then it guesses the category based on past tagging. We confirm or correct.
Categorization
Bank descriptions are messy. I built a simple engine that weighs different parts of the description that we get from the bank statement:
| Tier | Type | Weight | Example |
|---|---|---|---|
| 1 | Merchant Names | 5 | UPI/SWIGGY-BANGALORE → “swiggy” |
| 2 | UPI IDs | 3 | swiggy@paytm → “swiggy” |
| 3 | General Words | 1 | ”pizza hut” from longer text |
Merchant names signal strongest. The engine prioritizes them when guessing categories.
Edge Cases
Some transactions aren’t expenses or income. Here’s how we handle them.
Transfers Between Accounts
Move money between our accounts and the statement shows a debit and a credit. Same money, different place.
What we do:
- Tag the debit with what the money was for (e.g., “Housing → Rent”)
- Delete the credit—it’s not new income
This counts expenses correctly without inflating income. I could have used double-entry accounting but that’s too complex.
Reimbursements
Friend pays me back? Not income. It’s a refund.
What we do:
- Delete the credit from the friend
- Adjust the original expense to our actual share
I thought about a “Reimbursements” category but that’s more work. Simpler to make it look like we only spent our share.
Cash Withdrawals
Most spending happens via UPI. We rarely use cash. When we withdraw, we don’t track every rupee. “Cash Withdrawal” tells us enough. Over six months, cash was 4% of total expenses. We’re fine with that.
Why This Works (for us)
Fortuna doesn’t demand more discipline than we have. Thirty minutes a month is manageable. We see where our money went. That’s enough to make better decisions next month.
Thanks to my wife, Sukhada, for reading drafts and giving feedback.
A Note on Categories: We use categories we actually need. I can add new ones, but haven’t needed to yet.
Expense Categories
| Category | Subcategories |
|---|---|
| Bills & Utilities | DTH/Cable, Electricity, Gas, Internet, Phone, Water |
| Cash | Cash |
| Childcare & Eldercare | Baby Supplies (Diapers, Formula etc.), Childcare / Daycare Fees, Dependent Parent Care, Pocket Money, Toys & Games |
| Clothing & Accessories | Accessories, Clothes, Footwear, Laundry & Dry Cleaning, Tailoring & Alterations |
| EMI & Loans | Car Loan, Credit Card, Home Loan, Personal Loan |
| Eating Out | Food Delivery, Restaurants |
| Education | Books, Books & Stationery, College / University Fees, Courses, EMI - Education Loan, Educational Subscriptions / Online Courses, Extracurricular Activities (Music, Sports, Dance etc.), Hostel / Accommodation Fees, School Fees, Training, Tuition / Coaching Classes, Tuition Fees |
| Entertainment | Events, Games, Hobbies, Movies, Subscriptions |
| Entertainment & Leisure | Books & Others, Events & Concerts, Hobbies & Recreation, Movies / Theatre, OTT - Amazon Prime, OTT - Hotstar, OTT - JIO, OTT - Netflix, OTT - Others, Sports Equipment & Fees |
| Family | Celebrations, Gifts, Kids, Parents |
| Food & Groceries | Groceries, Others, Vegetables |
| Gifts & Donations | Donations / Charity, Gifts, Religious Expenses / Pooja Samagri |
| Healthcare | Doctor, Fitness, Insurance, Lab Tests, Medicine |
| Healthcare & Medical | Doctor Consultation Fees, Health Insurance Premiums, Hospitalization Expenses, Lab Tests / Diagnostics, Medicines / Pharmacy Bills |
| Household Needs & Supplies | Domestic Help Salary, Furniture & Furnishings, Home Appliances, Kitchenware & Utensils, Pest Control |
| Housing | Home Improvement / Renovation, Home Repairs & Maintenance (Plumbing, Electrical, Carpentry etc.), Property Tax, Rent, Society Maintenance Charges / Resident Welfare Association (RWA) Fees |
| Insurance | Critical Illness Insurance, Health Insurance, Home Insurance, Life Insurance, Term Insurance, Travel Insurance, Vehicle Insurance |
| Investments | Fixed Deposits, Gold, Mutual Funds, Real Estate, Stocks |
| Loans | Credit Card Payments, EMI - Car Loan, EMI - Home Loan, EMI - Personal Loan, Other Loan Repayments |
| Miscellaneous | Others |
| Others | Donations, Fines, Miscellaneous |
| Personal Care & Well-being | Gym / Fitness Club Membership, Salon / Barber / Spa Services, Skincare & Cosmetics, Toiletries |
| Savings & Investments | Emergency Fund Allocation, Fixed Deposits (FD), Gold / Jewellery Purchase (Investment purpose), Home Down Payment, Mutual Funds (SIP/Lumpsum), National Pension System (NPS), Public Provident Fund (PPF), Real Estate Investment (Other than primary residence), Stocks / Equity |
| Shopping | Clothing, Electronics, Gifts, Home & Garden, Personal Care |
| Taxes | Capital Gains Tax, GST/VAT, Income Tax, Other Taxes, Professional Tax, Property Tax, TDS Deductions |
| Transportation | Cab/Taxi, Cabs, Flight, Fuel, Parking, Public Transport, Tolls, Train, Vehicle Insurance, Vehicle Maintenance, Vehicle Maintenance & Servicing |
| Travel | Flights, Hotels, Sightseeing, Vacation |
| Utilities | Cooking Gas (LPG Cylinder / Piped Gas), Electricity Bill, Internet, Mobile Phone Bill, Water Bill |
| Vacation | Entrance Tickets, Food, Hotel / AirBnb, Others, Shopping, Transport, Visa |
Income Categories
| Category | Subcategories |
|---|---|
| Business Income | Consulting, Contract Work, Freelance, Sales, Services |
| Gifts & Transfers | Family Support, Gifts Received, Inheritance, Reimbursements |
| Government Benefits | Grants, Pension, Social Security, Subsidies, Tax Refunds |
| Investment Returns | Capital Gains, Dividends, Interest, Mutual Fund Returns, Rental Income |
| Other Income | Cashback, Miscellaneous, Refunds, Rewards, Winnings |
| Salary & Wages | Bonus, Commission, Incentive, Monthly Salary, Overtime |