About
Tax Prep Ledger, TP Ledger for short, is a local-first desktop app that assembles, ties, and proves a tax return’s workpapers. Tax software calculates the return. TP Ledger explains it. Every number on the return should have somewhere to point, and this is where it points.
It is for CPA and EA preparers in small firms doing closely held 1120-S returns paired with the owner’s 1040, federal only for now.
- An evidence graph, not a folder. Documents, trial-balance imports, and prior-year returns are immutable source versions. Facts are revisions with provenance back to their sources. Confirmation is a separate human event.
- Trial balance to return lines. Import a LedgerTB close package or a generic CSV, group accounts into return lines, and keep an M-1 book-to-tax register with sourced support.
- The K-1 bridge. The entity engagement issues a versioned K-1, and the owner engagement receives exactly that issuance. Carryovers roll forward.
- Draft-return compare. Import the tax software’s draft PDF, key the observations, compare supported versus draft, resolve differences, then sign off in a two-step, human-only assertion.
- Master-file export to a numbered folder that LedgerPDF can ingest.
Status: private alpha, no installer, no release. The site is live at tpledger.com. A synthetic end-to-end demo passed in August 2026. Nobody, including me, has completed a real engagement on it yet.
Where it fits. TaxClaw computes a return with a real engine. Tax Prep Ledger will never calculate a return; the no-calc boundary is the product. LedgerTB is one trial-balance source upstream. LedgerPDF renders the marks downstream. TP Ledger owns what must tie to what.
How I built it
Founded in a single Claude Code session on 2026-08-12: a three-round brainstorm, an adversarial critique by a second model, and a merged position that became the doc set. The critique produced the evidence-graph abstraction.
- Production tier from my own build kit. Because tax documents are taxpayer data, it started with a risk register, a data-security review, and a decision log before the first screen.
- A sibling of LedgerTB. It lifts LedgerTB’s encryption, assistant dial, audit trail, and release machinery nearly verbatim, so the second product cost far less than the first.
- No model inside the app. The MCP server speaks stdio only. The app opens no network listener and chooses no model. Data reaches a hosted model only if the professional connects a client and turns the dial to propose.
- Agents can insert, never update. Proposals land in separate staging tables. Confirmations, assertions, and sign-off are never grantable to an agent.
- Seventy-six agent branches and thirty-four merged pull requests in three weeks, with two independent takes on every logged decision.
