Skip to content

andreolf/watch-my-money

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

watch-my-money

Local budget tracking and overspending alerts. No cloud. No APIs. Just your transactions and honest answers.

What it does

  1. Parse bank transaction exports (CSV or text)
  2. Auto-categorize spending (groceries, transport, subscriptions, etc.)
  3. Track against monthly budgets
  4. Detect anomalies (spending spikes, subscription creep)
  5. Generate local HTML reports

Privacy first: Everything runs locally. No network calls. Data stays in ~/.watch_my_money/.

Quick Start

# Install
pip install -e .

# Analyze a CSV export
python -m watch_my_money analyze --csv bank_export.csv --month 2026-01

# Set a budget
python -m watch_my_money set-budget --category groceries --amount 500 --currency CHF

# View budgets
python -m watch_my_money budgets

CLI Commands

analyze

Parse and analyze transactions:

# From CSV file
python -m watch_my_money analyze --csv transactions.csv --month 2026-01

# From stdin
cat transactions.txt | python -m watch_my_money analyze --stdin --default-currency CHF

# Skip interactive prompts
python -m watch_my_money analyze --csv data.csv --no-interactive

set-budget

Set spending limits:

python -m watch_my_money set-budget --category groceries --amount 500 --currency CHF
python -m watch_my_money set-budget --category eating_out --amount 200 --currency CHF

budgets

View all budgets:

python -m watch_my_money budgets

export

Export month data as JSON:

python -m watch_my_money export --month 2026-01 --out january.json

reset-state

Clear all data:

python -m watch_my_money reset-state

Categories

Fixed categories for consistent tracking:

  • rent - Housing payments
  • utilities - Phone, internet, electricity
  • subscriptions - Streaming, SaaS, memberships
  • groceries - Supermarkets, food shopping
  • eating_out - Restaurants, cafes, takeout
  • transport - Uber, trains, fuel, parking
  • travel - Hotels, flights, vacation
  • shopping - Online stores, retail
  • health - Pharmacy, gym, doctors
  • income - Salary, refunds
  • transfers - Internal account transfers
  • other - Everything else

CSV Format

Works with most bank exports. Auto-detects:

  • Delimiters: comma, semicolon, tab
  • Date formats: YYYY-MM-DD, DD/MM/YYYY, MM/DD/YYYY
  • Amount formats: single column or debit/credit split

Required columns (any of these names):

  • Date: date, booking_date, posted_date, timestamp
  • Description: description, merchant, payee, memo
  • Amount: amount, value OR debit/credit columns

Text Format

For quick manual entry:

2026-01-03 Starbucks -5.40 CHF
2026-01-05 Uber -12.50 CHF
2026-01-15 Salary +4500 CHF

Output Files

All data stored in ~/.watch_my_money/:

~/.watch_my_money/
├── state.json           # Budgets, merchant overrides, history
└── reports/
    ├── 2026-01.json     # Monthly data (machine-readable)
    └── 2026-01.html     # Interactive report

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=watch_my_money

License

MIT

About

Local budget tracking and overspending alerts. No cloud. No APIs. Just your transactions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors