Expense Tracker
Telegram bot for expense tracking. Send text or photo to bot, Claude Haiku parses it, stores in D1.
When to use
- User asks about expenses, spending, budget
- User wants to deploy or update the expense bot
- User wants to see expense summary or export data
- User asks to sync expenses locally
Dependencies
- External: Cloudflare Workers (wrangler), Node.js
- Services: Telegram Bot API, Claude API (Haiku), Cloudflare D1
Paths
| What | Path |
|------|------|
| Project | $HOME/expense-bot/ |
| Source | $HOME/expense-bot/src/ |
| Schema | $HOME/expense-bot/schema.sql |
| Worker config | $HOME/expense-bot/wrangler.toml |
| Local export | $DATA_PATH/personal/expenses_YYYY_MM.csv |
How to execute
Deploy
cd ~/expense-bot && npx wrangler deploy
Set webhook (after first deploy)
curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook?url=https://expense-bot.<subdomain>.workers.dev/webhook"
Apply schema
cd ~/expense-bot && npx wrangler d1 execute expense-db --file=schema.sql
Check expenses via API
curl -H "Authorization: Bearer $TOKEN" "https://expense-bot.<subdomain>.workers.dev/api/summary?month=2026-03"
Sync expenses locally
curl -H "Authorization: Bearer $TOKEN" \
"https://expense-bot.<subdomain>.workers.dev/api/export?month=2026-03" \
> $DATA_PATH/personal/expenses_2026_03.csv
Set secrets
cd ~/expense-bot
npx wrangler secret put TELEGRAM_BOT_TOKEN
npx wrangler secret put ANTHROPIC_API_KEY
npx wrangler secret put API_AUTH_TOKEN
npx wrangler secret put ALLOWED_USERS
Setup (first time)
- Create bot via @BotFather on Telegram
cd ~/expense-bot && npx wrangler d1 create expense-db- Update
database_idinwrangler.toml npx wrangler d1 execute expense-db --file=schema.sql- Set secrets (see above)
npx wrangler deploy- Set webhook (see above)
Bot commands
| Command | Description |
|---------|-------------|
| /start | Welcome + usage |
| /today | Today's expenses |
| /week | This week by category |
| /month | Monthly summary |
| /budget | Budget vs actual |
| /setbudget food 200 | Set monthly budget |
| /export | Download CSV |
| /delete 123 | Delete expense by ID |
Architecture
Telegram -> CF Worker /webhook -> Claude Haiku (parse) -> D1 (store) -> TG reply
/api/* (JSON/CSV export, auth by Bearer token)
Cost
~$0.30/month (Claude Haiku API only, everything else is free tier)