Track expenses via chat with Claude Haiku and Google Sheets
Workflow preview
$20/month : Unlimited workflows
2500 executions/month
THE #1 IN WEB SCRAPING
Scrape any website without limits
HOSTINGER
Early Deal
DISCOUNT 20% Try free
DISCOUNT 20%
Self-hosted n8n
Unlimited workflows - from $4.99/mo
#1 hub for scraping, AI & automation
6000+ actors - $5 credits/mo
Overview
π° AI Expense Tracker β Chat to Track Spending Instantly
Track your expenses by chatting naturally. No forms, no apps β just type and it's saved.
π Description
This workflow turns a simple chat interface into a powerful personal expense tracker. Just describe your spending in plain language β the AI understands it, categorizes it, and saves it to Google Sheets automatically.
Example inputs the AI understands:
spent 500 on lunchuber 150paid 1200 electricity billlunch in feb 25 cost 500β handles past dates toonetflix 499$50 hotel bookingβ detects currency
No rigid formats. No dropdowns. Just type naturally.
β¨ Key Features
- Natural language input β type expenses exactly how you'd say them
- AI-powered parsing β Claude Haiku extracts amount, category, date, currency automatically
- 9 auto-detected categories β Food, Transport, Shopping, Bills, Entertainment, Health, Business, Education, Other
- Multi-currency support β INR, USD, EUR, GBP
- Past date handling β "lunch in feb 25 cost 500" saves to February 2025, not today
- Running monthly total β each row stores the cumulative month total
- Monthly summary β type
SUMMARYorsummary februaryfor any month - Works on empty sheet β no errors on first use
- Invalid input handling β friendly error if no amount detected
π¬ Commands
| What you type | What happens |
|---|---|
spent 500 on lunch |
β Saved: π Food & Dining β Lunch Β· βΉ500 |
uber 150 |
β Saved: π Transport β Uber Β· βΉ150 |
1200 electricity bill |
β Saved: π‘ Bills & Utilities Β· βΉ1200 |
lunch in feb 25 cost 500 |
β Saved to February 2025 correctly |
SUMMARY |
π Current month report with breakdown |
summary february |
π February report (current year) |
summary february 2025 |
π February 2025 specific report |
HELP |
π Shows all commands and categories |
π Setup Requirements
1. Google Sheet
Create a new Google Sheet with these exact headers in Row 1:
| Col | Header |
|---|---|
| A | Date |
| B | Amount |
| C | Category |
| D | Description |
| E | Currency |
| F | Month |
| G | Raw Message |
| H | Total |
2. Credentials needed
| Credential | Used for | Free? |
|---|---|---|
| Anthropic API | Claude Haiku AI parsing | Paid (very low cost) |
| Google Sheets OAuth2 | Read & write expenses | Free |
3. After importing
- Connect your Anthropic credential to the
Claude Haikunode - Connect your Google Sheets credential to all sheet nodes
- Update the Sheet ID in all Google Sheets nodes to point to your sheet
- Open the workflow chat and type your first expense
π How It Works
You type: "spent 500 on car wash"
β
Detect Intent β classified as: expense
β
Read All Expenses β loads sheet (works even if empty)
β
Prepare Data β calculates existing month total
β
AI Parse Expense (Claude Haiku)
β amount: 500
β category: Transport
β description: Car wash
β date: today
β currency: INR
β
Parse & Total
β derives Month from parsed date
β computes new running total
β
Is Valid? (amount > 0 and is_expense = true)
β
YES β Save to Sheet β Reply with confirmation
β NO β Ask user to include an amount
Summary flow:
You type: "summary february"
β
Detect Intent β classified as: summary
β
Read for Summary β loads all rows
β
Build Summary
β detects "february" in message
β filters rows by February (current year)
β calculates total, breakdown by category, daily avg
β
Returns formatted report
π Sample Summary Output
π March 2026 Report
π³ Total: βΉ8,450
π Entries: 12
π Daily avg: βΉ470
π Top: π Food & Dining
Breakdown:
π Food & Dining: βΉ3,200 (38%)
π Transport: βΉ1,800 (21%)
π‘ Bills & Utilities: βΉ1,200 (14%)
ποΈ Shopping: βΉ1,050 (12%)
π¬ Entertainment: βΉ800 (9%)
π₯ Health: βΉ400 (5%)
π Auto-Detected Categories
| Emoji | Category | Example keywords |
|---|---|---|
| π | Food & Dining | lunch, dinner, restaurant, zomato, swiggy, grocery |
| π | Transport | uber, ola, petrol, metro, flight, car wash, parking |
| ποΈ | Shopping | amazon, flipkart, clothes, electronics, shoes |
| π‘ | Bills & Utilities | electricity, wifi, rent, recharge, emi, gas |
| π¬ | Entertainment | netflix, movie, spotify, concert, gaming |
| π₯ | Health | medicine, doctor, gym, pharmacy, hospital |
| πΌ | Business | office, software, domain, hosting, tools |
| π | Education | course, books, tuition, udemy, fees |
| π° | Other | anything that doesn't match above |
βοΈ Workflow Nodes
| Node | Type | Purpose |
|---|---|---|
| When chat message received | Chat Trigger | Entry point |
| Detect Intent | Code | Classify: expense / summary / help |
| Intent Switch | Switch | Route to correct path |
| Read All Expenses | Google Sheets | Load rows (alwaysOutputData: true) |
| Prepare Data | Code | Compute month total, handle empty sheet |
| AI Parse Expense | LLM Chain | Extract fields using Claude Haiku |
| Claude Haiku | Anthropic Model | AI model for parsing |
| Parse & Total | Code | Validate, derive month, compute total |
| Is Valid Expense? | IF | Check amount > 0 |
| Save Expense to Sheet | Google Sheets | Append new row |
| Reply Saved | Code | Format confirmation message |
| Reply Invalid | Code | Request amount from user |
| Read for Summary | Google Sheets | Load all rows for report |
| Build Summary | Code | Filter by month, compute breakdown |
| Send Help | Code | Return command reference |
π§ Customisation Ideas
- Add a budget alert β warn when monthly total exceeds a set limit
- Telegram integration β replace chat trigger with Telegram bot
- WhatsApp integration β use Twilio WhatsApp as the input channel
- Weekly digest β add a Schedule Trigger for automatic weekly reports
- Multi-user β store user ID with each row to support team expense tracking
- Export to PDF β generate monthly expense report as a PDF
β οΈ Important Notes
- The
Read All Expensesnode has Always Output Data enabled β this is required so the flow works on an empty sheet - Month is derived from the parsed date, not today's date β so past-dated entries file correctly
- The
Totalcolumn stores the running month total at the time of each entry β it does not update retroactively if you delete rows
π¦ Requirements Summary
- n8n (cloud or self-hosted)
- Anthropic API key (Claude Haiku β very low token usage)
- Google account with Sheets access
Built with n8n Β· Claude Haiku Β· Google Sheets By Nirav Gajera