Source: https://www.heyganesh.in/work/spend-tracker

Author: Ganeshkumar, Product Designer

Published: 2026-10-26 · Updated: 2026-10-26

Product Design · Personal App · Web

# An Expense Tracker That Reads What You Type

![Spend tracker on a phone: the line with Your usuals and the week, and the month with History](https://www.heyganesh.in/assets/spend-tracker/hero.webp)

- **My Role:** Product Owner & Designer
- **Team:** Claude Code & Me
- **Timeline:** 7 Days
- **Scope:** v1 → v2 Rebuild

[Try the demo](https://spendtrckr.vercel.app/?demo) Made-up data. Nothing you do is saved.

## Context

### One form, a Google Sheet, and a week of spending to catch up on

The first version, from March 2026, was a form: pick a category, pick a date, type the amount, done. Every entry was also copied to a Google Sheet, because the app couldn’t do much on its own.

The form was fine for one expense. I rarely log just one. I catch up on a few days or a whole week in one sitting, and every entry meant the same six taps again.

For version 2 I wanted all my money in one place (spending, income, savings, money I’ve lent, subscriptions) so I stop keeping separate sheets. And logging an expense had to get quicker, not slower, or I’d stop doing it.

Everything in one place. Nothing required.

## Building with Claude Code

### Docs first, then design, then code

Laps took under 48 hours. This time I wanted to build it the way a real product gets built, and it was my first time doing that.

Before any code there was a product doc, a design system and a decision log: every choice, why I made it, and what I didn’t pick. It holds 40 decisions now, including the ones I changed my mind on.

Claude Code wrote the code. I made the calls, used every build on my phone, and sent screenshots of what was wrong. Every change ran on a separate test database with a copy of my data first, so my real entries stayed untouched until launch day.

## Designing the Add

### Four rounds to get one line right

Logging is the one thing I do every day, so most of the design time went here. There was no Figma. Every round was built in code, so I could try it on my own phone instead of looking at a picture of it.

- Round 1: three looks for the same old form. Same steps, new paint.
- Round 2: the form opened on its own, four taps instead of six. I turned it down: it was still my old form in a new order.
- Round 3: three ideas from scratch. Bubbles, where the category picker is also the month’s chart. Month, where the calendar is the home screen. And Say it, where you type one line.
- Round 4: Say it again, rebuilt around how I hold my phone.

![One board from each design round: the old form, the form that opens on its own, Bubbles, and Say it](https://www.heyganesh.in/assets/spend-tracker/rounds.webp)

From the old form to one line, in four rounds.

Round 3 looked fine but didn’t work in the hand. A big amount made its bubble grow and move, so next time I had to hunt for it. Month’s calendar changed height from month to month, and its input sat at the bottom, right under the phone keyboard. Say it was the one I liked: it guessed the category for me.

Take 2 moved the line near the top, so everything I need while typing stays above the keyboard.

## Say It

### “40 chai yesterday” is ₹40, Snacks, yesterday

One line, typed the way I’d say it. It reads the amount (1.2k works too), the category from each category’s words, and the day: yesterday, sat or 17th. Whatever’s left becomes the note.

- A new word asks once: make it a category, or say where it goes. After that it always goes there.
- If I change a category by hand, it offers to remember that word.
- Your usuals: what I buy most, at the price I usually pay. Two taps, no keyboard.
- A word with no amount shows how often I’ve logged it and what I usually pay.

![Three phone screens: a typed line read as amount, category and day; a new word asking where it goes; Your usuals](https://www.heyganesh.in/assets/spend-tracker/say-it.webp)

Type a line, teach a new word once, or tap a usual.

An empty app would have to learn every word from scratch. So my 10 categories started with 83 words taken from my old notes, like “chai” for Snacks and “auto” for Travel.

305 of 380

of my old notes read right on day one, up from 64 with no words

2 taps

to log a usual, with no keyboard

## Catching Up

### I log a week at once, so every day had to be one tap away

Round 4 picked the day from a strip that scrolled sideways. On my phone I didn’t know it scrolled, and it stopped at the 1st of the month. For someone who logs a week or two back in one sitting, that was the wrong control.

Now a date bar sits at the top with that week’s seven days under it, each showing what it cost. The arrows move a week at a time, and a month calendar covers anything older. The day stays where I set it until I’m done with the whole list.

![Two phone screens: the week of days under the date bar, and the month calendar](https://www.heyganesh.in/assets/spend-tracker/catch-up.webp)

A week at a glance, and a calendar for anything older.

## On the Laptop

### Same app, side by side

On a wider screen the line stays put on the left, with the month and History on the right. Enter logs, Esc clears, and ↑ brings back the last entry to fix it.

![Spend tracker on a laptop: the line and the week on the left, the month and History on the right](https://www.heyganesh.in/assets/spend-tracker/laptop.webp)

## Launch

### Moving 467 real entries without losing one

Version 2 changed how every entry is stored, so launch day had to be boring.

- A backup of every entry first, kept outside the project.
- Every database change ran on the test copy first, then the same checks: the number of entries, the total and the categories.
- On launch day the same script ran on the real database: 467 entries, 10 categories, and the total matched to the rupee.
- Sign-ups are off. It’s my app, and the login is just a password.

## For Visitors

### A demo with made-up data, not mine

Signed out, the app opens on a landing page with a line you can type into. Log from it, or tap Try the demo, and you get the real app with made-up data. A bar on top says nothing is saved. My own phone and laptop stay signed in and open straight on Home.

![The landing page: Type what you spent. It works out the rest. A line to try, and Try the demo](https://www.heyganesh.in/assets/spend-tracker/landing.webp)

---

Next case study

Taabi Procure

Auctions worth crores were running on someone else’s platform

[Read case study →](https://www.heyganesh.in/work/taabi-procure)

Contact Ganeshkumar: ganeshbluesky05@gmail.com · LinkedIn https://www.linkedin.com/in/heyganeshkumar · X https://x.com/heyganesh_in · Resume https://www.heyganesh.in/assets/resume.pdf
