Hacker Newsnew | past | comments | ask | show | jobs | submit | combocosmo's commentslogin

Can you make some of my repeating settings savable? If I have to send invoices to 5 clients I'd prefer to not have to fill in the same stuff over and over again!

You can save seller/buyer info by clicking "Save Seller/Buyer" button. A dropdown will then appear, allowing you to switch between them. I’ll consider adding the same functionality for invoice line items.

Nice project! I built a CLI budgeting project a long time ago, and what made me stop using my own project was the lack of automated integration with my bank accounts. At that point I had many credit cards, multiple bank accounts, in different currencies, and integrating all expenses was just too much manual work.

I wish financial institutions were better at automated exports of your financial data, given the right permissions of course.


That’s a fair point. Automated bank imports sound essential at first, especially with many accounts and cards.

In practice, though, I found them less useful for budgeting than expected. A bank statement tells you how much was spent and where, but not what the expense actually was. “$100 at a supermarket” could be groceries, pet food, a lawn mower, or business expenses — that context is what makes budgeting meaningful, and it usually has to be added manually anyway.

At that point, entering the expense directly with the right category often turned out to be simpler and more accurate for me. Automated access would still be nice for reconciliation, but it’s not the silver bullet it’s often perceived to be.


This is something I kept bumping into when building my own tracker (Simple Wallet - https://simplewallet.app).

You're right that "$100 at a supermarket" is useless but I found even knowing "I spent $400 on groceries" wasn't that useful either. I kept asking myself "okay, but on what?"

So I leaned hard into making categories the starting point instead of the endpoint. Groceries breaks down into what I'm actually buying. Turns out I was spending way more on coffee than I realized.

Did you ever consider going deeper into categories, or do you find users just want the high level view? I've been torn on how much detail is actually helpful vs. overwhelming.


This was true, but today I would much rather have an llm categorize my expenses. Me doing it manually will never happen.


That’s fair — and I agree if enough context exists.

The key limitation is that a raw bank transaction usually contains very little semantic information: amount, merchant name, date. From that alone, an LLM can only guess based on patterns or prior behavior, not actually know what the expense was for.

“$100 at a supermarket” could be groceries, pet food, a household item, or something work-related. An LLM can infer probabilities once it has enough historical data and feedback, but that still means the user has to correct or confirm things at some point.

So I see LLMs as very helpful for assisting categorization (suggestions, defaults, learning over time), but they can’t fully replace intent unless the underlying data becomes richer than what bank statements provide today.


Is there any chance it could become richer? What governs the content of credit card and bank statements? Is there anyone pushing for them to be more useful?


I think (granted, this is from a quick bit of research so I could be wildly wrong) - the message you see in your credit card app with a transaction is usually mainly the merchant name and location which is part of ISO 8583, so it may be a bit hard to extend it to include an arbitrary message in a way that works without merchants having to replace card reader/POS systems en-masse.


Why not build a receipt scanner then?


I have been pondering on this issue as well. Budgeting apps which have integration seem to have access to too much data.

Why do we need such a detailed breakdown for personal finance. I am pondering on this idea of using under or over type prompts to capture daily expense. The app send a notification asking me did you spend $100 or less in the day. Eventual goal of all budgeting apps is to reduce spending. this simple prompt can capture immense information without needing to break it down. breaking it down to categories can be a step if there is a problem detected in the savings pattern. For that banks are already adding the feature

keen to hear thoughts on this


it's very sad that in Europe we have laws to guarantee "open banking" but in practice it's only B2B


one way to go around this is to use apps like Toshl which connect to banks (it is far from perfect but usable) and then if you are unhappy with the app you can use their API to sync with your own system


Of course a bit anecdotal, but not once has either Gemini or ChatGPT suggested me anything with eval or shell=True in it for Python. Admittedly I only ask it for specific problems, "this is your input, write code that outputs that" kind of stuff.

I find it hard to believe that nearly 50% of AI generated python code contains such obvious vulnerabilities. Also, the training data should be full of warnings against eval/shell=True... Author should have added more citations.


I've always liked scatter solutions for these kind of problems:

  import numpy as np
  
  def scatter_mean(index, value):
      sums = np.zeros(max(index)+1)
      counts = np.zeros(max(index)+1)
      for i in range(len(index)):
          j = index[i]
          sums[j] += value[i]
          counts[j] += 1
      return sums / counts
  
  def scatter_max(index, value):
      maxs = -np.inf * np.ones(max(index)+1)
      for i in range(len(index)):
          j = index[i]
          maxs[j] = max(maxs[j], value[i])
      return maxs
  
  def scatter_count(index):
      counts = np.zeros(max(index)+1, dtype=np.int32)
      for i in range(len(index)):
          counts[index[i]] += 1
      return counts
  
  id = np.array([1, 1, 1, 2, 2, 2]) - 1
  sales = np.array([4, 1, 2, 7, 6, 7])
  views = np.array([3, 1, 2, 8, 6, 7])
  means = scatter_mean(id, sales).repeat(scatter_count(id))
  print(views[sales > means].max())
Obviously you'd need good implementations of the scatter operations, not these naive python for-loops. But once you have them the solution is a pretty readable two-liner.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: