Summary
Status. The prepare, review and examine stages run in the engine today on synthetic companies. The persisted findings table, versioned pre-flight checks, the resolver and the five termination conditions described below are in development.
When we prepared four corporate returns by hand with a frontier model, none was finished in one pass. One needed more than seven rounds of prepare → review as an IRS examiner → fix → review again before it was defensible. Each review round surfaced errors the preparation pass had missed, usually with several defensible ways to resolve each one.
Two conclusions follow, and they pull in opposite directions. The loop is the product: a single-pass return is not a finished return, and any design that treats review as a final checkbox will ship wrong returns. And most of the loop is waste: much of what an examiner catches is not judgment at all but a rule that could have been checked in code. This paper describes how NGTAX.AI keeps the loop and how it continuously moves work out of it.
Four roles, defined by what they see
Each agent is defined less by its instructions than by its inputs.
Preparer. Receives the trial balance, the chart of accounts with tax-line mapping, the prior-year return, the entity's standing facts and the open findings from the previous round. Produces or revises the return and a position record for every judgment call: the treatment, the authority, the confidence. It never computes; every figure comes from the tax engine.
Examiner. Adversarial. Its job is to find what is wrong, the way an examining agent would. It sees the completed return, the trial balance, the prior-year return and the entity facts. It does not see the preparer's reasoning, positions or confidence. It emits findings. It does not fix anything.
Resolver. Takes one finding at a time and produces two to four resolution options, each with its supporting authority, its effect on the return and its risk. It does not choose.
CPA. Chooses. The choice, the person and the rationale are recorded on the finding. In the persisted findings table now in development, a resolution without a human actor is rejected by the database itself, not discouraged by policy.
Why isolation is the whole point
An examiner shown the preparer's justification grades the justification. An examiner shown only the return examines the return. If the two share context, the review stops being independent and the loop stops catching anything — the examiner is persuaded by the same reasoning that produced the error.
In the engine today, the examiner's input is assembled from the return, the books and the documents only; the preparer's rationale and confidence are never included. We are now making that a property of the type system: the examiner's input type will have no field for the preparer's reasoning, positions or confidence, so passing them is not forbidden but impossible, and an acceptance test plants a sentence in the preparer's rationale and fails the build if it appears anywhere in the examiner's request.
This is a stronger guarantee than a prompt that says "ignore the preparer's notes", and it is the guarantee a reviewing partner would ask for of a human team: the person checking the work should not be the person who did it, and should not be handed the conclusion first.
Findings are records, not chat
A finding is a structured row: its class (balance, classification, election, book-to-tax, form omission, calculation, disclosure, position), its severity (blocking, material, advisory), the form line and ledger accounts it touches, the amount in dispute, the authority, the resolution options and, once resolved, who chose what and why.
Three consequences matter:
accepted_riskis a real outcome. Some findings are resolved by deciding the position is defensible and documenting why. That is a filing decision, and it is what a workpaper is.- The loop is resumable. Because findings persist, a cycle can stop overnight, be reviewed by a different person, and continue.
- Every finding becomes a regression test. A resolved finding and the return that produced it form a golden-file case. The test suite only grows.
Pre-flight before any model
Before the preparer or examiner runs, versioned deterministic checks run over the ledger and the return: Schedule L balances; Schedule M-1 ties to book income and to line 28; estimated tax instalments reconcile to payments; forms required by the facts are attached. Three reasons, in order:
- Coverage. A rule catches its error on every return. A model catches it on most.
- Cost. An error caught in pre-flight costs nothing in model time.
- Focus. An examiner handed twelve mechanical errors spends its attention on them and misses the one position question that matters.
The version of every check a return passes is recorded in its provenance. A check that changes is a change to every return prepared after it.
When the loop stops
The loop ends on the first of five conditions:
| Condition | Outcome |
|---|---|
| No open findings at material severity or above | Converged — goes to CPA review |
| Finding count not decreasing across two consecutive rounds | Escalate — the problem is upstream |
| A finding reappears after being resolved | Escalate — the fix is not working |
| Round limit reached (default 12) | Escalate with the full cycle attached |
| A blocking finding survives resolution | Escalate |
Non-convergence is a diagnosis
A return still producing findings at round ten usually has a ledger problem, not a return problem. So an escalation is not a shrug; it carries a diagnosis computed from the surviving findings — which accounts they cluster on. A preparer then fixes the books instead of iterating on the return.
The share of returns escalating for non-convergence is an operational metric. It should fall as the check library grows (paper 4).
The floor is one examiner pass
As deterministic checks absorb the mechanical findings, rounds per return fall. They should not fall to zero. One independent examiner pass stays on every return permanently, because its job is the finding no rule anticipated. That pass is the difference between a cheap tool and a defensible one.
What we have not yet measured
Two examiner passes on the same return will not produce identical findings. Whether to run two and take the union — better coverage at double the cost of the most expensive step — is an empirical question for our evaluation harness, which scores agents blind against hand-worked returns with planted errors. We will publish those results when they exist, with numerators and denominators, and not before.