Tax Season Organizer
Framing: This skill produces prep material for a CPA, not tax advice. Say so early
and state every assumption explicitly so the accountant can adjust.
Quick start
Determine which mode the user needs, pull the relevant data, calculate or compile,
and deliver a structured document the accountant can work from directly.
User: "what do I owe for estimated taxes this quarter?"
→ Pull YTD P&L from QuickBooks
→ Calculate estimated federal income tax + SE tax
→ Subtract payments already made this year
→ Show Q-specific amount due with due date and assumptions stated
→ Output: "Estimated Q2 payment due June 16: $X — see full breakdown below"
User: "I need to send out 1099s"
→ Pull all contractor/vendor payments from QuickBooks + PayPal + Stripe
→ Identify contractors paid ≥ $600 YTD
→ Flag records missing W-9 / EIN
→ Output: 1099-NEC candidate list + missing W-9 action list
Determine mode
Read the user's message and context to decide which path applies:
- Quarterly estimate — keywords: estimated payment, quarterly taxes, how much to set aside, safe harbor, Q1/Q2/Q3/Q4
- Year-end 1099 prep — keywords: 1099, 1099-NEC, year-end, contractors, W-9, send 1099s, file 1099s
- Combined — some users will ask "year-end summary" and need both. Run quarterly last; run 1099 prep first since it drives the most action items.
If the intent is ambiguous, ask: "Are you looking at your estimated tax payment for this quarter, or are you preparing 1099s for your contractors — or both?"
Path 1: Quarterly estimated tax
1. Pull YTD financials
Use QuickBooks to pull a Profit & Loss report from January 1 of the current year through the last day of the most recently completed quarter. Capture:
- Gross revenue (total income)
- Total expenses (operating expenses, COGS, etc.)
- Net ordinary income = revenue − expenses
If QuickBooks is not connected, ask the user to upload a P&L as CSV or paste the key numbers. For field names and query approach, see reference/connector-queries.md.
2. Ask about prior estimated payments
Before calculating, ask: "How much have you already paid in estimated taxes so far this year?" If the user doesn't know, note that you'll calculate total liability — they can subtract payments themselves or check with their accountant.
3. Calculate estimated liability
See reference/calculation-assumptions.md for the full math and the assumptions table you must include in output.
Short version:
- SE tax = net profit × 0.9235 × 0.153 (then halve it — the deductible half offsets income)
- Adjusted net = net profit − (SE tax / 2)
- Federal income tax = apply the bracket rate appropriate to the user's business type and estimated annual income (default to 22% unless the user tells you their bracket; note this assumption explicitly)
- Total annual liability = federal income tax + SE tax
- Quarterly payment = (total annual liability − payments made) ÷ quarters remaining
- Safe harbor check — note whether the user should verify against prior-year tax (100% of prior year, or 110% if AGI > $150k)
4. State assumptions and deliver output
Use this output structure:
Structure the output as a document with these sections in order:
Header — H2 with "Estimated tax summary" followed by the quarter and year.
Subline: prepared date and "For review by your accountant."
YTD snapshot — Bold lines showing YTD net profit with date range,
estimated annual net profit (annualized from YTD), and assumed business type
(sole proprietor, S-corp, etc. — flag as assumed, not confirmed).
Self-employment tax — Show the SE tax calculation: net profit times
92.35% times 15.3%, and the deductible SE half.
Federal income tax estimate — Adjusted net income, assumed bracket
(default 22%, note to confirm with accountant), and the federal estimate.
Total estimated annual liability — SE tax plus federal income tax.
Quarterly payment — Total liability minus payments already made, divided
by quarters remaining, with the specific dollar amount due and the due date.
Safe harbor note — Remind the owner to ensure total payments meet 100%
of prior-year tax (or 110% if AGI exceeded $150k).
Assumptions — Bullet list of every assumption: bracket rate, business
structure, state taxes excluded, deductible SE half included, and deductions
not applied (home office, QBI, depreciation).
Path 2: Year-end 1099 prep
1. Pull contractor payments from all sources
Query each connected source for all payments made to individuals or businesses for services in the tax year. Do not include payments for goods, refunds, or internal transfers.
QuickBooks — try live connector first, fall back to CSV if needed:
Try live connector. Attempt to pull vendor-level payment records via the QuickBooks MCP. If the connector returns individual payee records with name, amount, and account category, use them directly and skip the CSV step.
Detect aggregate-only response. If the MCP returns only category-level totals (e.g. "Contract labor: $7,500" with no payee breakdown), the connector does not yet support vendor-level queries. In this case, prompt the user:
"QuickBooks returned summary data only — I need payee-level detail to build your 1099 list. Please export a Transaction List by Vendor report (QuickBooks → Reports → Expenses → Transaction List by Vendor, filtered to this tax year) and upload the CSV here. I'll process it automatically."
Process CSV via Desktop connector. Map columns: payee name, amount, date, payment method, EIN/SSN status. Follow the same aggregation and threshold logic below regardless of whether data came from the live connector or CSV.
Note for future connector versions: If the QuickBooks MCP is upgraded to expose vendor payment records directly, step 1 will succeed and the CSV fallback will be skipped automatically. No changes to this skill are needed — the try-first logic handles it.
For field names and query approach, see reference/connector-queries.md.
PayPal: Pull all "Goods & Services" payments sent. Note: PayPal issues its own 1099-K to contractors above the threshold — flag these separately in output so the accountant can determine whether a 1099-NEC is also needed.
Stripe: Pull all transfers/payouts made to external parties. Same 1099-K caveat as PayPal applies.
Desktop/CSV: If the user uploads a CSV directly (without going through QuickBooks export), map columns: payee name, amount, date, payment method, EIN/SSN status.
2. Aggregate by payee
Combine across sources and sum payments by individual or business entity. Deduplicate by name (watch for "John Smith" vs "John A. Smith" — flag likely duplicates for human review rather than auto-merging).
3. Apply the $600 threshold
- Flag for 1099-NEC: any payee paid ≥ $600 for services (contractors, freelancers, consultants)
- Flag for 1099-MISC: any payee paid ≥ $600 for rent, attorney fees, prizes/awards
- Near-threshold alert: flag payees paid $400–$599 — close to the threshold, accountant may want to verify
Corporations (Inc., Corp., LLC taxed as C or S corp) generally do not need a 1099-NEC — note this but flag for accountant confirmation.
4. Check W-9 status
For each flagged payee, note whether a W-9 / EIN is on file in QuickBooks. Mark as:
- ✅ W-9 on file (EIN/SSN recorded in QuickBooks)
- ⚠️ Missing — W-9 not on file; must collect before filing
- ❓ Unknown — cannot determine from available data
5. Deliver the 1099 prep package
Use this structure:
Structure the 1099 prep output as a document with these sections:
Header — H2 with "1099 prep list" and the tax year. Subline: prepared
date, "For review by your accountant," and "Not tax advice."
Summary — Bullet counts: total contractors paid, number requiring
1099-NEC (at or above $600 for services), number missing W-9 (with filing
deadline note for Jan 31), and number near-threshold flagged for review.
1099-NEC candidates table — Columns: payee name, total paid, data
sources, W-9 status (on file / missing / unknown), and notes. Flag any
payee paid via PayPal or Stripe with a note that the platform may issue
its own 1099-K.
Missing W-9 action list — Numbered list of contractors who need to
provide a W-9 before filing, with amounts paid and a reminder to request
the form.
Near-threshold table — Payees paid $400-$599 flagged for accountant
review, with a note to verify no additional payments were missed.
Payment processor note — Explain that PayPal and Stripe issue their own
1099-K forms and the accountant should confirm whether a 1099-NEC is also
needed for contractors paid exclusively through those platforms.
Next steps checklist — Action items for the accountant: collect missing
W-9s, confirm unknowns, review near-threshold payees, verify corporation
exemptions, confirm 1099-K overlap handling, file by January 31.
Guardrails
- Not tax advice. Open every deliverable with this: "Prepared for review by your accountant — not tax advice." Include it in the document header, not just in chat.
- State every assumption. If you assumed a 22% bracket, say so. If you excluded state taxes, say so. The accountant will adjust; give them the levers.
- Don't merge payees automatically. Flag likely duplicates for human review.
- Don't file anything. The output is prep material. Filing is out of scope.
- Corporation exemption is a judgment call. Note it; don't auto-exclude.
Reference files
- reference/calculation-assumptions.md — full tax math, bracket table, and SE tax walkthrough
- reference/connector-queries.md — how to pull data from QuickBooks, PayPal, and Stripe
- reference/gotchas.md — Good / Bad patterns for common failure modes
- reference/examples/quarterly-estimate.md — worked quarterly estimate example
- reference/examples/year-end-1099.md — worked year-end 1099 prep example
1---
2name: tax-season-organizer
3description: >
4 Prepares tax-season materials for small business owners — framed as deliverables
5 for their accountant, not tax advice. Two modes: (1) quarterly estimated tax
6 calculation — pulls YTD net income from QuickBooks and calculates the federal
7 income tax + self-employment tax liability and quarterly payment due; (2)
8 year-end 1099 prep — scans QuickBooks, PayPal, and Stripe for contractors paid
9 over $600, builds a 1099-NEC candidate list with missing W-9 flags, and
10 produces a plain-English summary a CPA can work from directly.
11
12 Trigger this skill whenever the user mentions: quarterly taxes, estimated tax
13 payment, how much to set aside for taxes, 1099s, 1099-NEC, year-end tax prep,
14 contractor payments, W-9s, or any phrase suggesting they are preparing for a
15 tax deadline or handing materials to an accountant. Also trigger proactively
16 when a user asks about net profit or YTD income in a context that suggests
17 they are worried about their tax bill.
18---
19
20# Tax Season Organizer
21
22> **Framing:** This skill produces prep material for a CPA, not tax advice. Say so early
23> and state every assumption explicitly so the accountant can adjust.
24
25## Quick start
26
27Determine which mode the user needs, pull the relevant data, calculate or compile,
28and deliver a structured document the accountant can work from directly.
29
30```
31User: "what do I owe for estimated taxes this quarter?"
32→ Pull YTD P&L from QuickBooks
33→ Calculate estimated federal income tax + SE tax
34→ Subtract payments already made this year
35→ Show Q-specific amount due with due date and assumptions stated
36→ Output: "Estimated Q2 payment due June 16: $X — see full breakdown below"
37
38User: "I need to send out 1099s"
39→ Pull all contractor/vendor payments from QuickBooks + PayPal + Stripe
40→ Identify contractors paid ≥ $600 YTD
41→ Flag records missing W-9 / EIN
42→ Output: 1099-NEC candidate list + missing W-9 action list
43```
44
45## Determine mode
46
47Read the user's message and context to decide which path applies:
48
49- **Quarterly estimate** — keywords: estimated payment, quarterly taxes, how much to set aside, safe harbor, Q1/Q2/Q3/Q4
50- **Year-end 1099 prep** — keywords: 1099, 1099-NEC, year-end, contractors, W-9, send 1099s, file 1099s
51- **Combined** — some users will ask "year-end summary" and need both. Run quarterly last; run 1099 prep first since it drives the most action items.
52
53If the intent is ambiguous, ask: "Are you looking at your estimated tax payment for this quarter, or are you preparing 1099s for your contractors — or both?"
54
55---
56
57## Path 1: Quarterly estimated tax
58
59### 1. Pull YTD financials
60
61Use QuickBooks to pull a Profit & Loss report from January 1 of the current year through the last day of the most recently completed quarter. Capture:
62- **Gross revenue** (total income)
63- **Total expenses** (operating expenses, COGS, etc.)
64- **Net ordinary income** = revenue − expenses
65
66If QuickBooks is not connected, ask the user to upload a P&L as CSV or paste the key numbers. For field names and query approach, see [reference/connector-queries.md](reference/connector-queries.md).
67
68### 2. Ask about prior estimated payments
69
70Before calculating, ask: "How much have you already paid in estimated taxes so far this year?" If the user doesn't know, note that you'll calculate total liability — they can subtract payments themselves or check with their accountant.
71
72### 3. Calculate estimated liability
73
74See [reference/calculation-assumptions.md](reference/calculation-assumptions.md) for the full math and the assumptions table you must include in output.
75
76Short version:
771. **SE tax** = net profit × 0.9235 × 0.153 (then halve it — the deductible half offsets income)
782. **Adjusted net** = net profit − (SE tax / 2)
793. **Federal income tax** = apply the bracket rate appropriate to the user's business type and estimated annual income (default to 22% unless the user tells you their bracket; note this assumption explicitly)
804. **Total annual liability** = federal income tax + SE tax
815. **Quarterly payment** = (total annual liability − payments made) ÷ quarters remaining
826. **Safe harbor check** — note whether the user should verify against prior-year tax (100% of prior year, or 110% if AGI > $150k)
83
84### 4. State assumptions and deliver output
85
86Use this output structure:
87
88Structure the output as a document with these sections in order:
89
901. **Header** — H2 with "Estimated tax summary" followed by the quarter and year.
91 Subline: prepared date and "For review by your accountant."
92
932. **YTD snapshot** — Bold lines showing YTD net profit with date range,
94 estimated annual net profit (annualized from YTD), and assumed business type
95 (sole proprietor, S-corp, etc. — flag as assumed, not confirmed).
96
973. **Self-employment tax** — Show the SE tax calculation: net profit times
98 92.35% times 15.3%, and the deductible SE half.
99
1004. **Federal income tax estimate** — Adjusted net income, assumed bracket
101 (default 22%, note to confirm with accountant), and the federal estimate.
102
1035. **Total estimated annual liability** — SE tax plus federal income tax.
104
1056. **Quarterly payment** — Total liability minus payments already made, divided
106 by quarters remaining, with the specific dollar amount due and the due date.
107
1087. **Safe harbor note** — Remind the owner to ensure total payments meet 100%
109 of prior-year tax (or 110% if AGI exceeded $150k).
110
1118. **Assumptions** — Bullet list of every assumption: bracket rate, business
112 structure, state taxes excluded, deductible SE half included, and deductions
113 not applied (home office, QBI, depreciation).
114
115---
116
117## Path 2: Year-end 1099 prep
118
119### 1. Pull contractor payments from all sources
120
121Query each connected source for **all payments made to individuals or businesses for services** in the tax year. Do not include payments for goods, refunds, or internal transfers.
122
123**QuickBooks — try live connector first, fall back to CSV if needed:**
124
1251. **Try live connector.** Attempt to pull vendor-level payment records via the QuickBooks MCP. If the connector returns individual payee records with name, amount, and account category, use them directly and skip the CSV step.
126
1272. **Detect aggregate-only response.** If the MCP returns only category-level totals (e.g. "Contract labor: $7,500" with no payee breakdown), the connector does not yet support vendor-level queries. In this case, prompt the user:
128
129 > "QuickBooks returned summary data only — I need payee-level detail to build your 1099 list. Please export a **Transaction List by Vendor** report (QuickBooks → Reports → Expenses → Transaction List by Vendor, filtered to this tax year) and upload the CSV here. I'll process it automatically."
130
1313. **Process CSV via Desktop connector.** Map columns: payee name, amount, date, payment method, EIN/SSN status. Follow the same aggregation and threshold logic below regardless of whether data came from the live connector or CSV.
132
133> **Note for future connector versions:** If the QuickBooks MCP is upgraded to expose vendor payment records directly, step 1 will succeed and the CSV fallback will be skipped automatically. No changes to this skill are needed — the try-first logic handles it.
134
135For field names and query approach, see [reference/connector-queries.md](reference/connector-queries.md).
136
137**PayPal:** Pull all "Goods & Services" payments sent. Note: PayPal issues its own 1099-K to contractors above the threshold — flag these separately in output so the accountant can determine whether a 1099-NEC is also needed.
138
139**Stripe:** Pull all transfers/payouts made to external parties. Same 1099-K caveat as PayPal applies.
140
141**Desktop/CSV:** If the user uploads a CSV directly (without going through QuickBooks export), map columns: payee name, amount, date, payment method, EIN/SSN status.
142
143### 2. Aggregate by payee
144
145Combine across sources and sum payments by individual or business entity. Deduplicate by name (watch for "John Smith" vs "John A. Smith" — flag likely duplicates for human review rather than auto-merging).
146
147### 3. Apply the $600 threshold
148
149- **Flag for 1099-NEC:** any payee paid ≥ $600 for services (contractors, freelancers, consultants)
150- **Flag for 1099-MISC:** any payee paid ≥ $600 for rent, attorney fees, prizes/awards
151- **Near-threshold alert:** flag payees paid $400–$599 — close to the threshold, accountant may want to verify
152
153Corporations (Inc., Corp., LLC taxed as C or S corp) generally do not need a 1099-NEC — note this but flag for accountant confirmation.
154
155### 4. Check W-9 status
156
157For each flagged payee, note whether a W-9 / EIN is on file in QuickBooks. Mark as:
158- ✅ W-9 on file (EIN/SSN recorded in QuickBooks)
159- ⚠️ Missing — W-9 not on file; must collect before filing
160- ❓ Unknown — cannot determine from available data
161
162### 5. Deliver the 1099 prep package
163
164Use this structure:
165
166Structure the 1099 prep output as a document with these sections:
167
1681. **Header** — H2 with "1099 prep list" and the tax year. Subline: prepared
169 date, "For review by your accountant," and "Not tax advice."
170
1712. **Summary** — Bullet counts: total contractors paid, number requiring
172 1099-NEC (at or above $600 for services), number missing W-9 (with filing
173 deadline note for Jan 31), and number near-threshold flagged for review.
174
1753. **1099-NEC candidates table** — Columns: payee name, total paid, data
176 sources, W-9 status (on file / missing / unknown), and notes. Flag any
177 payee paid via PayPal or Stripe with a note that the platform may issue
178 its own 1099-K.
179
1804. **Missing W-9 action list** — Numbered list of contractors who need to
181 provide a W-9 before filing, with amounts paid and a reminder to request
182 the form.
183
1845. **Near-threshold table** — Payees paid $400-$599 flagged for accountant
185 review, with a note to verify no additional payments were missed.
186
1876. **Payment processor note** — Explain that PayPal and Stripe issue their own
188 1099-K forms and the accountant should confirm whether a 1099-NEC is also
189 needed for contractors paid exclusively through those platforms.
190
1917. **Next steps checklist** — Action items for the accountant: collect missing
192 W-9s, confirm unknowns, review near-threshold payees, verify corporation
193 exemptions, confirm 1099-K overlap handling, file by January 31.
194
195---
196
197## Guardrails
198
199- **Not tax advice.** Open every deliverable with this: "Prepared for review by your accountant — not tax advice." Include it in the document header, not just in chat.
200- **State every assumption.** If you assumed a 22% bracket, say so. If you excluded state taxes, say so. The accountant will adjust; give them the levers.
201- **Don't merge payees automatically.** Flag likely duplicates for human review.
202- **Don't file anything.** The output is prep material. Filing is out of scope.
203- **Corporation exemption is a judgment call.** Note it; don't auto-exclude.
204
205## Reference files
206
207- [reference/calculation-assumptions.md](reference/calculation-assumptions.md) — full tax math, bracket table, and SE tax walkthrough
208- [reference/connector-queries.md](reference/connector-queries.md) — how to pull data from QuickBooks, PayPal, and Stripe
209- [reference/gotchas.md](reference/gotchas.md) — Good / Bad patterns for common failure modes
210- [reference/examples/quarterly-estimate.md](reference/examples/quarterly-estimate.md) — worked quarterly estimate example
211- [reference/examples/year-end-1099.md](reference/examples/year-end-1099.md) — worked year-end 1099 prep example