Hey Everyone (and esp Martin!), After over 10 years on my TODO list I've finally gotten around to migrating to Beancount. It's Awesome! I'm glad I waited from those early versions, as the product has really come along and is a pleasure to work with.
Of course, I've fallen into most of the newbie traps, and will have to iterate the workflow the hard way. I'd like to describe my envisioned workflow, so someone can stop me before I go too far down the rabbit hole (though I'm already a week in). I have about 20 years worth of various data I'd eventually like to import/organize from various sources. These have existing Account tags and Categories etc.. For now, I'm starting with 2020. Existing data is coming from sources including tons of OFX Files, Excel sheets, CSV, Google Sheets, PDF's, various trading exchanges and a bunch of crypto stuff. I'll tackle them one at a time, as those workflows are fairly well defined and you have great existing tooling. I'm using the full bean-file workflow. Importers are easy and intuitive. I've written a new IB importer based on the great ibflex library. I've also rolled an OFX importer based on ofxtools, which were both so robust that they worked almost immediately on all of my banks. The thing I'd like to explore here is configuring the importer on the account 'open' meta as well as rules integration. I think the current 'import.py' has already become difficult to manage as I have too many accounts. My real mental block was around how to organize my beans. Single file? Where do I put new transactions? What about staging transactions from imports? Auto-match/tag/payee? What about other entities (wholly owned companies, partially owned companies). How would I track passive income, trading income etc. There seem to be about as many workflows as users. The general structure I've decided on is to have a yearly bean file-- "2020.bean", linked from a root file. The root file has all of the accounts 'open' and 'close', common commodities, options and all includes. This file is manually managed. There are some additional files (prices, trading transactions), but they tend to be verbose and simple formats. My yearly file is "round-trippable" in that I am able to read it, insert/modify entries and rewrite it using a simple CLI tool. This allows me to inject new transactions in the right place from the importers. The tradeoff is I have a fixed sort order (mostly by date/type) and no comments. Because it's generated though, I can inject Folds which make the file quite easy to navigate. My big insight here was that I'd think of my year in chronological order and not on a per account basis (much like beancount internally). This file becomes my "Personal Journal" and I am mostly working at the end of the file (today). I also make use of transaction flags, so that once it's got a '*', I don't auto-do anything. Diff/git/balance are my friends for any batch changes. Are we free to add new flags--I've seen some conflicting assertions on that. I've mostly handled the duplication with a combination of unique key (in meta-data) and obvious duplicate checking. Now that I have a fixed format and am able to modify en-mass the yearly file. I was able to start thinking about auto-tagging/matching in a more robust fashion. To that regard I'm building a regular expression rules engine. This is a similar path that many people seem to have gone down. Finding the magic sweet-spot between learning from existing transactions, having matching rules and a neural network/AI :-). I'm quite simple, so I just read a "rules.yaml" and modify the existing entries, applying the account modifications. It will also allow tagging, payee, even injection of meta-data (parsed from the Narration for example). I have lots of ideas here and am in danger of falling into a black hole of something super complicated that nobody else would find usable. But the workflow looks promising already in early alpha. I also haven't quite figured out how best to handle assets held in companies. While it seems obvious that a separate legal entity needs its own set of books (and files its own taxes), I have several companies where I'd like to integrate portions of the balance sheet/expenses into my personal bean file. An example is a legal entity that manages an AirBnB and owns the property. So, do I reflect those properties on my balance sheet? It becomes even more messy when there's a business partner involved. I've kind of decided to keep each legal entity in its own bean project. I reflect advances to/from owner (there tend to be a lot of those) on each project as well as a "liquidation" value of the company (owner-equity). Then I might just write some scripts to generate owner-equity/share as a price directives into my personal reports. And keep the personal bean simple. The downside is my personal rolled up reports hide a fairly large part of my passive income/expenses. I can't answer a simple question like "What % of my investments are in Real Estate." or "How much money did I make from AirBnB" without perhaps combining multiple entities. This seems like a reporting issue and not a structural one though--and could be solved at a higher reporting level. Anyone have experience with this? On the horizon I'd like to write: - Google Sheets Round-Trip. Be able to export simple transactions to a sheet, let my assistant tag them and read them back in. I saw some work on reporting to Google Sheets in the project already. - Crypto -- Haven't even started thinking about this, though saw a few importers online. For now I just make note of the balances. - VIM -- I've started some tools on this front, would like to be able to do most common tasks from within vim, like merging files, applying rules, and intelligently modifying entries. Seems that most of the python hooks are already in beancount (like parsing single entry etc.). I'm already using the existing VIM plugin, but would like to do so much more. I'll release some of the code on github if anyone is interested in any of these sorts of features, but would want to make sure it's a complete usable workflow first. And Martin, if there's anything I can help with let me know, though I keep waiting for you to switch to GitHub! Best, Runar -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CACqcuWsWpqdVLdQs5m9Rkbv-NeCKMDySN5xPUQ8%3D6XRkO%3DPpsQ%40mail.gmail.com.
