US Tax Workflow Base Skill v0.2
General reference only. This skill is general tax/accounting reference material for AI-assisted workflows. It has not been reviewed for any specific person's facts, documents, elections, deadlines, residency, filing status, or local procedures. Do not rely on it to file, pay, amend, or take a tax position without review by a qualified professional in the relevant jurisdiction.
What this file is, and what it is not
This file contains workflow architecture only. It defines how Claude should approach a US federal income tax classification or computation task for a sole proprietor or single-member LLC: the order of operations, how to handle ambiguity, what to produce as output, what to check before delivering, and what situations to refuse. It contains no tax rates, no dollar thresholds, no form line references, no deduction rules, no depreciation schedules, no year-specific figures of any kind.
This file must always be loaded with at least one content skill. Content skills provide the actual federal tax rules and the current year's figures: us-sole-prop-bookkeeping for transaction classification, us-schedule-c-and-se-computation for the bottom line, us-form-1040-self-employed-positions for QBI and retirement contributions, us-quarterly-estimated-tax for safe harbor and 1040-ES mechanics. This file alone cannot produce any tax output. Loading it without at least one content skill is a configuration error and Claude must refuse to proceed.
This file is the contract. When a content skill says it conforms to v0.1 of this base, what it means is: it fills the slots specified in Section 7, it produces outputs in the format specified in Section 3, its computations and classifications can be validated by the self-checks in Section 5, it respects the global refusal catalogue, and it participates in the workflow in Section 1.
The reviewer assumption. This base is built for a product where every output is reviewed and signed off by a human professional in good standing under Treasury Department Circular No. 230 — most commonly an Enrolled Agent (EA), but a CPA or attorney is equally acceptable. The reviewer is the immediate consumer of the skill output, not the taxpayer. The reviewer is responsible for the final return. The skill's job is to do mechanical and well-documented preparation work that makes the reviewer's job fast, accurate, and defensible. The skill is not the preparer of record. The reviewer is.
Section 1 — The workflow (read this first, follow exactly)
You are helping prepare US federal income tax work for a sole proprietor or single-member LLC. The output will be reviewed by a human credentialed under Circular 230 (most commonly an Enrolled Agent) before any tax position reaches the taxpayer or any return is filed. Your job is to do the mechanical classification and computation work, document it transparently with primary source citations, flag every uncertainty, and produce a working paper plus a reviewer brief that makes the human reviewer's job fast and accurate.
Execute these eight steps in order. Do not skip. Do not reorder. Do not start classifying or computing before step 4.
Step 1 — Confirm the companion content skills are loaded
This workflow base requires at least one content skill loaded alongside it. The expected content skills are:
us-sole-prop-bookkeeping— transaction classification into Schedule C line itemsus-schedule-c-and-se-computation— Schedule C aggregation and Schedule SE computationus-form-1040-self-employed-positions— QBI deduction, retirement contributions, self-employed health insurance, the rest of the 1040 positions for sole propsus-quarterly-estimated-tax— safe harbor computation and Form 1040-ES mechanics
If no content skill is loaded, stop and tell the user: "I need at least one US tax content skill loaded alongside this workflow base. Which task are you working on — bookkeeping classification, Schedule C and SE computation, federal 1040 positions like QBI, or quarterly estimated tax?" Do not proceed without at least one content skill.
If the user's request crosses content skill boundaries, confirm which content skills are loaded and proceed with the ones you have. If a needed content skill is missing, name it explicitly and ask the user to load it.
Step 2 — Read the data
The user will provide some combination of: a bank or card statement (CSV, PDF, or pasted text), a prior-year tax return, a list of fixed assets, retirement account statements, or a verbal description of their situation. Read every line of every document. Do not skim. Identify:
- The tax year being worked on (this is the single most important fact — every threshold, rate, and figure depends on it)
- The period covered by any transaction data (must align with a calendar year for sole props on a calendar tax year, which is the default)
- The currency (must be USD; flag any foreign currency line as a refusal trigger unless explicitly converted with documentation)
- The number of transactions
- Any obvious format problems (missing columns, truncated data, unreadable encoding)
- Any documents the user referenced but did not actually attach
If the data is unreadable, in a foreign currency without conversion, or appears to span more than one tax year without clear delineation, stop and tell the user before proceeding.
Step 3 — Infer the taxpayer profile from the data
Before asking the user any onboarding questions, attempt to infer the taxpayer profile from whatever data was provided. Look for:
- Entity type signals. Bank account in personal name → likely bare sole prop. Bank account in an LLC name → likely SMLLC, ask which state the LLC is registered in. Multiple owner names on transfers → possible partnership, refer to refusal catalogue. W-2 wages paid to the owner from the business → possible S-corp, refer to refusal catalogue.
- Tax year and filing period. First and last transaction dates. Filename if helpful. The tax year drives every figure downstream — never proceed without knowing it.
- Filing status signals. Joint accounts with a spouse → possibly MFJ. Dependent-related expenses (childcare, school fees) → possibly head of household or joint with kids. Do not infer filing status from these signals alone — confirm explicitly.
- State of residence and state of business activity. Bank branch locations, recurring local supplier addresses, state tax payments to specific state revenue departments. Multi-state activity is a refusal trigger.
- Business activity. Customer mix (recurring B2B invoices vs one-off vs consumer-looking), software stack (consulting toolkit vs e-commerce vs retail POS vs creative tools), travel patterns, presence of fixed office costs vs home office signals only.
- Other income signals. W-2 wages flowing in → has another job, affects withholding interaction with estimated tax. Investment income → may need to flag passive activity rules. Rental property → refusal trigger.
- Employees vs contractors. Wage payments through a payroll service (Gusto, ADP, Paychex, Rippling, OnPay, QuickBooks Payroll) → has employees, refusal trigger. Payments to individuals via Venmo / Zelle / check → likely contractors, flag for 1099-NEC obligation tracking.
- Retirement account activity. SEP-IRA, Solo 401(k), traditional IRA contributions visible in the data → retirement contribution computation will be needed downstream.
- Health insurance. Premium payments to ACA marketplace, COBRA, or private insurer → self-employed health insurance deduction may apply downstream.
- Cross-border activity. Foreign bank transfers, foreign vendor payments, foreign client receipts → refusal trigger.
- Crypto activity. Transfers to / from Coinbase, Kraken, Gemini, Binance.US, or any crypto exchange → refusal trigger.
- Maturity signals. Recurring monthly invoices from the same customers and a stable software stack suggest an established business. Sparse activity, ramp-up patterns, or many one-off transactions suggest a new or seasonal business. This affects how to interpret round-number transfers, owner injections, and unexplained gaps.
Produce a one-paragraph inferred profile. State it as a hypothesis, not a fact. Include the tax year explicitly.
Step 4 — Confirm the inferred profile (one round trip)
Output the inferred profile to the user as a one-paragraph summary, then prefer the ask_user_input_v0 tool to collect the confirmation as a single-select button, falling back to a markdown question only if the tool is unavailable.
When the tool is used, present the profile paragraph followed by a single-select question:
"Based on what you've provided, here is what I believe about your situation:
[One paragraph: tax year, entity type, state of residence and business, filing status if inferable, business activity, other income signals, employee vs contractor signals, retirement account signals, health insurance signals, cross-border footprint.]
Is this correct?"
Options: ["Confirmed, proceed", "Something is wrong, let me correct"]
If the user picks "Confirmed, proceed", advance to Step 5 immediately.
If the user picks "Something is wrong, let me correct", ask them to state the correction in free text, then re-confirm in one sentence ("Updated: [change]. Proceeding.") and advance.
Do not ask the full intake questionnaire at this stage — only the inferred profile confirmation. The intake (Section 4 of this base) comes immediately after this step but is structurally separate, because the intake is built up from binary and small-set questions that should also use the interactive tool, while the profile confirmation is a single yes/no decision.
If the data inference in Step 3 was unable to determine the tax year, entity type, filing status, state of residence, or any other field marked as essential by the loaded content skill, ask the missing items as part of this same round trip — using the interactive tool for any question that has a small fixed set of answers, and free text only for items like square footage or dollar amounts.
Step 5 — Run refusal checks
Before classifying or computing anything, check the confirmed taxpayer profile against the global refusal catalogue in Section 6 of this base AND the loaded content skill's topical refusal catalogue. If any refusal trigger fires, stop immediately, output the refusal message verbatim, and recommend the user consult a CPA or EA outside the platform. Do not attempt partial classification.
Step 6 — Do the work the content skill specifies
Hand control to the content skill. The content skill defines the actual work — what gets classified, what gets computed, what rules apply, what the current year's figures are. This base does not know any of that.
For every position the content skill takes, it must:
- State the position (the classification, the deduction amount, the computed tax, etc.)
- Show the source data (which transactions, which prior-year return line, which user-provided fact)
- Cite the primary source (IRC section, Treasury Regulation, IRS Publication, Revenue Ruling, Revenue Procedure, or current Form instructions). Citation discipline is mandatory under Section 8 of this base. No position is valid without a primary source citation.
- Note any uncertainty (if the position required judgment, say so explicitly and flag it for reviewer attention)
- Apply conservative defaults where data is missing (see Section 2)
Every transaction, every computation, every position MUST end up in exactly one of these states: cleanly resolved with a citation, resolved with a conservative default and a flag, or marked as out-of-scope and refused. No position may be silently asserted without a source. No transaction may be silently dropped.
Step 7 — Build the outputs
Produce three artefacts in this order:
- The Excel working paper (if the task involves transaction classification or asset depreciation). Follow the output specification in Section 3. Use the content skill's template for sheet structure. Use live formulas, not hardcoded values. Run the xlsx recalc script. Verify zero formula errors before presenting.
- The reviewer brief as markdown. Follow the template in Section 3.
- The chat response. A short summary of the bottom-line position, the structured question form (Section 4), and links to the files above via the
present_filestool.
Step 8 — Self-check before delivering
Before sending the chat response to the user, run the seventeen self-checks in Section 5 of this base. If any check fails, fix the output and re-run. Only deliver when all seventeen checks pass.
Section 2 — Conservative defaults
Every position you take falls into one of three states. There is no fourth state.
State A — Cleanly resolved. The data carries every fact you need, the content skill's rules apply unambiguously, and a careful reviewer reading the same sources would reach the same conclusion. State the position with its primary source citation. Do not narrate the rule. Do not flag for reviewer attention unless dollar magnitude alone warrants it (the content skill defines the threshold).
State B — Resolved with a conservative default. Either (a) the law is clear but the data does not carry a fact you need (business-use percentage, basis of an asset, contemporaneous mileage log), or (b) the public sources themselves are interpretive on this case. You MUST do all four of the following, in order, with no exceptions:
- State the ambiguity in one sentence in the reviewer brief.
- Apply the conservative default from the content skill — the option that costs the taxpayer more tax, never less.
- Cite the primary source for the rule that creates the ambiguity (so the reviewer can see what they are being asked to verify).
- Add the question to the structured question form (Section 4) so the user can resolve it on the one round trip allowed.
You may not silently apply a default. You may not ask without applying a default. You may not state a position without showing the rule it rests on. The four actions are linked.
State C — Out of scope, refused. The situation triggers a refusal under Section 6 of this base or under the content skill's topical refusal catalogue. Stop, output the refusal verbatim, recommend the user consult a credentialed professional outside the platform. Do not partially handle a refused situation.
Conservative defaults — universal principle. When uncertain about a federal income tax position, choose the treatment that costs the taxpayer more tax. The content skill specifies the concrete defaults for each ambiguity type. The principle is constant:
- Unknown business-use percentage of an asset → 0% business use, no deduction
- Unknown deductibility of an expense → not deductible
- Missing contemporaneous documentation for a §274(d) listed expense → not deductible
- Unknown whether income is reportable → reportable
- Unknown character of income (ordinary vs capital) → ordinary
- Unknown holding period → short-term
- Unknown basis of an asset → zero basis
- Unknown whether an activity is a business or hobby → hobby (no deductions against the income post-TCJA)
- Unknown whether an expense is ordinary and necessary → not deductible
- Unknown whether a prior-year election was made → not made
- Unknown depreciation method election → ADS straight-line
- Unknown whether a taxpayer is an SSTB for QBI purposes → SSTB
- Unknown filing status → single (highest tax in most cases)
- Unknown whether estimated tax payments were made → not made
The reviewer can correct an over-conservative position after the fact. The reviewer cannot easily recover from an aggressive position surfacing in audit three years later when the statute of limitations is still open.
The ordering principle. Conservatism in federal income tax means: more income recognized, fewer deductions taken, fewer credits claimed, longer recovery periods, higher rates assumed. When in doubt about which way is conservative, ask: which choice produces a higher tax liability? That is the conservative choice.
Section 3 — Output specification
Three outputs per task. All three are mandatory when their triggers apply (the working paper is required for any task involving transaction classification or asset depreciation; the reviewer brief and chat response are always required). Never produce one without the others.
Output 1 — Excel working paper
The content skill provides a sheet structure template. The base requires the following minimum:
Sheet "Transactions" — one row per source transaction (when classification work is being done), columns:
| Column | Content | Color convention |
|---|---|---|
| A | Date | Black |
| B | Payee / counterparty | Black |
| C | Description | Black |
| D | Amount (gross) | Blue (hardcoded input from source data) |
| E | Schedule C line / form line code | Black |
| F | Treatment label | Black |
| G | Citation (IRC §, Reg, Pub, Rev. Proc.) | Black |
| H | Default applied? (Y/N) | Black, yellow background if Y |
| I | Default reason if Y | Black |
| J | Reviewer attention flag? (Y/N) | Black, yellow background if Y |
| K | Reviewer attention reason if Y | Black |
| L | §274(d) item? (Y/N) | Black |
| M | Substantiation status (documented / pending / missing) | Black |
| N | Excluded? Reason if yes | Black |
Every transaction in the source data appears as one row. Excluded transactions have a reason in column N and zero in columns E, F. Default-applied transactions have "Y" in column H. Reviewer attention items have "Y" in column J.
Sheet "Schedule C Summary" (or task-equivalent summary sheet) — one row per relevant form line (the content skill provides the line list), with the total computed via =SUMIFS() formula referencing Sheet "Transactions" column E. Formulas, not hardcoded values. Use the xlsx skill's color conventions: black text for formula cells.
Sheet "Form Detail" (where applicable) — for tasks producing supporting form computations (Form 4562 for depreciation, Form 8829 for home office actual method, Form 8959 for Additional Medicare Tax, etc.), a sheet per form with the relevant line-by-line computation. Cross-sheet references in green text per xlsx convention.
Color conventions (from the xlsx skill):
- Blue text: hardcoded inputs from source data
- Black text: formulas
- Green text: cross-sheet references
- Yellow background: cells requiring reviewer attention (any row where a default was applied or a reviewer attention flag was raised)
After building the workbook, run python /mnt/skills/public/xlsx/scripts/recalc.py <filename> to recalculate all formulas and check for errors. If the output JSON shows errors_found, fix the errors and re-run until status is success. Only then present the file via present_files.
File location. Save to /mnt/user-data/outputs/<taxpayer-identifier>-<task>-<year>-working-paper.xlsx and present via the present_files tool.
Output 2 — Reviewer brief (markdown)
A short narrative document that gives the human reviewer the context they need to verify the working paper efficiently. Follow this exact template:
# US Federal Tax Work Product — Reviewer Brief
**Tax year:** [year]
**Taxpayer entity type:** [bare sole prop / SMLLC registered in [state]]
**Filing status (assumed for computation):** [single / MFJ / MFS / HoH / QSS]
**State of residence:** [state]
**State of business activity:** [state]
**Generated:** [date]
**Content skill(s) invoked:** [list of skills]
**Source data referenced:** [list of files / documents / facts the user provided]
**Underlying records seen:** [yes / no / partial]
## Scope of this work product
[One paragraph describing what this brief covers and what it does not. Be explicit about boundaries — e.g., "This brief covers federal Schedule C classification and Schedule SE computation only. It does not cover the QBI deduction, retirement contribution computation, self-employed health insurance, or any state income tax position. Those require separate work products from the corresponding content skills."]
## Bottom line
[The headline number(s) the reviewer needs to see first. Examples depending on the content skill:
- For bookkeeping: total Schedule C net profit before SE tax, with subtotals by Part II line group
- For Schedule C/SE: net SE earnings, SE tax, deductible half of SE tax
- For 1040 positions: QBI deduction amount, retirement contribution amount, total adjustments to income, projected federal income tax
- For estimated tax: required annual payment under safe harbor, per-quarter installment amounts, due dates]
State the bottom line in the units the reviewer expects to see on the form. Reference the form line where it will appear.
## High flags (review first)
[Items where the work required judgment AND has high dollar magnitude. Each flag is one to three sentences and includes:
- What was flagged
- Why it requires judgment
- The conservative default that was applied (if any)
- The dollar effect of the default
- What the user said when asked (if anything) — quoted verbatim if relevant
Order flags by dollar effect descending. The reviewer reads top-down and stops when they're confident.]
## Computation trail
[Show the work. Every line item, every computation, every figure. The reviewer must be able to reproduce every number from the data and rules cited. Use tables where they help.]
For every position taken, this section must show:
- The position (what was concluded)
- The source data (which transactions, prior-year line, user fact)
- The rule applied (cite primary source — IRC section, Treasury Reg, Pub, Rev. Proc., Rev. Rul., Form instructions)
- The dollar effect
## Conservative defaults applied
[A complete list of every position where a conservative default was applied, in dollar order. For each:
- The ambiguity in one sentence
- The default that was applied
- The cash impact of the default vs the alternative
- The source citation for the rule]
## Items requiring documentation
[Items where the position depends on documentation the reviewer needs to see before sign-off but the user has not yet provided. Examples:
- Mileage log substantiating vehicle business-use percentage
- Receipts substantiating §274(d) expenses (travel, meals over the threshold, gifts, listed property)
- Closing statement substantiating asset basis
- Prior-year return substantiating depreciation carryover or NOL
- 1099s received substantiating gross receipts
- W-9s collected from contractors paid >$600
Each item identifies who has it (the taxpayer in most cases) and what specifically is needed.]
## Refusal trace
[An explicit line-by-line trace of the refusal catalogue, showing each refusal code in Section 6 of the base AND the content skill's topical catalogue, with a one-sentence note on why each was cleared. Example:
- R-US-PARTNERSHIP: cleared, taxpayer is bare sole prop confirmed in step 4
- R-US-S-CORP: cleared, no W-2 wages paid to owner, no Form 1120-S history
- R-US-FOREIGN: cleared, no foreign accounts or foreign vendors in data
- R-US-CRYPTO: cleared, no crypto exchange transfers in data
- R-US-RENTAL: cleared, no rental property mentioned by user or visible in data
- R-US-MULTISTATE: cleared, all activity in [state]
- R-US-AUDIT: cleared, user confirmed no open IRS notices or audits in step 4
- (etc., for every refusal in both catalogues)
The trace is verbose but it makes refusal handling auditable rather than asserted. Without it, the reviewer has to take the model's word that the checks were done.]
## Scope limitations and disclaimers
[Standard boilerplate, customized to the content skill:
- This work product is a computation and classification aid prepared by an AI system under the supervision of the reviewing tax professional. The reviewing professional is responsible for the final tax positions, the accuracy of any return filed, and all communications with the taxing authority.
- This work product covers federal tax positions only unless explicitly stated otherwise. State and local tax positions require separate analysis.
- This work product is based on the source data provided by the taxpayer and accepts that source data as accurate. The reviewing professional is responsible for verifying source data accuracy.
- Tax law is current as of [content skill version date]. Subsequent legislation, regulations, rulings, or court decisions may affect any position in this brief.
- Any position requiring judgment is flagged in the "High flags" section above. The conservative default has been applied where flagged. The reviewer may take a different position after considering facts not available to the AI.]
Output 3 — Chat response
A short message (no more than 10 lines of prose, plus structured elements) containing:
- A one-sentence statement of the bottom-line result
- The structured question form from Section 4 (if not already completed in step 4)
- The number of reviewer attention flags raised, with the dollar magnitude of the largest
- The number of refusals checked (cleared vs fired)
- Links to all files produced via the
present_filestool
No tax content in the chat response itself beyond the headline number. Everything substantive lives in the brief.
Section 4 — The structured question form
Per the conservative defaults rule (Section 2), every ambiguity that drove a conservative default must produce a question. Per the workflow (Section 1), the user gets exactly one round trip to answer questions. The structured question form is how those questions are presented.
Tool preference: Whenever a question has a small fixed set of answers (binary yes/no, single-select from 2-4 options, multi-select from a short list, ranking), prefer the ask_user_input_v0 tool over markdown text. The tool renders interactive buttons that are dramatically faster to answer than typing — especially on mobile, where the user is most likely answering. Use markdown text only for free-text answers (square footage, dollar amounts, descriptive details) and for lists that don't fit the tool's constraints. The tool caps at 3 questions per call, so a long intake becomes several tool calls within the same round trip. This is fine and expected.
The intake is split into two tiers because volume matters and refusal-driven questions should come first:
Tier 1 — Essential to start (ask before any classification or computation)
These questions determine whether the engagement can proceed at all and which content skill rules apply. Ask Tier 1 in Step 4 of the workflow, alongside the inferred profile confirmation. If any answer fires a refusal in Section 6, stop in Step 5 and refuse — do not waste the user's time on Tier 2 questions for an engagement that's about to be refused.
Tier 1 questions are nearly all binary or small single-select, so almost every question uses the interactive tool. Group them by topic into 3-question batches:
Batch 1 — Tax year and identity
- Tax year being prepared (single-select if multiple plausible, free text only if no inference possible)
- Entity type: bare sole proprietor / single-member LLC (single-select)
- Filing status: single / MFJ / MFS / HoH / QSS (single-select)
Batch 2 — Scope and refusal triggers
- State of residence at year-end (single-select if inferable, free text otherwise)
- Business activity in one sentence (free text or confirm inference)
- Multi-state business activity (Y/N — fires R-US-MULTISTATE if Y)
Batch 3 — Refusal-trigger sweep (multi-select) Single multi-select question: "Tick any that apply to the taxpayer in this tax year:"
- Has employees on payroll (W-2 wages paid by the business)
- Has cryptocurrency activity (any buying, selling, mining, staking, receiving as payment)
- Has rental real estate income or property
- Has investment income beyond simple bank interest and qualified dividends from a single domestic brokerage account
- Has K-1 income from a partnership or S-corporation
- Has foreign bank accounts or foreign income
- Sold a home, business, or major asset during the year
- Got married, divorced, or experienced a death in the family during the year
- Has open IRS notices, audits, or unfiled prior-year returns
- Has any prior-year carryover (NOL, capital loss, charitable, §179, home office, §195 amortization)
- Claimed or is claiming the Employee Retention Credit
- None of the above
Any tick other than "None of the above" potentially fires a refusal in Section 6. The model checks each ticked item against the catalogue and either fires the refusal in Step 5 or, where the catalogue allows nuance (e.g., R-US-INVESTMENT-INCOME has a de minimis exception), asks a follow-up to determine which side of the threshold the situation falls on.
Batch 4 — Engagement scope (single-select)
- "Is this engagement scoped to Schedule C and Schedule SE only, or does it include downstream items like the QBI deduction, self-employed health insurance, retirement contribution computation, and quarterly estimated tax?"
- Options: ["Schedule C and SE only", "Full federal sole prop including downstream items", "Schedule C only, SE deferred to companion skill"]
This question determines which downstream content skills should also be loaded. If the user picks an option requiring a content skill that is not currently loaded, the model asks the user to load it before proceeding past Step 5.
Tier 2 — Essential before delivery (ask after Tier 1 clears refusal checks)
These questions are needed to produce a non-degenerate work product but are not refusal triggers. Ask Tier 2 after Step 5 (refusal checks) clears, before Step 6 (the actual classification or computation work). The content skill specifies the exact Tier 2 questions; the base requires only that they exist and that the interactive tool is preferred where applicable.
Tier 2 questions typically include:
- Home office details (Y/N, square footage, method election)
- Vehicle details (Y/N, mileage log, business miles, total miles, first-year method election)
- Capital purchases over the de minimis threshold
- De minimis safe harbor election (Y/N)
- Contractor 1099-NEC status (W-9 collected Y/N)
- Prior-year return availability and carryovers
- 1099 forms received (for gross receipts cross-check)
- Business gifts, hobby loss history, at-risk status
Many of these are binary yes/no and use the interactive tool. The free-text ones (square footage, mileage, dollar amounts) use markdown.
Defaults-driven questions (the original Section 4 form)
In addition to the Tier 1 and Tier 2 intake, the conservative defaults discipline (Section 2) generates its own questions during the classification work itself: any time a default is applied, a question is added to the form so the user can confirm or correct on the one round trip. These defaults-driven questions are presented at the end of the work, alongside the deliverables, and follow the same tool-preference rule.
When the volume of defaults-driven questions exceeds 10, group them by category and ask one question per category, not one per transaction. ("The 8 fuel transactions at Shell Oil totalling $X — is the vehicle..." not eight separate questions.)
Use this exact template for the defaults-driven question form (when the interactive tool isn't a fit, or as a fallback):
## Questions for the user (one round trip)
Below are questions where the data did not give me a clear answer. I have applied the conservative default for each, but if you can confirm or correct, the reviewer's job becomes faster. **Please answer in one batch — I will not ask again.**
### Group A — High cash impact (please answer first)
1. **[Question]** [Current default applied: X. Alternative if you confirm differently: Y. Estimated tax impact of the swing: $Z.]
2. **[Question]** [Current default: X. Alternative: Y. Impact: $Z.]
[...]
### Group B — Medium cash impact
[...]
### Group C — Low cash impact, but worth confirming
[...]
### Documentation the reviewer will need (you do not need to answer these now, but please collect them for your reviewer)
- [Specific receipt 1]
- [Specific document 2]
- [...]
Rules for the form (apply to both Tier 1, Tier 2, and defaults-driven):
- One round trip per conversation. Tier 1 and Tier 2 may be presented in separate batches within the round trip, but the user is not asked to come back later for more questions.
- Pre-fill with the model's best guess. Every question states the current default and the alternative. Users correct anchored guesses much more readily than they generate answers from scratch.
- Quantify the swing on defaults-driven questions. Every defaults-driven question includes a rough cash-impact estimate so the user knows which answers actually matter. A $5 impact and a $5,000 impact should not be presented identically.
- Separate user-answerable from documentation-required. Questions only the user can answer go in the question form. Documents the reviewer needs go in a separate list at the bottom — do not pretend the user can produce them verbally.
- Maximum 10 defaults-driven questions across all groups. If more than 10 defaults were applied, group them by category and ask one question per category.
- No questions about things the data already answered. If the data revealed it, do not ask. Step 3 of the workflow exists to prevent this.
- Prefer the interactive tool over markdown for any question with a small fixed answer set. Fall back to markdown only for free text and lists that don't fit the tool.
If you are tempted to add an eleventh defaults-driven question, ask yourself whether the cash impact justifies the user's attention. If not, apply the default and disclose. If yes, drop a lower-impact question to make room.
Partial answer handling
If the user answers some intake questions and not others, re-ask only the unanswered ones, prioritized by impact on refusal triggers first and then by dollar magnitude. Do not start over. Do not re-ask answered questions. Do not ask all the unanswered ones at once if a Tier 1 refusal-trigger answer would change which Tier 2 questions are needed — re-ask Tier 1 missing items first, then Tier 2 if the engagement is still proceeding.
Section 5 — Self-check before output
Run these seventeen checks against your draft output before sending the chat response. If any fails, fix the output and re-run. Do not deliver work product that fails any check. These checks are deterministic — they catch errors of execution, integrity, discipline, and refusal handling. They are necessary but not sufficient. They are the cheapest reliability gain in the workflow and they must all pass.
Structural integrity checks (always run first)
Check 1 — Tax year is stated. The reviewer brief states the tax year explicitly in the header. Every figure in the brief is for that tax year. Cross-year figures (prior-year tax for safe harbor, prior-year carryovers) are labeled with their year.
Check 2 — Entity type is stated and in scope. The reviewer brief states whether the taxpayer is a bare sole prop or an SMLLC, and (if SMLLC) the state of registration. The entity type is one of the in-scope types. If it is anything else, the refusal in Section 6 should have fired in Step 5.
Check 3 — Filing status is stated. The reviewer brief states the filing status used for any computation that depends on it (QBI thresholds, additional Medicare tax thresholds, standard deduction). If the content skill made a default assumption because the user did not confirm, the assumption is flagged in the high-flags section.
Check 4 — Completeness. If the task involved transaction classification, every transaction in the input source data appears exactly once in the working paper, either classified or excluded with a reason. Count the rows in the input CSV; count the rows in Sheet "Transactions" of the workbook; they must match. If the CSV has 159 lines, Sheet "Transactions" must have 159 data rows. No silent drops.
Check 5 — Recalc ran successfully. If a working paper was produced, you ran python /mnt/skills/public/xlsx/scripts/recalc.py <filename> against it and the JSON output shows status: success with total_errors: 0. If recalc was skipped or returned errors, the working paper is not deliverable. Re-run and verify.
Citation discipline checks
Check 6 — Every position has a primary source citation. For every line in the computation trail, the brief cites a primary source: an IRC section, a Treasury Regulation section, a current IRS Publication with publication number, a Revenue Procedure or Revenue Ruling number, or current Form instructions with form number and year. "IRS guidance" or "the regulations" without a section is not acceptable. Spot-check at least five citations chosen at random — they must point to identifiable primary sources.
Check 7 — Citations are year-appropriate. Citations to Publications, Revenue Procedures, and Form instructions reference the version applicable to the tax year being prepared, not the version current at the date of preparation. (For example, a 2025 return relies on Pub 334 for 2025, not Pub 334 for 2024.) If the content skill cannot confirm year-appropriateness, the citation includes a footnote.
Check 8 — No invented citations. Every citation refers to a source that actually exists. Do not cite a Revenue Procedure number that you are uncertain about. Do not cite a Treasury Reg section without confirming the section exists in the form cited. If you are unsure whether a source exists, cite the IRC section that the regulation interprets and flag for reviewer verification.
Cross-document consistency checks
Check 9 — Default disclosure matches working paper. Every transaction with "Y" in column H of Sheet "Transactions" (default applied) has a corresponding line in the "Conservative defaults applied" section of the reviewer brief. Count them on both sides. They must match exactly. If the working paper has 9 defaults flagged and the brief lists 8, there is one default missing from disclosure.
Check 10 — Question coverage. Every ambiguity that drove a default has a corresponding question in the structured form, OR is in the "Documentation the reviewer will need" list, OR is grouped with other transactions of the same category under one question. No ambiguity item is silently absent from all three.
Check 11 — Bottom line is consistent across documents. The bottom-line figure in the chat response matches the bottom-line figure in the brief, which matches the supporting working paper if one exists. If they differ, fix the discrepancy before delivering.
Conservatism, scope, and refusal checks
Check 12 — Conservative defaults are actually conservative. For every default applied, the chosen treatment costs the taxpayer more tax than the alternative. The "conservative" label is not used for treatments that happen to favor the taxpayer (those are not defaults, they are positions). If a default would reduce the taxpayer's tax liability, it is misclassified — fix it.
Check 13 — Scope is respected. No position in the brief addresses anything outside the federal sole prop scope. State income tax is not computed. Partnership-level positions are not taken. S-corp positions are not taken. Foreign positions are not taken. If the content skill produced any out-of-scope output, strip it before delivery and add a note that the out-of-scope item was refused.
Check 14 — Refusal sweep with named codes. The reviewer brief contains an explicit refusal trace listing every refusal R-code from this base's catalogue (Section 6) AND
…(truncated)