All work

TalknTrack · money tracker · TypeScript · voice

Say what you spent. It writes the entries.

TalknTrack is a money tracker you talk to. Say a sentence in English, Hindi or both, and it becomes clean entries: expenses, income, money lent and borrowed, each with a category and a date. On top sit budgets, investments, shared groups and insights that tell you what to do next.

Role

Sole author

Stack

Next.js, MongoDB, NextAuth

AI

Whisper and Llama 3.3 on Groq

Install

Web, or as an app (PWA)

Everything about your money, by voice

Most expense trackers die in the first week, because every coffee means opening a form. TalknTrack replaces the form with a sentence. The rest of the app is what you need once the entries actually exist.

Adding

Speak or type

Hold the mic and talk, or type a rough line. English, Hindi, Hinglish, slang and shorthand like 2k all work.

Many entries in one line

“Gave Rahul 500, spent 200 on food and got salary 50k” becomes three entries in one go.

Dates from words

Yesterday, kal, last Monday or two days ago are turned into the right date.

Debts by name

Lending or borrowing is spotted from the sentence and filed under the person, ready to settle later.

Receipts

Attach a photo of the bill to any entry.

Tracking

Dashboard by month

Income, spending and categories for any month, with charts, and a month picker to look back.

Budgets

A budget per category per month, with a one-tap copy of last month's budgets.

Debts

Who owes you and whom you owe, with dates and reasons, marked settled when paid.

Investments

Your holdings in one list next to everything else.

Export

Download transactions, debts and investments as CSV whenever you want them.

Insights and groups

Insight cards

Warnings, tips and wins about your month, each with a button that does something: set a budget, remind someone, open the right page.

Shared groups

Trips, flats, dinners. Invite people with a link, add shared expenses by voice, and see who owes whom.

Settle up

The fewest transfers that square everyone, and a record when they are paid.

Sign in with Google

Your data follows you to every device.

Installs like an app

A PWA with light and dark themes, made for a phone.

The form is why people stop

Logging money is easy to start and hard to keep up. Each entry is an amount, a type, a category, a date and a note, typed into a form, every time. Nobody does that for a ₹20 chai, and once the small things stop getting logged, the numbers stop meaning anything.

People already describe their spending out loud, just not in a way a form accepts. “Zomato 450.” “Kal Rahul ko 500 diye.” “Salary aayi 50k.” The job was to accept exactly that.

How I got there

Three passes, in the order they happened.

Explore

A better form, and an AI that gives advice

A form per entry
One at a time
Let the AI advise

Realise

Still a chore, and the advice made numbers up

A form per entry
One at a time
Let the AI advise

Insight

Talk in, rows out, maths in code

Just say it
Many in one line
Code does the maths

Let the model read. Never let it count.

From a sentence to saved entries

Two models, each doing the one thing it is good at, one after the other.

  1. Record, or type

    The browser records audio and posts it to the server, or the typed line goes straight to the next step.

    src/components/AddTransaction.tsx

  2. Whisper writes it down

    Whisper large v3 turbo on Groq turns the audio into text, fast enough that the entry appears while you are still looking at the screen.

    src/services/aiService.ts

  3. Llama turns words into rows

    Llama 3.3 70B reads the line with a prompt full of real examples, chai pe 200 kharch and emi pay ki 8500 among them, and returns JSON: one object per entry, with type, category, amount, person and date.

  4. Many at once

    One sentence can hold several entries, so the answer is always a list, even for one. Relative dates are resolved against today.

  5. Saved where they belong

    Transactions go to the ledger and debts to the person's page, behind Google sign-in, in MongoDB.

The examples do most of the work

The prompt teaches by example. Ten real ways people say money things, then the rules for the cases examples do not cover.

Examples of inputs you must handle:
- "chai pe 200 kharch"          → Expense, Food, ₹200
- "kal 500 diye the rahul ko"   → Lent to Rahul, ₹500
- "salary aayi 50k"             → Income, Salary, ₹50000
- "borrowed 2k from amit"       → Borrowed from Amit, ₹2000
- "emi pay ki 8500"             → Expense, EMI, ₹8500

The input may contain MULTIPLE transactions in one sentence
(e.g., "gave Rahul 500 and spent 200 on food and got salary 50k").
Parse ALL of them.
src/services/aiService.ts

Numbers from code, words from the model

The first version asked a model for three insights about the month. They read well, but nothing guaranteed the numbers in them were right, and advice about money cannot be confidently wrong.

So the insights were split in two. Plain code looks at the month and finds the signals, with every number and every suggested action computed there. The model only puts them in order and says them better. It never invents a figure or an action, and with no AI key at all, each signal still ships with its own default wording.

What the code looks for

Over budget, or close

Which category, how much is spent and how much is left or over, and a button to review budgets.

No budget yet

Your top spending category with no budget gets a suggested amount, set in one tap.

A spike

A category well above last month, with both numbers.

Overdue debts

Who, how much and how long, with a reminder button.

Groups

What you are owed and what you owe across shared groups.

Wins

Spending down on last month, or a good savings rate. Good news gets a card too.

Splitting without the spreadsheet

A group expense is said the same way as a personal one: “dinner 1200, I paid, split between all” or “Amit ne 900 diye hotel ke.” A second prompt knows the group's members, maps “I” and “maine” to you, and only ever returns names that are in the group.

Balances are worked out in code: whoever paid is owed the full amount, everyone in the split owes their share, and recorded settlements move both sides. To settle up, a greedy pass keeps matching the person who owes the most with the person owed the most, which gives a short list of who pays whom.

What TalknTrack came down to:

01

Talk is the interface

One spoken line in any mix of English and Hindi becomes as many clean entries as it holds.

02

Models read, code counts

Whisper and Llama turn speech into rows. Every number in an insight comes from code.

03

Built for real life

Debts by name, shared groups that settle in the fewest transfers, and budgets that copy forward.