Setting Up Cute Economics Tracker for Basic Budget Monitoring

I ran into this tool last year when I was trying to track household expenses without paying for a subscription service. The initial install is straightforward, but there are some gotchas that aren't obvious from the README. Let me walk through what actually works. The thing most people miss is that Cute Economics Tracker needs its database schema initialized before it'll accept any data. I spent about forty minutes wondering why my CSV imports were silently failing until I realized the migration step hadn't run. You can fix this by running the init command from the project root before your first import: npm run db:migrate -- --env production

That command creates the tables and sets up the foreign keys. Without it, the tracker will appear to work fine but your transactions won't persist after a restart. I learned this the hard way when I accidentally wiped my Docker container and lost three weeks of grocery data. The configuration file lives at ~/.cute-econ/config.json by default. You need to set the currency code here or everything downstream breaks. I kept seeing phantom negative balances because my locale was set to USD but my bank exports used decimal commas. Changed it to match my actual bank statement format and the reports started aligning correctly. Importing data works best through the standardized QIF format, not the raw CSV. I wrote a quick Python script to convert my Chase statements into QIF and the import time dropped from about twelve minutes to under thirty seconds. The tracker's built-in CSV parser chokes on anything with more than five columns.

Here's what the documentation doesn't tell you: the monthly budget alerts fire on a cron schedule that defaults to 3 AM UTC. If you live anywhere else, you'll get notifications at inconvenient times. Set the timezone in your config file to avoid the confusion: "tz": "America/New_York", The reporting module has a known issue with recurring transactions where duplicate entries appear if you import the same month twice. I discovered this when my utility bills showed up three times each. The workaround is to use the dedup flag on subsequent imports:

Get the Full Details

Cute Dog Puppies Free Stock Photo - Public Domain Pictures
Cute Dog Puppies Free Stock Photo - Public Domain Pictures

node bin/track import --file statement.qif --dedup Performance starts degrading noticeably once you hit around 50,000 transactions. The SQLite backend isn't optimized for heavy read queries. I ran into this limit when my employer switched to weekly payroll deposits and suddenly had four times more entries. The query times went from sub-second to about eight seconds per report. For larger datasets, the maintainers recommend switching to PostgreSQL. The migration is documented but takes about twenty minutes if you're doing it fresh. I did this migration last month and query times dropped back down to under a second.

One edge case that caught me off guard: if your transaction dates span multiple years, the fiscal year reporting assumes January-December cycles. My company uses a different fiscal calendar and the annual summaries were completely wrong until I manually adjusted the start month in the config. There's no UI setting for this, it's a config file edit only. The export function supports JSON, CSV, and PDF. I only use CSV myself because the PDF generation has a rendering bug with certain font encodings that corrupts special characters in merchant names. JSON export works fine but the schema changes between versions, so don't rely on a stable structure for automated processing. If you're tracking simple personal expenses with fewer than 10,000 transactions, this tool does what it promises. For business use or higher volume, you might want to look at alternatives like GnuCash or even a well-structured spreadsheet. The maintenance burden on Cute Economics Tracker is real, and the developer updates are sporadic.