CFOKit: a Test of the Kindness Flywheel Hypothesis
In April I wrote that the value of the software is zero, and that what’s left to compete on is the trust you earn by consistently meeting your customers’ needs. CFOKit is my test of that hypothesis.
If you’re like most entrepreneurs, you probably started your company for the freedom, earning potential, or sense of purpose. You need to manage your business finances, but unless you happen to be an accountant, bookkeeping probably isn’t one of your favorite chores. There are two ways to get it done: hire a bookkeeper or do it yourself.
Bookkeeping services for a US small business start at roughly $200 to $400 a month, plus the cost of a suitable accounting system, and a full-time bookkeeper earns a median of about $4,200 a month before benefits. If you operate in the US you are probably using QuickBooks. Most CPAs are familiar with QuickBooks and recommend it, which is the main reason that it remains so dominant in the market.
QuickBooks is certainly not dominant because it’s loved by its end users. On the best days, I tolerate it. It’s slow, difficult to navigate, and the price seems to go up every year. The relentless ads were the last straw for me. There is no setting that turns them off. Intuit’s own support staff say so in their community forums, and dismissing one does not keep it dismissed. One user describes entering payments invoice after invoice and closing an ad on each one. You pay the subscription and the product abuses your attention, screen real estate, and time trying to sell you more Intuit services that it knows you don’t need.
Bookkeeping should be done for you. QuickBooks no longer deserves its market position, and you deserve better.
What makes CFOKit different
CFOKit is not accounting software that you operate. It is a bookkeeper Agent Skill that manages your books in its own double-entry accounting system accessed via MCP, supervised by you from whichever compatible AI chat platform you already use. CFOKit is licensed under Apache 2.0. You decide where to run it: install it on your own machine, deploy it to your own cloud, or subscribe and we’ll be accountable for your books.
Your bookkeeper agent’s accumulated context about how your business works is data that you own and can take with you. A human bookkeeper who has been with you for years knows which of the Amazon orders on your business card are personal, and books them as owner draws. Your agent can accumulate the same judgments in its memory, and in CFOKit your memory can be exported with your books. Most AI bookkeeping products now capture that context as rules, memory, or reasoning, each in its own format. Some let you export rules or an audit log, but none that I’ve found lets you carry what the agent learned to a competitor. Switch products and your new bookkeeper agent starts over. You don’t always get to choose when you switch, either. When Bench shut down abruptly in December 2024, it told its customers to file for a six-month extension with the IRS while they looked for a new bookkeeper.
You control what inference costs you. CFOKit depends on two open standards, MCP and Agent Skills, both of which the major runtimes now support, so it runs against Claude, ChatGPT, or a model you host yourself. Beneath that, the architecture keeps work away from the model wherever a deterministic rule will do: classification and matching run as rules, and only the transactions those rules do not cover reach inference at all.
Entries are immutable once posted. A draft stays editable until it’s posted. NetSuite, Sage Intacct and Dynamics Business Central work this way and corrections are reversing entries. QuickBooks and Xero let you edit in place, so whatever reasoning those systems show you sits against an entry that can still change. An agent that can edit what it already posted can quietly revise its own mistakes.
What CFOKit is today
After four weeks of development, CFOKit now includes a double-entry ledger, period and year-end close, trial balance, profit and loss with comparative periods, balance sheet, account detail, opening balances, issued statements, import and complete export, an MCP server, and the start of a bookkeeper skill. I have successfully created an account, created an entity from Claude Desktop, imported eight years of my company’s very simple books from QuickBooks Online, and confirmed that the trial balance matches the one QuickBooks reports. You’ll find detailed product vision, requirements, and design decisions in the /docs directory.
It is validated against six worked problems with published answers from a 1911 public domain accounting text, five of them from state CPA examinations between 1898 and 1907. They work as a test because basic accounting has not changed much since they were written and they are long out of copyright, so they are problems with known answers that CFOKit had no hand in writing. Validating support for GAAP and other more recently developed accounting practices, for which I have not yet been able to find suitably licensed documentation and sample data to derive acceptance tests and fixtures, is also critical.
There is currently no support for account transaction posting, accounts receivable, automated bank transaction feeds, account reconciliation, accounts payable, payroll, sales tax, or 1099s. I need the first four to use this myself.
Key Takeaways
Product documents are context, which makes their structure an engineering problem. I started from the assumption that in agentic engineering, the primary authors and consumers of product documentation are agents. I looked for best practices for managing requirements when building complex software with Claude Code and found no dominant convention for organizing them as context, so I decided to try keeping them in the repository.
I wanted simple, lightweight traceability, so I designed CFOKit’s context on four Markdown documents. The product vision says what CFOKit is for and who it serves. The requirements say what it must do, each with an identifier. The decision records use MADR, a Markdown template for recording an architecture decision, the options considered, and the consequences. They describe key implementation details, cite the requirements they serve, and record what was rejected and why, so agents don’t relitigate settled decisions. CLAUDE.md holds the rules the agent follows on every run, and each rule cites the record behind it rather than restating it, so a decision has one place to change. CI tests the documentation structure and fails on a broken citation. Most tests cite the requirements they verify. These documentation structure decisions are described in ADR-0001.
Previously, I had always managed product documentation using tools like Confluence, Notion, Word, or Docs, which were designed for human product managers, subject matter experts, stakeholders, and engineers to easily author, review, and revise requirements. These tools are still widely used. In Stack Overflow’s 2025 survey, 33 percent of respondents reported regularly using Confluence, and 17 percent Notion. An agent can read Confluence and Notion pages through Atlassian’s and Notion’s MCP servers, but this approach felt heavy and outdated for this project.
It turns out that keeping documentation in the source code repository was recommended for maintainability and traceability long before agentic engineering. Michael Nygard has advocated keeping architecture decision records in source control with the code since 2011, and Software Engineering at Google devotes a chapter to treating documentation like code: under source control, reviewed, and changed in the same commit as the code it describes.
An agentic product is a service, and accountability follows whoever runs the agent. Agentic products like CFOKit have two major components: an agent that does the work and a system of record that it works in. The agent consists of a runtime environment, one or more models, and a skill that contains domain knowledge along with the business context that accumulates as you use it. The system of record holds the data and exposes it through MCP tools. In CFOKit, the agent is a bookkeeper and the system of record is a double-entry ledger.
The deterministic guardrails belong in the system of record. In CFOKit, posting rules, validation, closed periods and role grants run as MCP tools with no model involved, so a less capable model can’t post an invalid entry. Most bookkeeping is repetitive enough for rules, so only the exceptions the rules can’t handle are escalated to you, to resolve in a conversation with the agent, instead of being parked in an uncategorized account. When the agent proposes a new rule, you approve the rule rather than each transaction, and your approved rules are a list you can read.
That split decides whether the product is software or a service. Joanne Chen of Foundation Capital draws the line this way: with software, the customer is responsible for using the tool to achieve the outcome, and with a service, the company selling it is. Choosing the runtime and models is like hiring a human bookkeeper. You can pay more for a more capable one and will probably get better outcomes most of the time, but you can’t expect the same performance from a less capable one. When you run the agent yourself, in any runtime that supports Agent Skills and MCP, such as Claude Desktop or OpenClaw, you have chosen the bookkeeper, and you are accountable for how it performs.
When the vendor runs the agent, the same product becomes a service. CFOKit’s commercial offering will make us accountable for the bookkeeper: we provide the runtime, select the models and run them securely, under third-party audit. Exactly how far that accountability extends is something I’m still working out.
How to contribute
If you’ve gotten this far, my hope is that you’re interested enough to follow CFOKit’s development, try it when it’s ready for you, and maybe help it get there. There are three ways to contribute.
-
Test the import with your books. My business alone is too simple to validate CFOKit, and I haven’t found suitably licensed data sets to use as test fixtures in a permissively licensed open source repository. Your books can fill that gap without ever entering the repository. Help test the QuickBooks Online import has step-by-step instructions for running CFOKit locally with Claude Desktop, importing your QuickBooks Online export, and reporting the result without sharing your data. The parsing is deterministic, but the model carries the parsed export to CFOKit’s tools, and the test instructions use Claude Desktop, so your export will pass through Claude.
-
Help define and refine the requirements. I’m far from a subject matter expert in accounting, so I’ve relied on outside sources to validate CFOKit, like the CPA exam problems above, and I haven’t found anything comparable for GAAP. Beyond that, think about what else a bookkeeper or controller does and what the bookkeeper skill should learn to do. Review the product vision, requirements, and decision records, and open an issue to correct, question, or propose something new.
-
Implement features and fix bugs. Over the next few weeks I intend to finish what I need to replace QuickBooks myself: a bookkeeper skill that can create a new entity, import and reconcile my QuickBooks Online export, sync and post my account transactions, manage invoicing, and run basic reports. Pull requests are welcome for any of it. For anything larger than a bug fix, open an issue first so we can agree on the approach.
Follow CONTRIBUTING.md to get started.
Sources: U.S. Bureau of Labor Statistics, Occupational Outlook Handbook, May 2025 wage data (bookkeeper median wage). NerdWallet, “Best Online Bookkeeping Services”, July 2026 (bookkeeping service starting prices). QuickBooks Community, June 2024 (Intuit staff on turning off ads). TechCrunch, “Bench to be acquired after abruptly shutting down”, December 2024 (Bench shutdown).