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.

Reply via email to