-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Import from bean-extract / beancount.ingest? #23
Comments
There isn't any existing way to do this, but some sort of convergence with beancount.ingest is something I'm very interested in exploring. However, there are some challenges to overcome:
|
How about exporting this required info in meta? |
If you specified which metadata fields indicate a unique transaction id, and which metadata fields to use for automatic classification, then I think it would work. |
Do you have any plans for defining API for the UI part? I am currently using smart_importer and I think having an interactive UI makes a lot of difference. I personally loved the idea of being able to make some manual entries and later merge them effortlessly with the statement. |
I guess you want to use the beancount-import UI with the account prediction provided by smart_importer and ingesters defined using the benacount.ingest framework? I don't have plans to try to make that work myself, but if you're interested in making that happen, it does sound like it could be very useful, and I'm happy to offer advice and would be interested in merging it into beancount-import, for example. The datasource API provided by beancount-import is already sufficient, I think, for integrating with beancount.ingest. Currently there is no API for plugging in a different account prediction mechanism, but that could be added. Or maybe it would make sense for beancount-import to merge into smart_importer entirely, but not sure if the smart_importer authors are interested. |
Correct me if I'm wrong, but it sounds like the stumbling block of this program (ingester->smart_importer->beancount-import UI) is that the prediction/ML part needs to be factored out in beancount-import? Is it possible then to get the smart_importer to do all the deduplication and account prediction, while simply turning off this functionality in beancount-import? Your posts from two years ago seem relevant: |
Currently beancount-import relies on an account name starting with Expenses:FIXME to indicate an "unknown" account, which has 3 effects:
Individual beancount-import datasources are already responsible for doing deduplication, so it is no problem for smart_importer to do that. To let smart_importer perform the automatic prediction, while still preserving effects (1) and (3), beancount-import could be modified to support an extra metadata key on postings that would indicate the predicted account while still allowing the account to be considered "unknown". This would be a pretty simple change to make, e.g. in _get_unknown_account_predictions in reconcile.py. |
Is this still accurate? If I understand correctly, that means an |
The generic importer handles deduplication based on
|
Hmm is there an option (aside from subclassing the source) to avoid requiring the narration match? Usually I tidy these up in the import UI, so what's in the transactions file is more concise and/or better formatted than the raw importer output |
There isn't currently any such option, but I agree that matching on narration is problematic. Potentially you could match on just date, account, and amount alone. But it would be better to store the original narration as a metadata field, so that it can be used for training and for deduplication |
Yes currently I'm storing the original in the |
So, I´ve spend hours writing a bean-extract compatible parser using
beancount.ingest.importer.ImporterProtocol
Can one somehow string those things together?
but "run bean-extract" and use that result as data_source - similar to Fava?
something along the lines of the usual:
or however that´s gonna map out... ;-)
(think that could proxy-close #18 as well...)
The text was updated successfully, but these errors were encountered: