🛠️ ledjr

Ledjr is a bookkeping software with some AI bits to automate common tasks.

From our website:

A screenshot, featuring a Credit Card statement and the corresponding auto-extracted transactions:

History

In 2014, Penyo Pal and Bloom had a few years of bookkeeping and accounting to be done. Penyo Pal, in particular, had tens of thousands of transactions each year - and when I called a few accountants for quotes, well... they were all very pricey (more than Penyo Pal made in many of those years).

A friend advised me to do as much of bookkeeping myself, and then just get an accountant to review. So I set out to pick an accounting software...

...and ended up very disappointed. At the time, the market seemed to have been content with 1990s Windows-only desktop software or cumbersome and slow online tools.

Bookkeeping software was the first "killer app" for computers. Databases were invented for bookkeeping. How was the state of bookkeeping software so abysmal?

So, of course, we built our own.

(Why "Ledjr" - it's a ledger, in Clojure, and many Clojure libraries make puns with "jure"; also, somewhat like Flickr)

For our first version, we focused on:

Each subsequent year, as I would do the bookkeeping, I would tweak something in Ledjr.

In early 2024, LLMs evolved to the point where OCRing an arbitrary document and extracting the corresponding transaction information was possible, fast and cheap. The 10 year old code base was a bit awkward to work on, so I took it as an opportunity to make a new interface designed around an "AI-first" workflow.

...but extracting an abstract transaction from a document isn't enough. The data needs to be converted to a set of ledger entries associated with the "right" accounts. In other words, it's one thing to identify that some PDF is an "invoice from ACME Inc. for $50 on 2025-09-25"; but it's a whole other challenge to recognize that it should be filed under "Liabilities - ACME" and "Expenses - Project X - Servers". We implemented the latter by comparing the incoming transaction with past transactions and how they were filed, with some statistics mixed in to pick the right one.

I log my hours for all the things I do at Bloom, including bookkeeping. The Ledjr "AI Update" dropped by bookkeeping hours by 90% (I still reviewed each document and occasionally had to fix things). There was definitely an "oh shit" moment when I saw the system do 10 hours of work in a minute (with 1 hour for me to review it). Plus, I can see several opportunities to bring the human involvement down even further.

In 2025, a friend of mine started using Ledjr for his personal corporation (woo!) and I've been making lots of UX improvements to pacify him. He also pronounces it "Led Junior" instead of "ledger," in, what must be a purposeful effort to have me change the name.

At the moment, Ledjr isn't great at "zero-shot" transaction "coding" (ex. if it's the first time an invoice from ACME Inc has come in, Ledjr has no idea where to put it), but I think we could leverage LLMs in new ways to improve that.

Going forward, the plan is for Ledjr to continue serving our needs at Bloom and related companies. We're open to being more ambitious with it, but we'll need to research the market some more before deciding if it's actually a business opportunity.

Now if only someone could do the same thing for Canadian T2 corporate tax software. (Here we go again...)

2025-04-16
ledjr
:project-started-on2014-12-20
:project-updated-on2025-04-16
:post-created-on2025-09-25
:post-updated-on2025-09-25
:linkhttps://www.ledjr.co
:intent-to-keep-working?true