GAAPcore · private preview
Let your agents build the app. GAAPcore keeps the books.
And the database refuses anything that would make them wrong.
GAAPcore is a headless US-GAAP accounting core on PostgreSQL. It has no screens. Your app sends it business documents (invoices, bills, receipts, shipments, depreciation runs), and it turns them into journal entries, inventory layers and financial statements. Or it refuses, and tells you why.
I'm Bill Chappell. I built GAAPcore by directing coding agents, and I'm looking for a few developers who build business software the same way and want to try it on something real.
Private preview; open source is the plan.
The database says no
The accounting rules run inside PostgreSQL, as triggers and checks at commit. Every caller goes through them: your console, an import script, an agent that guessed wrong. These are real messages from the schema. The document numbers and amounts are examples.
| Row | The app tries to | PostgreSQL answers |
|---|---|---|
| 1 | Post a journal entry with $1,000.00 of debits and $990.00 of credits | journal entry JE-0042 must balance (debits 1000.00, credits 990.00, lines 2) |
| 2 | Date an invoice into September after September was closed | invoice INV-1093 date 2026-09-28 falls in a closed fiscal period |
| 3 | Post a manual journal line straight to the bank's cash account | account 1010 is subledger-backed or bank cash and is restricted (C5) |
| 4 | Ship stock at its old cost while a write-down of that cost layer commits | goods issue GI-0311 take costs 5.00 but the FIFO rule gives 4.50 (SG-056) |
| 5 | Repay an intercompany advance on a date before the advance existed | INTERCOMPANY_REPAYMENT_EXCEEDS_BALANCE: the balance Acme Sales owes Acme Manufacturing falls below zero on 2026-10-20 (S-101 item 4, SG-315) |
| 6 | Capitalize more interest into a building project than the loan actually charged | CAPITALIZED_INTEREST_EXCEEDS_INCURRED: capitalization CI-0003 amount 1200.00 is more than the 950.00 of interest incurred in its window (S-079 item 5, TX-196 D4) |
The codes in parentheses point to the written spec or the numbered gap behind each rule.
A console can have bugs and still never leave the books wrong. The worst outcome is a refusal that your screen shows to the user.
From the builder's guide, section 2.
How the pieces fit
Four parts, and only one of them talks to the books. The browser never holds a key. Your server calls GAAPcore as one registered application, called a writer, and every row it creates is stamped with that writer.
- your screens
- session cookie only
- no GAAPcore key
- signs people in
- holds the writer key
- enforces your approvals
- knows applications
- authenticates the key
- idempotent writes
- the books
- enforces the rules
- or refuses
The console keeps its own database for people, sessions, approvals and the audit trail, under a different login. Neither side can read the other's data.
Where it stands
As of 2026-11-10, schema v107. Counted from the repository by npm run refresh.
What it covers
US GAAP, for companies that buy, make, stock and sell things. Ten areas, one spec per transaction type. See every transaction type and the known limits.
| Area | Types | For example |
|---|---|---|
| Foundations | 26 | chart of accounts, journals, period close, opening balances, multi-currency, intercompany |
| Sales and receivables | 21 | orders, invoices, receipts, credits, returns, dunning, credit losses, rebates |
| Purchasing and payables | 18 | receipts, bills, payments, approvals, discounts, purchase tax, rebate accruals |
| Inventory | 18 | FIFO layers, transfers, cycle counts, units, write-downs, intercompany stock |
| Fixed assets | 14 | depreciation, impairment, disposals, held for sale, capitalized interest |
| Reporting | 12 | trial balance, statements, cash flow, notes, consolidation, translation |
| Production | 7 | component issues, finished goods, WIP, labor and overhead, variances |
| Banking | 6 | bank transactions, transfers, reconciliation, foreign-currency accounts |
| Leases | 6 | lessee leases, modifications, terminations, right-of-use impairment |
| Tax | 1 | sales and use tax by jurisdiction and effective date |
See it run
The reference console runs the books of Lantern Hill Coffee Roasters, a made-up roaster with a sister café: purchasing, roasting, wholesale and online sales, banking, equipment, leases, the month-end close and consolidation.
A coding agent built it, working only through GAAPcore's API. The builder's guide is what that build taught us.
Ask your agent
Point your coding agent at chappellai.us/llms.txt and ask whether GAAPcore fits your app.
Field notes
The first notes are on their way.
Request access
The code is in a private repository for now. If you build with coding agents and have a real app where money or goods move, tell me what you're building and I'll add you as a reader.
I read every request myself, and I reply by email.
If you'd rather have a console built for you, that's possible too.