In February 2017, Geoff Ostrega and I packed up all of our stuff and moved to Santa Monica to turn our part-time project into a real company. We set out with the goal of giving accountants back time. This is because it still takes far too long to close the books. Each additional day that passes without knowing the prior month’s financial results is a day that management is making decisions based on incomplete or inaccurate financial information.
What we somewhat realized then, and learned much more deeply as we got further along in product development, is that accounting and computer science don’t naturally mesh. The way computers and software work is fundamentally different than the frameworks used to turn operational data into financial statements. And it is extremely difficult to bridge the gap between the two disciplines.
The entire purpose of financial accounting is to give organizations visibility into how they did over a certain period of time and a snapshot of their current financial position. All accounting rules are geared toward doing that accurately, no matter what is involved in making that happen.
If you’ve recorded a flock of 10 sheep on your balance sheet, you better have 10 sheep. It doesn’t matter that the sheep counting machine is broken and actually there are only 8. If that’s the case, you should have counted the sheep and recorded an adjustment to reflect the correct number as an asset and then the related expense.
The structure of computer science is much more geared toward math and error handling. A system is constructed with certain parameters to achieve a certain outcome. If something not originally thought of arises, you can update the code to reflect that new scenario. But what if you can’t predict every example, so everything needs to be reversible and/or manually adjustable at every step?
Taking that sheep example, what if the sheep counting machine did exactly what was intended? What if the 2 sheep just vanished into thin air 2 seconds after the last count? A solution for this is a real-time sheep monitoring system where the sheep are trackable at all times with a live count… but they’re sheep and there are 10 of them… or 8 now I guess. So maybe that’s overkill. We should probably just have a way to say there are 2 fewer sheep and move on.
So that example was pretty dumb, but it’s not too dissimilar from the seemingly infinite number of edge cases that arise as organizations around the world turn their operational data into financial results. There is so much judgment, so many one-off cases, and so many “just manually fix it this month” situations, that an accounting framework based on computer science just won’t work.
If you’re wondering what accountants within organizations do, there you have it. The accounting function in an organization exists to turn all that messy operational data into meaningful financial data. This way critical finance functions happen accurately and management has the financial data they need to run the business. The framework for doing that has to be different because it has to be purposefully built to handle uncertainty.
The point of this post is to illustrate the reason why accounting hasn’t been automated yet. The projects focused on automating accounting generally haven’t used accounting frameworks in their product design. Additionally, they often have limited corporate accounting experience, if any. It’s not impossible to merge these two disciplines and move accounting automation forward, it’s just extremely difficult. It requires thinking through each concept and its relation to one another from the ground up, carefully considering thousands of tiny decisions along the way. Then, once there’s a system that’s flexible enough to form the backbone of the financial data model for an organization or application, you need to consider the data model itself. That needs to be flexible and also comparable to other data models so that you can easily analyze data.
If your eyes glaze over reading this, don’t become discouraged. While it’s not exactly an easy undertaking, it is a solvable problem. If you’re working on automating accounting, you need to take this seriously from day one. You must realize human input is unavoidable. What you need to do is get the right people on board, and listen to them as you build. This is a problem worth solving.
If you would like to learn more about how SoftLedger’s platform and API enable you to easily add critical accounting functionality into your tech stack, set up some time for a demo: Free Demo.