/install hobohan-expense-tracker
Expense Tracker
Track daily spending via Telegram check-ins. Three prompts per day; cron-driven. All data flows to local .md ledger + Google Sheet.
Ledger format
Each file at ledger/YYYY-MM-DD.md:
# Ledger — 2026-06-03
- Food & Drinks $1.80 | Coffee
- AI $11.53 | Netlify
Format: - Category $Amount | Notes
Categories
Allowed: Food & Drinks | Groceries | Transportation | Household/Utilities | Pet | Shopping | Entertainment | Other | AI
- Bakery bread → Food & Drinks (NOT Groceries)
- Groceries = supermarket bulk/household runs
- Unsure → ask Hobo or default to Other with note
Check-in schedule
| Time | Prompt |
|---|---|
| 10am | Morning spend (coffee, breakfast, transport) |
| 1:30pm | Afternoon spend (lunch, transport) |
| 10pm | End-of-day recap |
Each check-in runs as an isolated cron agentTurn with model: deepseek/deepseek-v4-flash and timeoutSeconds: 300.
Transport check-in (9am, previous day)
Separate cron asks: "Any transport yesterday?" Pinned to deepseek/deepseek-v4-flash.
Dedup rules
Before writing to today's ledger file:
- Read today's ledger file first.
- Time qualifiers (morning/afternoon/evening coffee): always ADD new entry, never replace.
- Same category + amount: assume repeat purchase → ADD new entry.
- Only REPLACE if Hobo explicitly says "change X to Y".
- When in doubt → ask Hobo to confirm.
Expense sync
Daily at 9:30am via scripts/sync-ledger-to-sheet.py:
- Reads all
ledger/*.mdfiles - Parses entries per format above
- Generates dedup key:
(normalized_date|normalized_amount|notes)wherenormalize_amount()strips trailing zeros - Compares against existing sheet rows → appends only new ones
- Uses Google Sheets API with service account at
/home/hobopi/.openclaw/secrets/google-service-account.json - Sheet ID:
1Ikbydh-Xzc6F3pk1Q5lbCTbdEERSb4Hq8obzbABVZbU, tab:Sheet1
Historical backfill
To backfill missing days (e.g., April 18-26 reconstructed from sheet data):
- Query sheet for all rows with dates not in ledger
- Parse each row as
Date, Category, Amount, Notes - Create
ledger/YYYY-MM-DD.mdwith entries in correct format - Verify count matches between ledger and sheet
Scripts
scripts/sync-ledger-to-sheet.py— main sync enginescripts/gen-expense-data.py— dumps all entries to JSON for dashboard
Cron notes
- All expense crons MUST pin model to
deepseek/deepseek-v4-flash(time-sensitive) - Timeout: 300s minimum (600s for 10pm check-in)
- Use absolute paths only in payload messages — no
cd && python3chains
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install hobohan-expense-tracker - After installation, invoke the skill by name or use
/hobohan-expense-tracker - Provide required inputs per the skill's parameter spec and get structured output
What is Expense Tracker?
Log daily expenses via check-in prompts; dedup, categorize, sync to local ledger and Google Sheets. It is an AI Agent Skill for Claude Code / OpenClaw, with 28 downloads so far.
How do I install Expense Tracker?
Run "/install hobohan-expense-tracker" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Expense Tracker free?
Yes, Expense Tracker is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Expense Tracker support?
Expense Tracker is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Expense Tracker?
It is built and maintained by Hobohan (@hohobohan); the current version is v1.0.0.