DEV Community

Eastkap
Eastkap

Posted on

I built a budget tracker in a weekend — here's what I learned about why people hate finance apps

Let me tell you something embarrassing: I have a master's degree in computer science, I build software for a living, and I had no idea where my money was going.

Not because I'm irresponsible. I'd tried the apps. Mint, YNAB, Copilot, Personal Capital. Every single one. And every time, I'd quit within two weeks.

Recently I got fed up enough to figure out why — and then I built something different. Here's what I found.

Why People Actually Quit Budget Apps

Problem 1: They Want Your Bank Credentials

Every major budgeting app starts the same way: "Connect your bank."

I know, I know — it's OAuth, it's Plaid, it's "read only." Technically it's fine. But there's something deeply uncomfortable about handing a startup my banking credentials, even through an intermediary. And the anxiety doesn't go away when I see headlines like "Plaid data breach" or "Yodlee sells user data."

The thing is, this fear is rational. You're giving a third party persistent access to your financial data. If they get acquired, breached, or pivoted — your data is part of that story.

A lot of people feel this way and just... never start budgeting.

Problem 2: The Complexity is Overwhelming

Mint had 52 transaction categories. YNAB has an entire philosophy you have to learn before you can enter your first expense. Copilot has rules, splits, recurring templates, investment tracking.

All I wanted to know: Am I spending too much on restaurants this month?

The apps were built to handle edge cases that don't apply to 90% of users. And the UI complexity shows.

Problem 3: Subscription Fatigue is Real

YNAB: $99/year (they keep raising it). Copilot: $8/month. Monarch: $14/month.

We're talking $100-170/year to track your spending. That's genuinely ironic when you think about it.

Problem 4: Mint Shut Down

In January 2024, Intuit shut down Mint. 22 million users. A decade of financial history. Gone.

If you built your financial awareness on top of a VC-backed app, you were one business decision away from losing it all. The data was never really yours.

Problem 5: They Don't Work Offline

Budget anxiety doesn't happen at your desk. It happens at the grocery store, at a restaurant, in the parking lot of Target. Most apps require a connection to sync, and the UX falls apart on mobile with bad data.

What I Built Instead

After getting frustrated enough, I built Monee — a dead-simple budget tracker with one rule: no bank linking, ever.

Here's the architecture:

// No OAuth flows, no API keys, no persistent server state
// Just a React app that runs entirely in the browser

const processTransactions = (csvData) => {
  const rows = Papa.parse(csvData, { header: true }).data;
  return rows.map(row => ({
    date: parseDate(row.Date),
    amount: parseFloat(row.Amount),
    description: row.Description,
    category: autoCategory(row.Description) // simple keyword matching
  }));
};
Enter fullscreen mode Exit fullscreen mode

The whole app is client-side. Your transaction data never leaves your browser. You can paste CSV exports from your bank (every bank has this), or enter transactions manually.

// Category detection — no ML needed, just pattern matching
const CATEGORY_RULES = [
  { pattern: /uber|lyft|taxi/i, category: 'Transport' },
  { pattern: /restaurant|cafe|coffee|pizza|sushi/i, category: 'Food' },
  { pattern: /netflix|spotify|hulu|prime/i, category: 'Subscriptions' },
  { pattern: /amazon|target|walmart/i, category: 'Shopping' },
  // ... about 40 more rules
];

const autoCategory = (description) => {
  for (const rule of CATEGORY_RULES) {
    if (rule.pattern.test(description)) return rule.category;
  }
  return 'Other';
};
Enter fullscreen mode Exit fullscreen mode

No machine learning. No API calls. No sync. Just pattern matching on your own data, running locally.

What I Learned

1. Privacy is a feature. When I removed the bank-linking requirement, the barrier to starting dropped completely. People who were on the fence just... tried it.

2. Constraints force clarity. Without a database backend, I couldn't build a complicated UI. The constraint made the product better.

3. CSV is underrated. Every bank exports CSV. It's universal, it's readable, it's yours forever. Building around CSV instead of APIs made the app more durable.

4. The 80% case is underserved. Most people don't need investment tracking, net worth dashboards, or FIRE calculators. They need to see where their money went this month. That's it.

The Result

Monee — free, no login, no subscription, no bank access. Takes about 30 seconds to get your first budget breakdown.

I built it in a weekend. It's not perfect. But it solves the exact problem I had, and apparently the problem a lot of other people have too.

If you've ever quit a budgeting app out of frustration (or privacy anxiety), I'd love to know what specifically pushed you over the edge. Drop it in the comments.

And if you want to try something that doesn't require handing over your bank credentials: monee-budget-tracker.vercel.app

Top comments (0)