← Back to Blog

Applied AI

No Model Sees My W-2s

August 30, 2026

No Model Sees My W-2s

Every year, tax season means the same tedious ritual: gathering statements, sorting transactions, and digging up the right forms. Then it gets harder, figuring out which deductions actually apply, and estimating what's owed net of what's already been paid. Almost all of that effort happens before any of it reaches an accountant. It's exactly the kind of narrow, recurring, well-defined annoyance worth pointing an AI project at, instead of building something impressive-sounding with no real user besides a demo audience.

So I built one, for myself, using Claude Code. It ingests financial statements, transactions, and tax forms, walks through deduction inputs, and produces a structured packet ready for accountant review: a line-by-line federal estimate — wages through credits down to a single owe/refund figure. Every simplifying assumption is stated explicitly instead of buried (which credits are computed vs. entered, which thresholds aren't modeled), and an open-items list flags what's still uncategorized, undecided, or unanswered before the packet is complete. It's the document I used to assemble by hand every spring.

The one non-negotiable design decision: the documents going in are financial statements and tax forms, about as sensitive as personal data gets. So the parts that touch the actual documents don't run through any model at all. W-2s, 1099s, and 1098s get read with deterministic text extraction and OCR, then parsed with regex against known form layouts. The only place a model enters the pipeline is categorizing transactions afterward, matching a vendor name and amount to a tax category. This is optional and swappable, starting with a rule pass, then the choice to engage a local model instead of a cloud API if I want the assist.

That also shapes what the tool is allowed to claim. It estimates liability. It doesn't file anything and every number is scoped as accountant-review input, instead of being treated as a final answer. I continue to hand-check everything it produces before it goes anywhere near my accountant, which is less a limitation than the point of scoping it for review in the first place.

It's not a product and wasn't intended to be. It's an example of how an AI side project can be something genuinely useful, built for an audience of one, and solves a really annoying problem.