Money Manager Ex. It saves the file as a SQLite database, which makes it easy to parse. I have a couple python scripts that extract the numbers, and generate a JSON file with numbers, png graphs using matplotlib, and I have another module that takes the generated graphs, numbers, and a latex template, and generate a nice PDF.
For instance, when the script finds a brokerage account, it separates out deposits / withdrawals from actual P/L to calculate true time weighted returns.
Budget-wise, I look at it on a yearly basis. This is important because some significant expenses have an annual frequency (practice insurance, housing insurance, etc), or bi-annual frequency (car insurance...) And some expenses are discrete frequencies throughout the year (vacation, etc....)
It requires more discipline than on a monthly basis, but the reasoning behind it is if we spend more than we earn on a given month, it is not necessarily bad, because it might just be the month we went on vacation, or the month we had our yearly insurance premium. The important goal is to spend less than we earn on average . So over the long run wealth accumulates naturally. Short term deviations are not important as long as our long term lifestyle is aligned with our income.
So your python scripts extract from PDF statements? Did you use a pre-made template and customized it or did you program it from scratch?
I track monthly by copy pasting/transcribing from the monthly statements - it takes me about an hour a month on a Saturday or Sunday to fill out and then another hour of contemplating spending.
The other way around, I use the script to generate a PDF based on the money Manager Ex file (which is in SQLite format).
Fortunately I am able to download a CSV from most financial institutions, so I never have to parse their pdf.
My workflow is
download all CSVs and import in money Manager Ex
categorize spending within the software, reconcile transactions, etc
run the script against the money Manager Ex file to generate a PDF.
I am surprised you have to copy paste from your monthly statements? Is it possible that on your banks portal, deep into the menus you have an option to download as CSV?