Not to be that guy that tries to force LLMs into everything, but after automatically importing bank transactions, LLMs like GPT are very powerful in extracting information from the ill-formed, non-standard, transaction description, and subsequently classifying it. You can help train it by manually identifying and classifying the first few, and let it do the rest of the job. I've tried it out myself and works well for me!
How would LLMs really help though if all you get is usually an order number? I mean, it can probably figure out that an order from McDonalds is food related (though does it get categorized as "Everyday Lunch" or "Going out with Friends" or "Work Events"?) and Geico will probably be some sort of Insurance - but that would just be a large database of common payees, no real need for any AI. That said, if you're importing years worth of data, it would be a great starting point to get ballpark estimates of where your money goes, so that has value.
And then there's e.g., "Amazon Transaction AB2314ACWERF" which could be a new Fridge ("Household Appliances"), a 3D Printer ("Hobby Expenses"), a video game ("Entertainment Expenses"), or a giant double-headed adult massager ("Fax Machine Maintenance") - but the bank statement wouldn't have enough information.
Yep, that's one of its deficiencies! For me, something like GPT helps in triaging and "cleaning up" bulk of the transactions, with little micro-categorization left to be manually done.
I played around with this quite a bit with chat gpt 4 with confirmation instructions, and after a bit of time it starts going haywire. I played around with just creating in a simple csv format, transactions date, name, category (asking it to categorize it), and amount. After a couple runs it started going haywire and hallucinating with transactions I never created.
I created an internal rails clone of financier.io and just created a spreadsheet web area i could copy/paste mass transactions in so i could add a batch at a time ( I suppose I could upload a csv also, but the problem is every bank has different formats)
I have tried this and it works very well. I just copy paste my investments data from website and put it as a comment and usually copilot will figure out how to format it as a ledger transaction based on the previous transactions.
I am not sure if it will work with bulk import though. It's easy to spot mistakes with single entry, hard to do when you have lot of them
So far every time I've relied on automatic categorization for this sort of thing it fails horribly. I don't think I've used anything that's GPT based though.
I wrote my own script that uses the GPT API. For automating bank transcation downloads, it's just a cronjob that runs ever X hours and scrapes the information from the banking website.