63 min readAutonomous agents

Implementation Guide: Gather supporting documents, reconcile accounts, and prepare draft returns

Step-by-step implementation guide for deploying AI to gather supporting documents, reconcile accounts, and prepare draft returns for Accounting & Bookkeeping clients.

Hardware Procurement

Ricoh ScanSnap iX2500 Document Scanner

Ricoh (formerly Fujitsu/PFU)PA03861-B005Qty: 2

$400 per unit MSP cost / $600 suggested resale

High-speed duplex document and receipt scanning at 45 pages per minute with 100-sheet automatic document feeder. Primary intake device for client source documents (W-2s, 1099s, K-1s, receipts, bank statements). Wi-Fi and USB connectivity enables placement at front desk and back office. Integrates directly with Dext and ScanSnap Home software for automated OCR and routing.

Dell OptiPlex 7020 Micro Desktop Workstation

Dell TechnologiesOptiPlex 7020 MFF (i7-14700T / 16GB / 512GB SSD)Qty: 3

$950 per unit MSP cost / $1,300 suggested resale

Primary workstations for accounting staff running cloud-based tax software, AI agent dashboards, and practice management tools. Intel Core i7-14700T provides headroom for TaxGPT desktop agent automation (which uses RPA-style interaction with installed tax software). 16GB RAM and 512GB SSD meet or exceed requirements for UltraTax CS, Drake Tax, and concurrent cloud browser sessions.

Dell UltraSharp U2724D 27-inch QHD Monitor

Dell TechnologiesU2724DQty: 6

$280 per unit MSP cost / $380 suggested resale

Dual-monitor setup for each workstation. Accounting professionals require extensive screen real estate to view source documents alongside tax software and AI agent output simultaneously. QHD (2560x1440) resolution provides sharp text rendering critical for reviewing financial data.

Fortinet FortiGate 40F Next-Generation Firewall

FortinetFG-40FQty: 1

$450 MSP cost (hardware only) / $700 suggested resale (with 1-year UTP bundle)

Next-generation firewall with TLS inspection, application control, and IPS. Required for IRS Publication 4557 compliance and FTC Safeguards Rule. Enables whitelist-only access to approved AI vendor endpoints (TaxGPT, Dext, Botkeeper cloud services). Includes SD-WAN for reliable cloud connectivity.

Fortinet FortiGate 40F 1-Year Unified Threat Protection (UTP) License

FortinetFC-10-0040F-950-02-12Qty: 1

$350 MSP cost / $500 suggested resale

Annual subscription for antivirus, web filtering, IPS signatures, application control, and FortiCare support on the FortiGate 40F. Required for compliance with IRS security mandates.

APC Back-UPS Pro 1500VA UPS

APC by Schneider ElectricBR1500MS2Qty: 2

$200 per unit MSP cost / $300 suggested resale

Uninterruptible power supply protecting workstations and network equipment from power loss during critical tax preparation and reconciliation workflows. Prevents data corruption during AI agent processing runs.

Yubico YubiKey 5 NFC Security Key

YubicoYubiKey 5 NFCQty: 15

$45 per unit MSP cost / $65 suggested resale

Hardware-based FIDO2/WebAuthn MFA tokens for all firm personnel. IRS Publication 4557 mandates MFA on all systems accessing taxpayer data. Physical keys provide phishing-resistant authentication superior to SMS or TOTP codes. Quantity includes spares for onboarding and lost-key scenarios.

Software Procurement

TaxGPT Tax Prep Agent

TaxGPT Inc.SaaS - custom pricing (contact vendor for quote)

Estimated $500–$1,500/month based on firm size and return volume (demo required for exact pricing)

Autonomous AI agent that reads source documents, logs into existing tax preparation software (UltraTax, Drake, Lacerte, ProConnect, or CCH Axcess), and completes draft returns from beginning to end. The agent operates the tax software via RPA-style automation — the firm remains the system of record while TaxGPT is the reasoning engine. SOC 2 Type 2 certified with onshore US data hosting.

Botkeeper Automated Bookkeeping Platform

Botkeeper Inc.SaaS - per-license monthly subscription

$199/month (small entity under $200K monthly expenses) or $299/month (large entity) per client license

AI-powered automated bookkeeping platform that handles transaction categorization, bank reconciliation, accounts payable/receivable coding, and month-end close preparation. Replaces manual reconciliation workflows. Integrates with QuickBooks Online, Xero, and Sage. Provides the reconciliation layer that feeds clean data to the tax preparation agent.

Dext Prepare with AI Assist

Dext (formerly Receipt Bank)SaaS - per-client scaling subscription

$37.50/month for 250 documents; scales with volume; volume discounts available through partner program

AI-powered document capture and data extraction platform. Processes receipts, invoices, bank statements, W-2s, 1099s, and K-1s with 99.9% accuracy. AI Assist learns from accountant corrections and applies patterns to future documents. Integrates with QuickBooks Online, Xero, and Sage for automatic posting. Works with ScanSnap hardware for physical document intake.

TaxDome Practice Management — Pro Plan

TaxDome Inc.SaaS - per-user monthly subscription (billed annually)

$25–$50/user/month (Pro plan); Starter at $5/user/month; Essentials at $11/user/month

All-in-one practice management platform with CRM, secure client portal, document management, e-signatures, task automation, and AI-powered reporting. Serves as the client-facing portal for document upload and return delivery. Workflow automation engine triggers AI agent tasks based on client status changes.

Drake Tax Unlimited

Drake SoftwarePerpetual annual license

$1,895/year (unlimited individual and business returns, all states, e-file)

Foundation tax preparation software that TaxGPT's autonomous agent operates. Drake provides the best price-to-value ratio for SMB firms with its unlimited returns model. Includes all federal and state forms, e-file capability, and client management. This is the system of record for all prepared returns.

Microsoft 365 Business Premium

MicrosoftSaaS - per-user monthly subscription (CSP resale)

$22/user/month MSP cost via CSP / $28/user/month suggested resale

Provides Exchange Online email, OneDrive encrypted storage, Microsoft Teams collaboration, and critically: Intune endpoint management, Azure AD P1 for conditional access policies, and Microsoft Defender for Business (EDR). Required for IRS-compliant endpoint security, MFA policy enforcement via Conditional Access, and encrypted email for client communication.

Microsoft 365 Copilot

MicrosoftSaaS - per-user monthly add-on

$18/user/month (add-on to M365 Business Premium; recommend for 2–3 senior staff only)

AI assistant in Excel for financial analysis, anomaly detection in reconciliation spreadsheets, and Word for drafting engagement letters and client correspondence. Supplements but does not replace the dedicated tax/bookkeeping AI agents.

SafeSend Returns

SafeSendUsage-based - per-return pricing

$13–$17 per return

Automated tax return assembly, review, e-signature, and secure delivery to clients. Eliminates manual PDF assembly and email of sensitive returns. Integrates with Drake Tax, UltraTax, Lacerte, and ProConnect for automated return packaging after AI agent preparation.

Veeam Backup for Microsoft 365

Veeam SoftwarePer-user annual subscription

$2.50/user/month MSP cost / $5/user/month suggested resale

Backup of Exchange Online mailboxes, OneDrive files, SharePoint, and Teams data. IRS and FTC compliance require encrypted backup with tested restore capability. 30-day minimum retention; recommend 1-year retention for tax records.

SentinelOne Singularity Complete (EDR/XDR)

SentinelOnePer-endpoint annual subscription

$6–$8/endpoint/month MSP cost / $12–$15/endpoint/month suggested resale

Endpoint detection and response (EDR) agent on all firm workstations. Required by IRS Publication 4557 for antivirus/anti-malware protection. Provides behavioral AI-based threat detection, rollback capability, and centralized management via SentinelOne console. If already covered by M365 Business Premium Defender for Business, this is optional but recommended as a stronger standalone EDR.

Prerequisites

  • Active subscription to a tax preparation platform (Drake Tax, UltraTax CS, Lacerte, ProConnect Tax Online, or CCH Axcess Tax) — must be current and licensed before AI agent deployment
  • Active QuickBooks Online Accountant account (free for ProAdvisors) with at least one client company file connected, OR equivalent Xero/Sage subscription with active bank feeds
  • Reliable internet connectivity: minimum 25 Mbps symmetric (fiber preferred); latency under 100ms to Azure/AWS US-East endpoints — verify with speedtest and traceroute before deployment
  • Current Written Information Security Plan (WISP) document — if not existing, MSP must create one as Phase 1 deliverable before any AI tools touch taxpayer data
  • Updated IRC §7216 taxpayer consent forms that explicitly authorize AI-assisted processing of tax return information — must be reviewed by the firm's legal counsel or a tax compliance attorney
  • Multi-factor authentication (MFA) enforced on ALL systems that access taxpayer data: email, tax software, cloud storage, practice management, and AI platforms — no exceptions per IRS mandate effective 2025
  • Domain name and DNS access for configuring SPF/DKIM/DMARC email authentication (required for secure client communications)
  • Windows 10 Pro or Windows 11 Pro on all workstations (Home editions lack BitLocker, Group Policy, and domain join capabilities)
  • Administrative credentials for the firm's QuickBooks Online, tax software, and any existing practice management platforms
  • Physical access to the office for scanner installation, network equipment deployment, and workstation setup
  • Designated project champion at the firm: a senior accountant or partner who will validate AI agent output, approve workflow configurations, and serve as the primary point of contact
  • Cyber liability insurance policy in place or in process — strongly recommended before AI deployment given expanded data processing scope
  • Current client list with engagement types (individual 1040, business 1120/1120S/1065, bookkeeping-only) to size the AI agent deployment and configure appropriate return types

Installation Steps

Step 1: Compliance & Security Foundation Audit

Before any technology deployment, conduct a comprehensive security and compliance audit of the accounting firm. Review the existing WISP (or create one), audit current MFA implementation, assess endpoint protection, verify backup procedures, and evaluate IRC §7216 consent forms. This step is non-negotiable — deploying AI agents without proper compliance infrastructure exposes the firm (and the MSP) to federal criminal liability under §7216 and FTC enforcement actions.

# Run Microsoft Secure Score assessment
# Navigate to https://security.microsoft.com/securescore

# Verify MFA status for all users in Azure AD / Entra ID
Connect-MsolService
Get-MsolUser -All | Select-Object DisplayName, UserPrincipalName, @{N='MFA Status'; E={$_.StrongAuthenticationRequirements.State}} | Export-Csv -Path C:\Audit\MFA_Status.csv -NoTypeInformation

# Check BitLocker encryption status on all workstations
manage-bde -status C:

# Verify Windows Defender / EDR status
Get-MpComputerStatus | Select-Object AntivirusEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
Note

If the firm does not have a current WISP, stop here and create one before proceeding. Template available from IRS Publication 4557. WISP creation is a billable MSP engagement ($1,500–$3,000). All §7216 consent forms must be updated to include explicit language about AI-assisted processing before any taxpayer data enters an AI system. Engage the firm's legal counsel for consent form review.

Step 2: Network Infrastructure Deployment

Install and configure the Fortinet FortiGate 40F firewall, establish network segmentation, configure TLS inspection for outbound traffic, and create firewall policies that whitelist approved AI vendor endpoints. Set up a dedicated VLAN for accounting workstations separate from guest/general traffic. Configure DNS-over-HTTPS to prevent DNS leakage of client queries.

# FortiGate initial configuration via CLI (after factory reset and console connection)
config system interface
  edit port1
    set mode static
    set ip 192.168.1.1 255.255.255.0
    set allowaccess ping https ssh
  next
end

# Create accounting workstation VLAN
config system interface
  edit VLAN10-ACCOUNTING
    set vdom root
    set ip 10.10.10.1 255.255.255.0
    set allowaccess ping
    set device-identification enable
    set interface port2
    set vlanid 10
  next
end

# Configure DNS to use FortiGuard DNS (filtered)
config system dns
  set primary 208.91.112.53
  set secondary 208.91.112.52
end

# Create address objects for AI vendor endpoints
config firewall address
  edit TaxGPT-Cloud
    set type fqdn
    set fqdn app.taxgpt.com
  next
  edit Dext-Cloud
    set type fqdn
    set fqdn api.dext.com
  next
  edit Botkeeper-Cloud
    set type fqdn
    set fqdn app.botkeeper.com
  next
  edit TaxDome-Cloud
    set type fqdn
    set fqdn app.taxdome.com
  next
end

# Create firewall policy allowing accounting VLAN to AI services
config firewall policy
  edit 10
    set name Allow-AI-Services
    set srcintf VLAN10-ACCOUNTING
    set dstintf wan1
    set srcaddr all
    set dstaddr TaxGPT-Cloud Dext-Cloud Botkeeper-Cloud TaxDome-Cloud
    set action accept
    set schedule always
    set service HTTPS
    set ssl-ssh-profile deep-inspection
    set av-profile default
    set ips-sensor default
    set logtraffic all
  next
end
Note

TLS deep inspection requires installing the FortiGate CA certificate on all workstations — deploy via Group Policy or Intune. Some tax software sites may break with deep inspection; add exceptions as needed but document each one. Ensure firmware is updated to latest FortiOS 7.x before production deployment. Register the FortiGate with FortiCloud for centralized management.

Step 3: Workstation Deployment and Hardening

Deploy Dell OptiPlex 7020 workstations with Windows 11 Pro, join to Azure AD (Entra ID), enable BitLocker encryption, deploy SentinelOne EDR agent, configure Microsoft Intune device compliance policies, and install required base software (Chrome/Edge, Adobe Reader, Microsoft 365 Apps). Apply CIS Benchmark Level 1 hardening via Intune configuration profiles.

1
Join workstation to Azure AD (run as local admin during OOBE or Settings)
2
Settings > Accounts > Access work or school > Connect > Join this device to Azure Active Directory
3
Enable BitLocker via PowerShell (after Azure AD join) Enable-BitLocker -MountPoint C: -EncryptionMethod XtsAes256 -RecoveryPasswordProtector
4
Verify BitLocker recovery key is backed up to Azure AD (Get-BitLockerVolume -MountPoint C:).KeyProtector | Where-Object {$_.KeyProtectorType -eq 'RecoveryPassword'} | Select-Object KeyProtectorId, RecoveryPassword
5
Install SentinelOne agent (download from SentinelOne console)
6
Replace SITE_TOKEN with actual token from SentinelOne management console msiexec /i SentinelOneInstaller_x64.msi SITE_TOKEN=eyJxxxxxxx /qn /l*v C:\Temp\S1Install.log
7
Install Microsoft 365 Apps via ODT
8
Create configuration.xml:
9
<Configuration>
10
<Add OfficeClientEdition="64" Channel="MonthlyEnterprise">
11
<Product ID="O365BusinessRetail">
12
<Language ID="en-us" />
13
<ExcludeApp ID="Groove" />
14
<ExcludeApp ID="Lync" />
15
</Product>
16
</Add>
17
<Updates Enabled="TRUE" Channel="MonthlyEnterprise" />
18
<Display Level="None" AcceptEULA="TRUE" />
19
</Configuration> setup.exe /configure configuration.xml
20
Set Windows Update to auto-install security updates Via Intune: Devices > Windows > Update rings > Create profile
21
Set 'Quality update deferral period' to 0 days
22
Set 'Automatic update behavior' to Auto install and restart at scheduled time
Note

Order workstations pre-imaged with Windows 11 Pro from Dell to save setup time. All workstations must have TPM 2.0 for BitLocker (standard on OptiPlex 7020). Create an Intune device compliance policy requiring BitLocker, up-to-date OS, and active EDR before granting access to M365 resources via Conditional Access.

Step 4: MFA and Conditional Access Policy Enforcement

Configure Azure AD (Entra ID) Conditional Access policies to require MFA for all users on all cloud applications. Deploy YubiKey 5 NFC hardware tokens as primary MFA method. Configure break-glass emergency access accounts. Set up passwordless authentication where supported.

1
Register YubiKeys for each user:
2
1. Navigate to https://mysignins.microsoft.com/security-info
3
2. Add method > Security key
4
3. Choose USB device
5
4. Insert YubiKey when prompted, touch the sensor
6
5. Name the key (e.g., 'Primary YubiKey - Desk')
7
Create Conditional Access Policy via Azure Portal:
8
Entra ID > Protection > Conditional Access > New policy Name: 'Require MFA - All Users - All Apps' Users: All users (exclude break-glass accounts) Cloud apps: All cloud apps Conditions: All platforms Grant: Require authentication strength > Phishing-resistant MFA Session: Sign-in frequency = 12 hours
9
Create break-glass account (exclude from all CA policies): Username: BreakGlass01@domain.onmicrosoft.com Password: 32+ character randomly generated, stored in physical safe Role: Global Administrator MFA: Disabled (this is intentional for emergency access) Monitor: Set up Azure AD alert for any sign-in to this account PowerShell: Verify all users have registered MFA methods Connect-MgGraph -Scopes 'UserAuthenticationMethod.Read.All' Get-MgUser -All | ForEach-Object { $methods = Get-MgUserAuthenticationMethod -UserId $_.Id [PSCustomObject]@{ User = $_.DisplayName Email = $_.UserPrincipalName MethodCount = $methods.Count Methods = ($methods | ForEach-Object { $_.AdditionalProperties.'@odata.type'.Split('.')[-1] }) -join ', ' } } | Export-Csv -Path C:\Audit\MFA_Methods.csv -NoTypeInformation
Note

IRS requires MFA on ALL systems accessing taxpayer data as of March 2025. YubiKeys provide phishing-resistant FIDO2 authentication — superior to SMS or authenticator app OTP. Order 15 keys (10 primary + 5 spares) to cover all staff plus replacements. Each user should register two keys (primary + backup). Store backup keys in a locked cabinet. The break-glass account must be documented in the WISP and monitored for any sign-in activity.

Step 5: Document Scanner Deployment and Dext Configuration

Install Ricoh ScanSnap iX2500 scanners at designated locations (front desk for client walk-ins, back office for staff processing). Install ScanSnap Home software on designated workstations. Configure scan profiles optimized for tax documents (300 DPI, color, auto-crop, dual-sided). Set up Dext Prepare account, connect to QuickBooks Online, and configure automated scan-to-Dext workflow using ScanSnap Cloud or folder watching.

1
Install ScanSnap Home (download from Ricoh website)
2
https://www.pfu.ricoh.com/global/scanners/scansnap/dl/
3
Run ScanSnapHomeSetup.exe, follow wizard
4
Configure ScanSnap profile for tax documents:
5
ScanSnap Home > Scan Settings > New Profile Profile Name: Tax Documents Color Mode: Color Resolution: 300 DPI (Super Fine) Scanning Side: Duplex (double-sided) File Format: PDF (Searchable) Feed: Normal (not continuous) File Size: Medium (3)
6
Configure scan destination to Dext: Option A: Use ScanSnap Cloud integration
7
ScanSnap Home > Preferences > Cloud Services > Add Dext account Option B: Configure folder-watch method Create folder: C:\ScanInbox\Dext ScanSnap Home > Profile > Save to > Folder: C:\ScanInbox\Dext Dext Desktop Agent: Configure to watch C:\ScanInbox\Dext
8
Dext API setup for custom integrations (optional) API endpoint: https://api.dext.com/v1/ Authentication: OAuth 2.0 bearer token
9
curl -X POST https://api.dext.com/v1/documents \ -H 'Authorization: Bearer YOUR_API_TOKEN' \
10
-F 'file=@/path/to/document.pdf' \
11
-F 'client_id=CLIENT_UUID'
Note

Connect iX2500 via Wi-Fi for flexible placement. Use the WPS button for quick Wi-Fi setup, or configure manually via ScanSnap Home. The iX2500 has a 100-sheet ADF — ideal for batch scanning client document packets. Set the scanner to create searchable PDFs (OCR built into ScanSnap Home) so Dext can read them even if AI extraction partially fails. Train front-desk staff on the one-button scan workflow: insert documents, press blue button, documents auto-route to correct Dext client folder.

Step 6: QuickBooks Online Integration and Bank Feed Configuration

Verify the firm's QuickBooks Online Accountant (QBOA) portal access. Ensure all managed client QBO companies have active bank feed connections. Configure Dext-to-QBO integration for automated receipt/invoice posting. Set up Botkeeper integration with QBO for AI-powered reconciliation. Verify chart of accounts standardization across client files.

1
Dext-to-QBO Integration:
2
1. Log into Dext at https://app.dext.com
3
2. Navigate to Connections > Add connection
4
3. Select QuickBooks Online
5
4. Authorize OAuth connection (will redirect to Intuit)
6
5. Select the target QBO company
7
6. Map Dext categories to QBO chart of accounts
8
7. Enable auto-publish for recognized vendors (after initial review period)
9
Botkeeper-to-QBO Integration:
10
1. Log into Botkeeper partner portal at https://app.botkeeper.com
11
2. Add new client entity
12
3. Select QuickBooks Online as the GL platform
13
4. Authorize OAuth 2.0 connection to QBO
14
5. Botkeeper will sync chart of accounts, open transactions, and bank feeds
15
6. Configure reconciliation rules and categorization preferences
16
Verify QBO API connectivity (optional - for custom integrations): QuickBooks Online API base URL: https://quickbooks.api.intuit.com/v3 Sandbox: https://sandbox-quickbooks.api.intuit.com/v3 Authentication: OAuth 2.0 via Intuit Developer Portal
17
Required scopes: com.intuit.quickbooks.accounting
18
Test QBO API connection: curl -X GET 'https://quickbooks.api.intuit.com/v3/company/REALM_ID/companyinfo/REALM_ID' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Accept: application/json'
Note

QuickBooks Online Accountant is free for ProAdvisor-enrolled firms. Ensure the firm has ProAdvisor status before setup. Bank feed connections should be refreshed and verified before Botkeeper integration — stale or broken bank feeds will cause reconciliation failures. Recommend standardizing the chart of accounts across similar client types using QBO's template feature before AI processing begins, as inconsistent account naming creates AI categorization errors.

Step 7: TaxGPT Autonomous Agent Deployment

Set up TaxGPT Tax Prep Agent for the firm. This is the core autonomous AI agent that reads source documents and operates the firm's existing tax preparation software (Drake Tax in our recommended stack) to complete draft returns. TaxGPT uses RPA-style desktop automation — it literally controls the tax software UI as a human would. Configure agent credentials, connect document sources, set up return type workflows, and establish review queues.

1
TaxGPT Setup Process (web-based configuration):
2
1. Navigate to https://app.taxgpt.com
3
2. Create firm account with admin credentials
4
3. Enable MFA on TaxGPT account (mandatory) 4. Configure firm profile: firm name, EFIN, PTIN(s), return types
5
Connect Tax Software:
6
For Drake Tax Desktop: 1. In TaxGPT admin: Settings > Tax Software > Add Connection
7
2. Select 'Drake Tax' as the target platform
8
3. Download and install TaxGPT Desktop Agent on the workstation running Drake
9
4. The Desktop Agent provides RPA bridge between TaxGPT cloud and Drake UI
10
5. Configure Drake installation path (typically C:\Drake\DrakeXX)
11
6. Grant TaxGPT Desktop Agent screen recording and input control permissions
12
7. Test connection by having agent open Drake and navigate to a test client
13
Configure Document Source Integration:
14
Settings > Document Sources > Add Source Option 1: Direct upload via TaxGPT portal Option 2: Connect to Dext (API integration) Option 3: Connect to TaxDome (document pull) Option 4: Connect to SmartVault/ShareFile
15
Configure Return Types and Workflows:
16
Workflows > Create Workflow Workflow: 'Individual 1040 - Standard' - Document requirements: W-2, 1099-INT, 1099-DIV, 1099-B, 1098, prior year return - Agent behavior: Extract data, populate Drake, calculate, flag anomalies - Review threshold: Flag if refund/balance due differs >15% from prior year - Output: Draft return in Drake + summary memo for reviewer
17
Configure Review Queue:
18
Review > Settings - All AI-prepared returns enter 'Pending Review' status - Assign default reviewer (senior accountant) - Set notification: email + TaxDome task creation - NEVER auto-file: all returns require human review and approval
Critical

TaxGPT's desktop agent requires a dedicated workstation or virtual machine where Drake Tax is installed. The agent controls the mouse and keyboard programmatically — do not use that workstation for other tasks while the agent is running. Consider setting up a dedicated VM on one of the Dell workstations (Hyper-V with Windows 11 Pro) for the agent to operate in. All returns prepared by TaxGPT MUST be reviewed by a licensed CPA/EA before filing. Configure the system to enforce this — disable any auto-file or auto-submit capability. The firm's EFIN holder is legally responsible for every return filed regardless of AI preparation.

Step 8: Botkeeper AI Bookkeeping and Reconciliation Setup

Deploy Botkeeper as the AI-powered bookkeeping and reconciliation engine. Configure client entities, connect to QuickBooks Online, set up automated transaction categorization rules, bank reconciliation schedules, and month-end close checklists. Botkeeper will handle the ongoing reconciliation that keeps books clean for tax preparation.

1
Botkeeper Partner Portal Setup:
2
1. Navigate to https://app.botkeeper.com/partner
3
2. Register as accounting firm partner
4
3. Create partner admin account with MFA
5
4. Set up firm billing (per-client-entity licensing)
6
Add Client Entities:
7
For each bookkeeping client:
8
Clients > Add Client - Client name, entity type (LLC, S-Corp, Sole Prop, etc.) - Fiscal year end - Industry classification - Connect QuickBooks Online (OAuth 2.0) - Connect bank feeds (Botkeeper can use Plaid for additional feeds) - Upload prior period financial statements for AI training
9
Configure Categorization Rules:
10
Rules Engine > Create Rule Set
11
Example rules: - Vendor: 'Amazon' -> Category: 'Office Supplies' (unless amount > $500 -> flag for review) - Vendor: 'Gusto' or 'ADP' -> Category: 'Payroll Expenses' - Transaction type: ACH Credit with memo containing 'PAYROLL' -> Category: 'Payroll Expenses' - Any transaction > $10,000 -> Flag for human review (BSA/AML awareness)
12
Configure Reconciliation Schedule:
13
Reconciliation > Settings - Bank accounts: Daily auto-reconciliation attempt - Credit cards: Daily auto-reconciliation attempt - Discrepancy threshold: Flag if unreconciled items > 5 per account - Month-end hard close: Notify accountant on 5th of following month
14
Configure Month-End Close Checklist:
15
Close > Checklist Template
16
1. All bank accounts reconciled (zero unmatched items)
17
2. All credit cards reconciled
18
3. Accounts receivable aging reviewed
19
4. Accounts payable aging reviewed
20
5. Payroll entries verified
21
6. Revenue recognized per engagement terms
22
7. Depreciation entries posted
23
8. Intercompany entries cleared (if applicable)
24
9. Financial statements generated and reviewed
25
10. Client deliverables sent via TaxDome portal
Note

Botkeeper works best with standardized charts of accounts. Before onboarding each client, review and clean up their QBO chart of accounts. Botkeeper's AI improves over time as it learns the firm's categorization preferences — expect 2–3 months of elevated review volume as the AI trains on actual transaction patterns. Start with the firm's simplest clients (sole proprietors, single-entity LLCs) before adding complex multi-entity or payroll-heavy clients.

Step 9: TaxDome Practice Management and Client Portal Configuration

Deploy TaxDome as the unified practice management platform with secure client portal. Configure client records, document request templates (organizers), workflow automations that trigger AI agent tasks, secure messaging, e-signatures, and return delivery. TaxDome serves as the client-facing layer and the orchestration hub connecting Dext, Botkeeper, TaxGPT, and SafeSend.

1
TaxDome Initial Setup:
2
1. Navigate to https://app.taxdome.com
3
2. Create firm account, select Pro plan
4
3. Configure firm branding (logo, colors, email templates)
5
4. Import client list from Drake Tax (CSV export) or manual entry
6
5. Set up team members with role-based access
7
Configure Document Request Templates (Organizers):
8
Templates > Organizers > Create Template: '2025 Individual Tax Organizer'
9
Sections: - Personal Information (auto-populated from prior year) - W-2 Income (upload field + questionnaire) - 1099 Income (upload field + questionnaire) - Deductions (mortgage interest, charitable, etc.) - Estimated Tax Payments - Cryptocurrency/Digital Assets (yes/no + upload if yes) - Life Events (marriage, divorce, new dependents, home purchase)
10
Configure Workflow Automation:
11
Automations > Create Pipeline Pipeline: 'Individual Tax Return 2025'
12
Stages:
13
1. 'Organizer Sent' -> Auto-send organizer to client via portal 2. 'Documents Received' -> Trigger: all required docs uploaded -> Action: Send docs to Dext for AI extraction -> Action: Create TaxGPT task for draft return preparation 3. 'AI Draft Complete' -> Trigger: TaxGPT marks return as ready -> Action: Assign to senior reviewer -> Action: Send notification to reviewer
14
4. 'Review In Progress' -> Manual stage
15
5. 'Client Review' -> Send draft to client for approval via portal 6. 'Ready to File' -> Trigger: client approves + signs e-file auth -> Action: Move to filing queue in Drake 7. 'Filed' -> Trigger: e-file accepted by IRS -> Action: Send final return via SafeSend Returns -> Action: Archive documents
16
8. 'Complete' -> Move to archive
17
Configure Secure Client Portal:
18
Settings > Client Portal - Enable 2FA for client portal access - Custom domain: portal.firmname.com (CNAME to TaxDome) - Upload branding assets - Configure automatic reminders for outstanding document requests - Set 3 reminders: Day 7, Day 14, Day 21 after organizer sent
Note

TaxDome's automation engine is powerful but requires careful pipeline design. Map out the firm's current manual workflow before configuring automations. The pipeline stages above are a starting template — customize based on the firm's specific process. TaxDome supports Zapier integration for connecting to tools without native integrations. Set up test client records to validate the full automation pipeline before go-live.

Step 10: SafeSend Returns Integration for Automated Delivery

Configure SafeSend Returns to automate the final step of the tax preparation workflow: assembling the completed return, generating signature pages, collecting e-file authorizations, and securely delivering the final return package to clients. Integrate with Drake Tax for automatic return import and with TaxDome for workflow status updates.

1
SafeSend Returns Setup:
2
1. Navigate to https://app.safesendreturns.com
3
2. Create firm account, configure firm information
4
3. Connect to Drake Tax: - SafeSend > Settings > Tax Software Integration - Select Drake Tax - Configure Drake export path for PDF returns - SafeSend monitors the export folder for new return PDFs
5
Configure Return Assembly Settings:
6
Settings > Return Assembly - Auto-detect return type (1040, 1120, 1120S, 1065) - Auto-separate federal and state returns - Auto-generate e-file authorization (Form 8879/8878) - Include payment vouchers if balance due - Include estimated payment vouchers for next year - Firm letterhead on cover page
7
Configure Client Delivery:
8
Settings > Delivery - Email template: Custom branded email with portal link - Client authentication: Last 4 of SSN + DOB - E-signature: Enable for Form 8879 - KBA (Knowledge-Based Authentication): Enable for additional security - Reminder schedule: Day 3, Day 7, Day 14 after delivery
9
Integration with TaxDome:
10
Use Zapier or webhook to update TaxDome pipeline stage when: - Client opens return package -> Update to 'Client Review' - Client signs 8879 -> Update to 'Ready to File'
11
Zapier trigger: SafeSend webhook
12
Zapier action: TaxDome API -> Update job status
Note

SafeSend charges per-return ($13–$17 depending on volume tier). Track this as a pass-through cost to clients or bundle into the firm's per-return fee. SafeSend significantly reduces the time spent assembling returns and chasing client signatures — previously a major bottleneck especially during extension season. Test the full delivery workflow with a sample return before tax season.

Step 11: Backup, Disaster Recovery, and Data Retention Configuration

Configure encrypted backup for all taxpayer data across cloud platforms and local systems. Set up Veeam Backup for Microsoft 365 to protect email and OneDrive. Configure Drake Tax local backup to encrypted cloud storage. Establish retention policies aligned with IRS requirements (minimum 3 years, recommended 7 years for tax records). Test restore procedures.

# Veeam Backup for Microsoft 365 Setup:
# 1. Deploy Veeam Backup for M365 on a management server or use Veeam Cloud Service Provider
# 2. Connect to Microsoft 365 tenant via Azure AD app registration
# 3. Configure backup job:
#    - Include: All user mailboxes, OneDrive, SharePoint sites
#    - Schedule: Daily at 11 PM
#    - Retention: 7 years (aligned with IRS record-keeping recommendations)

# Drake Tax Local Backup:
# In Drake: Setup > Options > Backup
# - Backup location: Network share -> synced to encrypted cloud storage
# - Schedule: After each batch processing run
# - Verify: Test restore quarterly

# Configure Azure Blob Storage for long-term archival (optional):
az storage account create \
  --name firmbackuparchive \
  --resource-group MSP-Backups \
  --location eastus \
  --sku Standard_LRS \
  --encryption-services blob \
  --min-tls-version TLS1_2

az storage container create \
  --name tax-returns-archive \
  --account-name firmbackuparchive \
  --public-access off

# Enable immutable storage (WORM) for compliance:
az storage container immutability-policy create \
  --resource-group MSP-Backups \
  --account-name firmbackuparchive \
  --container-name tax-returns-archive \
  --period 2556

# Test restore procedure:
# 1. Select a random client's data from 30 days ago
# 2. Restore to a test location (not production)
# 3. Verify file integrity and readability
# 4. Document the test in the WISP maintenance log
# 5. Repeat quarterly
Note

IRS requires taxpayers to keep records for 3 years from filing date, but 7 years is the safe harbor recommendation. The immutable storage (WORM) policy of 2556 days = 7 years. Document all backup and restore test results in the firm's WISP. Ensure backup encryption keys are stored separately from the backup data — recommend a password manager vault accessible only to firm partners and MSP admin. Veeam backup data should be stored in a different geographic region than the primary Microsoft 365 tenant for disaster recovery.

Step 12: End-to-End Integration Testing and Workflow Validation

Before go-live, execute a complete end-to-end test using sample/test data that mirrors real client scenarios. Process test documents through the entire pipeline: scan -> Dext extraction -> Botkeeper categorization -> QuickBooks reconciliation -> TaxGPT draft return preparation -> reviewer approval -> SafeSend delivery. Validate data accuracy at each handoff point.

1
Create test scenarios: Scenario 1: Simple W-2 individual (1040 with standard deduction) Scenario 2: Freelancer with 1099-NEC + business expenses (Schedule C) Scenario 3: Investor with 1099-B, 1099-DIV, 1099-INT Scenario 4: Rental property owner (Schedule E) Scenario 5: S-Corp owner with K-1 + W-2 + officer compensation
2
For each scenario:
3
Step A: Scan sample documents through ScanSnap iX2500
4
Step B: Verify Dext extracts data correctly (compare to source)
5
Step C: Verify Botkeeper categorizes transactions correctly in QBO
6
Step D: Trigger TaxGPT agent to prepare draft return in Drake
7
Step E: Reviewer validates draft return against manual calculation
8
Step F: Process through SafeSend Returns for delivery
9
Step G: Client test user receives and can access return
10
Validation checklist at each stage:
11
[ ] Document OCR accuracy > 95%
12
[ ] Dext extracted fields match source document
13
[ ] Botkeeper categorization matches expected chart of accounts entries
14
[ ] QBO reconciliation completes with zero unmatched items
15
[ ] TaxGPT draft return matches manual calculation within $50 tolerance
16
[ ] All form lines populated correctly (compare line-by-line)
17
[ ] SafeSend delivery email received, return accessible, signature functional
18
Log all discrepancies in test tracking spreadsheet
19
Each discrepancy must be resolved before go-live
Note

Use the firm's prior-year returns (with client consent and anonymized if possible) as test cases — this provides a known-good comparison point. The senior accountant must participate in validation, comparing AI-prepared returns against their professional judgment. Expect the first round of testing to reveal configuration issues, especially with complex returns. Budget 2–3 iterations of testing for the more complex scenarios. Do NOT proceed to production use until all five test scenarios pass with acceptable accuracy.

Custom AI Components

Document Intake Orchestrator

Type: workflow

A Zapier/Make.com automation workflow that orchestrates the document intake pipeline. When a client uploads documents to TaxDome portal, this workflow routes them to Dext for AI extraction, monitors extraction completion, validates extracted data quality, and triggers downstream processes (Botkeeper for bookkeeping documents, TaxGPT for tax source documents). Includes error handling and notification for documents that fail extraction.

Implementation:

# Document Intake Orchestrator - Make.com (Integromat) Blueprint
# This workflow automates the routing of client-uploaded documents

Trigger: TaxDome Webhook

  • Configure in TaxDome: Settings > Webhooks > Add
  • Event: document.uploaded
  • URL: https://hook.make.com/YOUR_WEBHOOK_ID

Module 1: Parse TaxDome Webhook

Extract: client_id, document_id, document_name, file_url, upload_timestamp

Module 2: Download Document from TaxDome

# HTTP GET: {{file_url}}
# Headers: Authorization: Bearer {{taxdome_api_token}}
# Save to: /tmp/{{document_id}}.pdf

Module 3: Classify Document Type (Router)

1
Use filename and basic OCR keywords to route:
2
Route A - Tax Source Documents: Patterns: W-2, 1099, K-1, 1098, 5498, 8889, 1095
3
-> Send to Dext + flag for TaxGPT
4
Route B - Bookkeeping Documents: Patterns: invoice, receipt, bank statement, credit card statement
5
-> Send to Dext + flag for Botkeeper
6
Route C - Engagement/Admin Documents: Patterns: engagement letter, power of attorney, consent form
7
-> Archive in TaxDome, no AI processing
8
Route D - Unclassified:
9
-> Send notification to accountant for manual classification
1
Module 4A: Upload to Dext (Tax Documents) HTTP POST: https://api.dext.com/v1/documents
2
Headers: Authorization: Bearer {{dext_api_token}} Content-Type: multipart/form-data
3
Body: file: {{downloaded_file}} client_id: {{mapped_dext_client_id}} category: tax_source Store: dext_document_id in data store

Module 5A: Wait for Dext Processing

  • Sleep: 60 seconds (Dext typical processing time)
  • Then poll: GET https://api.dext.com/v1/documents/{{dext_document_id}}
  • Check status == 'processed'
  • If not processed after 5 minutes: send alert email

Module 6A: Validate Extraction Quality

python
# Check Dext response for:
# - confidence_score > 0.85 (proceed automatically)
# - confidence_score 0.60-0.85 (flag for review, proceed with caution)
# - confidence_score < 0.60 (route to manual processing queue)
# Extract: document_type, amounts, dates, payer/payee info

Module 7A: Update TaxDome Job Status

# HTTP PATCH: TaxDome API
# Update job stage to 'Documents Processing'
# Add note: 'Document {{document_name}} extracted by Dext. Confidence: {{score}}'

Module 8A: Trigger TaxGPT Task (when all docs received)

1
Check TaxDome organizer completeness
2
If all required documents received: HTTP POST to TaxGPT API: /tasks/create Body: { client_id, return_type, document_ids, priority }
3
If missing documents: Trigger TaxDome reminder to client for missing items

Error Handler (Global):

1
Log error to Google Sheet / Airtable tracking
2
Send Teams/Slack notification to MSP channel
3
Send email to firm admin with document ID and error details
4
Update TaxDome job with error note

Top 20 Vendors by Spend

{top_vendors}

Spending by Account

{account_totals}

System Prompt:

You are an expert tax return quality assurance reviewer assisting a licensed CPA/EA. Your role is to analyze a draft tax return prepared by an AI agent and identify: 1. DATA ACCURACY: Mismatches between source documents and return line items 2. COMPLETENESS: Missing schedules, forms, or elections that should be present 3. CONSISTENCY: Items that conflict with prior-year return or within the current return 4. OPTIMIZATION: Legitimate tax planning opportunities that may have been missed 5. RED FLAGS: Items that could trigger IRS scrutiny or indicate preparation errors IMPORTANT LIMITATIONS: - You are a review TOOL, not a tax advisor - The licensed CPA/EA makes all final decisions - Flag items for human review — do not make authoritative tax determinations - When uncertain, err on the side of flagging for review - Never suggest aggressive positions without clear statutory support Format your response as a structured JSON object with the following schema: { "overall_risk_level": "LOW|MEDIUM|HIGH", "confidence_score": 0.0-1.0, "data_accuracy_flags": [{"line": "", "issue": "", "severity": "", "source_doc_ref": ""}], "completeness_flags": [{"missing_item": "", "reason_expected": "", "severity": ""}], "consistency_flags": [{"item": "", "current_value": "", "expected_value": "", "basis": ""}], "optimization_opportunities": [{"opportunity": "", "estimated_impact": "", "complexity": ""}], "red_flags": [{"item": "", "concern": "", "recommended_action": ""}], "reviewer_questions": ["Questions the reviewer should ask the client"], "summary": "Brief narrative summary of key findings" }
Sonnet 4.6

User Prompt Template:

Please review the following draft tax return against the provided source documents.

RETURN INFORMATION

  • Return Type: {{return_type}} (e.g., Form 1040, 1120S, 1065)
  • Tax Year: {{tax_year}}
  • Filing Status: {{filing_status}}
  • State(s): {{states}}

PRIOR YEAR COMPARISON

  • Prior Year AGI: ${{prior_agi}}
  • Prior Year Total Tax: ${{prior_tax}}
  • Prior Year Refund/Balance Due: ${{prior_result}}

CURRENT YEAR DRAFT RETURN DATA

{{draft_return_data}}

SPECIFIC REVIEW AREAS

{{specific_concerns}}

Perform a comprehensive quality assurance review and return your findings as structured JSON.

Example Implementation in Python:

python
import openai
import json

def run_qa_review(return_data: dict, source_docs: list, prior_year: dict) -> dict:
    client = openai.OpenAI(api_key='sk-...')
    
    # Format source document summary
    doc_summary = '\n'.join([
        f"- {doc['type']}: {doc['payer']} - ${doc['amount']:.2f}" 
        for doc in source_docs
    ])
    
    # Format return data (simplified - actual implementation extracts from Drake XML/PDF)
    return_summary = json.dumps(return_data, indent=2)
    
    user_prompt = f"""Please review the following draft tax return against the provided source documents.

RETURN INFORMATION

  • Return Type: {return_data.get('form_type', 'Form 1040')}
  • Tax Year: {return_data.get('tax_year', '2025')}
  • Filing Status: {return_data.get('filing_status', 'Single')}
  • State(s): {return_data.get('states', 'Federal only')}

PRIOR YEAR COMPARISON

  • Prior Year AGI: ${prior_year.get('agi', 0):,.2f}
  • Prior Year Total Tax: ${prior_year.get('total_tax', 0):,.2f}
  • Prior Year Refund/Balance Due: ${prior_year.get('result', 0):,.2f}

CURRENT YEAR DRAFT RETURN DATA

{return_summary}

{doc_summary}

SPECIFIC REVIEW AREAS

  • Verify all W-2 and 1099 amounts match source documents exactly
  • Check for missing income sources compared to prior year
  • Verify deduction eligibility and substantiation
  • Check estimated tax payment credits
  • Verify dependent eligibility

Perform a comprehensive quality assurance review and return your findings as structured JSON."""

response = client.chat.completions.create(

python
    response = client.chat.completions.create(
        model='gpt-4.1-2025-04-14',
        messages=[
            {'role': 'system', 'content': SYSTEM_PROMPT},  # From above
            {'role': 'user', 'content': user_prompt}
        ],
        response_format={'type': 'json_object'},
        temperature=0.1,  # Low temperature for consistent, careful analysis
        max_tokens=4000
    )
    
    return json.loads(response.choices[0].message.content)

# Integration: Call this after TaxGPT completes a draft return,
# before the human reviewer opens the return in Drake Tax.
# Post results to TaxDome as a review checklist note.

Client Document Completeness Monitor

Type: integration

An integration between TaxDome and Microsoft Teams that monitors client document upload progress during tax season and sends daily digest notifications to the firm's Teams channel. Tracks which clients have submitted all required documents, which are partially complete, and which haven't started. Enables proactive client follow-up to prevent last-minute filing crunches.

Implementation:

json
# Client Document Completeness Monitor
# TaxDome -> Microsoft Teams Integration via Power Automate
# Sends daily digest of client document status during tax season

# Implementation: Microsoft Power Automate Flow
# Trigger: Recurrence - Daily at 8:00 AM EST (Jan 15 - Apr 15)

# Flow Definition (Power Automate JSON export format):

{
  "definition": {
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json",
    "triggers": {
      "Recurrence": {
        "type": "Recurrence",
        "recurrence": {
          "frequency": "Day",
          "interval": 1,
          "startTime": "2026-01-15T08:00:00Z",
          "timeZone": "Eastern Standard Time"
        }
      }
    },
    "actions": {
      "Get_TaxDome_Client_Status": {
        "type": "Http",
        "inputs": {
          "method": "GET",
          "uri": "https://api.taxdome.com/v1/jobs?pipeline=individual_tax_2025&status=active",
          "headers": {
            "Authorization": "Bearer @{parameters('TaxDome_API_Key')}"
          }
        }
      },
      "Parse_JSON": {
        "type": "ParseJson",
        "inputs": {
          "content": "@body('Get_TaxDome_Client_Status')",
          "schema": {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "client_name": {"type": "string"},
                    "stage": {"type": "string"},
                    "organizer_status": {"type": "string"},
                    "docs_received": {"type": "integer"},
                    "docs_required": {"type": "integer"},
                    "last_activity": {"type": "string"}
                  }
                }
              }
            }
          }
        }
      },
      "Categorize_Clients": {
        "type": "Scope",
        "actions": {
          "Filter_Complete": {
            "type": "Query",
            "inputs": {
              "from": "@body('Parse_JSON')?['data']",
              "where": "@equals(item()?['organizer_status'], 'complete')"
            }
          },
          "Filter_Partial": {
            "type": "Query",
            "inputs": {
              "from": "@body('Parse_JSON')?['data']",
              "where": "@and(not(equals(item()?['organizer_status'], 'complete')), greater(item()?['docs_received'], 0))"
            }
          },
          "Filter_NotStarted": {
            "type": "Query",
            "inputs": {
              "from": "@body('Parse_JSON')?['data']",
              "where": "@equals(item()?['docs_received'], 0)"
            }
          }
        }
      },
      "Post_Teams_Message": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "name": "@parameters('$connections')['teams']['connectionId']"
            }
          },
          "method": "post",
          "path": "/v3/beta/teams/@{parameters('Teams_Team_Id')}/channels/@{parameters('Teams_Channel_Id')}/messages",
          "body": {
            "body": {
              "contentType": "html",
              "content": "<h2>📊 Daily Tax Season Document Status</h2><p><strong>Date:</strong> @{formatDateTime(utcNow(), 'MMMM dd, yyyy')}</p><h3>✅ Ready for AI Processing (@{length(body('Filter_Complete'))})</h3><p>@{join(body('Filter_Complete'), ', ')}</p><h3>⏳ Partially Complete (@{length(body('Filter_Partial'))})</h3><p>@{join(body('Filter_Partial'), ', ')}</p><h3>🔴 Not Started (@{length(body('Filter_NotStarted'))})</h3><p>@{join(body('Filter_NotStarted'), ', ')}</p><hr><p><em>Clients in 'Ready' status will be queued for TaxGPT processing today.</em></p>"
            }
          }
        }
      },
      "Trigger_Auto_Reminders": {
        "type": "Http",
        "inputs": {
          "method": "POST",
          "uri": "https://api.taxdome.com/v1/reminders/batch",
          "headers": {
            "Authorization": "Bearer @{parameters('TaxDome_API_Key')}"
          },
          "body": {
            "client_ids": "@body('Filter_NotStarted')",
            "template": "document_request_reminder",
            "channel": "email"
          }
        },
        "runAfter": {
          "Post_Teams_Message": ["Succeeded"]
        }
      }
    }
  }
}
Alternative: Python script version for MSPs not using Power Automate.
python
# Run via Azure Functions or cron job on management server.

# Alternative: Python script version for MSPs not using Power Automate
# Run via Azure Functions or cron job on management server

import requests
from datetime import datetime

def send_daily_digest():
    # Get client status from TaxDome
    td_response = requests.get(
        'https://api.taxdome.com/v1/jobs',
        headers={'Authorization': f'Bearer {TAXDOME_API_KEY}'},
        params={'pipeline': 'individual_tax_2025', 'status': 'active'}
    )
    clients = td_response.json().get('data', [])
    
    complete = [c for c in clients if c['organizer_status'] == 'complete']
    partial = [c for c in clients if c['docs_received'] > 0 and c['organizer_status'] != 'complete']
    not_started = [c for c in clients if c['docs_received'] == 0]
    
    # Format Teams adaptive card
    card = {
        'type': 'message',
        'attachments': [{
            'contentType': 'application/vnd.microsoft.card.adaptive',
            'content': {
                '$schema': 'http://adaptivecards.io/schemas/adaptive-card.json',
                'type': 'AdaptiveCard',
                'version': '1.4',
                'body': [
                    {'type': 'TextBlock', 'text': '📊 Tax Season Document Status', 'size': 'Large', 'weight': 'Bolder'},
                    {'type': 'TextBlock', 'text': f'Date: {datetime.now().strftime("%B %d, %Y")}'},
                    {'type': 'FactSet', 'facts': [
                        {'title': '✅ Ready for AI', 'value': str(len(complete))},
                        {'title': '⏳ Partial', 'value': str(len(partial))},
                        {'title': '🔴 Not Started', 'value': str(len(not_started))},
                        {'title': '📈 Total Active', 'value': str(len(clients))}
                    ]}
                ]
            }
        }]
    }
    
    # Post to Teams webhook
    requests.post(TEAMS_WEBHOOK_URL, json=card)

# Run daily during tax season (Jan 15 - Apr 15)
if __name__ == '__main__':
    today = datetime.now()
    if today.month in [1, 2, 3, 4] and not (today.month == 4 and today.day > 15):
        send_daily_digest()

Testing & Validation

  • SCAN TEST: Place a multi-page test document packet (W-2 + 1099-INT + 1099-DIV, minimum 6 pages double-sided) in the ScanSnap iX2500 ADF. Press the scan button. Verify all pages are captured, OCR text is searchable in the resulting PDF, and the file appears in the configured Dext inbox within 60 seconds. Expected result: 100% page capture, readable OCR on all pages.
  • DEXT EXTRACTION TEST: Upload a sample W-2 (use IRS sample or redacted real document) to Dext. Verify that Dext extracts the following fields correctly: employer name, employer EIN, employee SSN (last 4), Box 1 wages, Box 2 federal tax withheld, Box 3 Social Security wages, Box 4 Social Security tax, Box 5 Medicare wages, Box 6 Medicare tax. Compare extracted values to source document — all dollar amounts must match exactly.
  • DEXT-TO-QBO INTEGRATION TEST: Create a test expense receipt in Dext (photograph a sample receipt). Verify that Dext processes the receipt, extracts vendor/amount/date, and publishes the transaction to the correct QuickBooks Online company file within 5 minutes. Check QBO to confirm the transaction appears with correct vendor, amount, date, and account categorization.
  • BOTKEEPER RECONCILIATION TEST: In a test QBO company file, create 10 sample bank transactions (mix of deposits and withdrawals) with known correct categorizations. Allow Botkeeper to process and categorize them. Verify that at least 8 of 10 transactions are correctly categorized without human intervention. For the remaining 2, verify they are flagged for review rather than incorrectly categorized.
  • BOTKEEPER BANK RECONCILIATION TEST: After one full month of transaction data in the test QBO file, run Botkeeper's bank reconciliation process. Verify that the reconciliation completes with zero unexplained differences between the bank statement balance and the QBO balance. If discrepancies exist, verify they are flagged with clear descriptions.
  • TAXGPT AGENT CONNECTION TEST: On the dedicated Drake Tax workstation/VM, launch the TaxGPT Desktop Agent. Verify it successfully connects to TaxGPT cloud services (green status indicator). Have the agent open Drake Tax, navigate to a test client, and open a blank 1040. Verify the agent can type data into Drake fields, navigate between forms, and save the return. This validates RPA connectivity.
  • TAXGPT DRAFT RETURN ACCURACY TEST: Prepare a test case with known-correct return data: W-2 showing $75,000 wages and $12,000 federal withholding, 1099-INT showing $500 interest income, standard deduction, single filer. Submit source documents to TaxGPT and have the agent prepare a draft return in Drake. Compare every line of the AI-prepared return against a manually-prepared return for the same data. All amounts must match. Expected AGI: $75,500, Standard Deduction: $15,000 (2025), Taxable Income: $60,500.
  • TAXGPT COMPLEX RETURN TEST: Prepare a moderately complex test case: married filing jointly, two W-2s, Schedule C freelance income with business expenses, itemized deductions (mortgage interest via 1098, charitable contributions, state taxes), and one dependent child. Submit to TaxGPT. Verify all schedules are generated (Schedule C, Schedule A, Schedule 8812 for child tax credit), all amounts are correct, and QBI deduction is calculated if applicable.
  • §7216 CONSENT VALIDATOR TEST: Attempt to trigger TaxGPT processing for a test client that does NOT have a signed §7216 consent form in TaxDome. Verify that the system blocks processing and generates an alert. Then upload a signed consent form, re-trigger processing, and verify it proceeds. This validates the compliance gate is functioning correctly.
  • MFA ENFORCEMENT TEST: Attempt to log into each critical system (TaxDome, Drake Tax Online, Dext, Botkeeper, QBO, Microsoft 365) with correct username and password but WITHOUT completing MFA. Verify that access is denied in every case. Then complete MFA with YubiKey and verify access is granted. Document any system that allows password-only access — these must be remediated immediately.
  • FIREWALL POLICY TEST: From an accounting workstation on VLAN 10, attempt to access a non-whitelisted cloud service (e.g., a personal Dropbox URL). Verify the connection is blocked by the FortiGate firewall. Then access an approved service (app.taxgpt.com). Verify the connection succeeds. Check FortiGate logs to confirm both the block and allow events are logged.
  • BACKUP RESTORE TEST: Initiate a restore of a test client's data from Veeam backup (email, OneDrive files) to a test location. Verify that all files restore successfully and are readable. Also restore a Drake Tax backup file and verify the client return opens correctly in Drake. Measure and document restore time — should be under 30 minutes for a single client's data.
  • TAXDOME WORKFLOW AUTOMATION TEST: Create a test client in TaxDome, send them a tax organizer via the client portal. Log into the portal as the test client, upload the required documents, and mark the organizer as complete. Verify that the TaxDome workflow automation triggers correctly: stage advances, notification is sent to the assigned preparer, and (if configured) the Dext/TaxGPT integration is triggered.
  • SAFESEND RETURN DELIVERY TEST: Process a completed test return through SafeSend Returns from Drake Tax. Verify that SafeSend correctly assembles the return package (federal, state, cover letter, e-file authorization forms), sends the delivery email to the test client, and that the client can access the return using their authentication credentials (last 4 SSN + DOB). Verify e-signature functionality on Form 8879.
  • END-TO-END PIPELINE TEST: Execute the complete workflow for one test client from document upload through return delivery. Time each stage: document upload -> Dext extraction -> TaxGPT draft preparation -> QA review prompt -> human review -> SafeSend delivery. Document total elapsed time and note any bottlenecks or failures. Target: complete pipeline in under 4 hours for a standard 1040 (excluding human review time).
  • ANOMALY DETECTOR TEST: Seed a test QBO company with 3 months of normal transaction history, then add 5 anomalous transactions in the current month (one duplicate payment, one amount 3x historical average for vendor, one new vendor over $500, one round-number $5,000 transaction, one transaction at $9,800 near reporting threshold). Run the Reconciliation Anomaly Detector agent. Verify it flags all 5 anomalous transactions with appropriate severity levels.

Client Handoff

The client handoff session should be a structured 3-hour meeting with the firm's partners, senior accountants, and administrative staff, divided into three segments:

Segment 1 — Operations Training (90 minutes):

  • Document scanning workflow: how to use ScanSnap iX2500, proper document preparation (remove staples, orient pages), batch scanning procedures, and troubleshooting paper jams
  • TaxDome client portal management: sending organizers, managing client uploads, monitoring pipeline stages, using the client messaging system
  • Dext document review: how to review AI-extracted data, correct errors, approve/reject items, and train the AI by correcting categorizations
  • Botkeeper monitoring: how to review AI-categorized transactions, handle flagged items, approve month-end reconciliations
  • TaxGPT workflow: how to submit returns for AI preparation, monitor agent progress, handle agent errors, and review draft returns
  • SafeSend Returns: how to process completed returns for delivery, track client signature status

Segment 2 — Review & Quality Assurance Training (45 minutes):

  • How to use the Tax Return Quality Assurance Checker prompt with GPT-4.1
  • How to interpret anomaly detection reports from the Reconciliation Anomaly Detector
  • Mandatory human review checklist for every AI-prepared return (provide printed checklist)
  • Escalation procedures when AI output appears incorrect
  • How to provide feedback to improve AI agent accuracy over time

Segment 3 — Security & Compliance Review (45 minutes):

  • §7216 consent process: when and how to obtain AI processing consent from new clients
  • MFA usage: YubiKey registration, backup procedures, what to do if a key is lost
  • WISP review: walk through the firm's Written Information Security Plan, ensure all staff understand their responsibilities
  • Incident response: what to do if a data breach is suspected, who to contact, documentation requirements
  • Password and access policies: review firm's credential management practices

Documentation to Leave Behind:

1
Printed Quick Start Guide with step-by-step workflows for each daily task (scanning, reviewing, processing)
2
§7216 AI Consent Form template (editable Word document) with instructions for when to use it
3
WISP document (firm's customized version, printed and digital)
4
MSP contact card with escalation path: L1 helpdesk phone/email, L2 escalation for AI platform issues, L3 escalation for compliance concerns
5
System credentials document (encrypted, stored in firm's password manager, not printed)
6
Troubleshooting guide for common issues (scanner offline, Dext extraction errors, TaxGPT agent disconnected, bank feed failures)
7
Monthly maintenance checklist for the firm to follow
8
Annual compliance calendar (WISP review, penetration test, §7216 consent renewal, software license renewals)

Success Criteria to Review Together:

Maintenance

Monthly Maintenance Tasks (MSP Responsibility):

  • Review and apply security patches to all workstations (via Intune — verify compliance report shows 100% patched)
  • Verify FortiGate firmware is current and UTP signatures are updating daily
  • Check SentinelOne/EDR agent health across all endpoints — remediate any offline agents
  • Review Botkeeper categorization accuracy metrics — if accuracy drops below 90%, investigate root cause (new vendor patterns, chart of accounts changes)
  • Verify all backup jobs completed successfully — spot-check one random restore
  • Review TaxGPT Desktop Agent connectivity logs — ensure agent uptime > 99% during business hours
  • Check Dext extraction accuracy reports — flag any document types with declining accuracy
  • Review Azure AD sign-in logs for suspicious activity (impossible travel, failed MFA attempts)
  • Generate and review monthly security posture report for the firm

Quarterly Maintenance Tasks:

  • Full backup restore test (select random client, restore all data, verify integrity)
  • Review and update firewall rules — remove any temporary exceptions, verify AI vendor IP/FQDN whitelists are current
  • Review user access across all platforms — remove any departed employees, verify role assignments
  • Update WISP document with any changes to firm operations, technology, or personnel
  • Review AI agent performance metrics with firm management — returns processed, accuracy rates, time savings
  • Check for software version updates across all platforms (TaxGPT, Dext, Botkeeper, TaxDome, Drake Tax) — schedule updates during non-peak periods
  • Review §7216 consent expiration dates — flag clients whose annual consent is approaching expiration

Annual Maintenance Tasks:

  • Conduct or coordinate annual penetration test (required by FTC Safeguards Rule) — budget $2,000–$5,000
  • Conduct bi-annual vulnerability assessment (can be done with internal tools + Nessus/Qualys)
  • Renew all software subscriptions (Drake Tax, TaxGPT, Dext, Botkeeper, TaxDome, SafeSend, M365)
  • Review and renew cyber liability insurance policy
  • Update §7216 consent forms if AI vendors have changed
  • Review and update the full WISP document — annual review is required by IRS
  • Conduct annual security awareness training for all firm staff (phishing simulation + training)
  • Review AI vendor SOC 2 reports — request current attestation letters from TaxGPT, Dext, Botkeeper
  • Evaluate new AI capabilities and features released during the year — recommend upgrades
  • Budget planning for next fiscal year's AI and security investments

Tax Season Preparation (September–December):

  • Update Drake Tax to current tax year version
  • Update TaxGPT agent for current year tax law changes
  • Test full pipeline with current-year sample returns before January
  • Verify all bank feed connections are active in QBO
  • Send §7216 consent renewal requests to all existing clients
  • Scale up TaxGPT agent capacity if needed for expected return volume
  • Ensure all ScanSnap scanners are cleaned and functioning (run cleaning sheets)
  • Pre-configure TaxDome organizers for the new tax year

SLA Considerations:

  • During tax season (January 15 – April 15): 4-hour response / 8-hour resolution SLA for any system affecting return preparation
  • Off-season: next business day response / 48-hour resolution standard SLA
  • Critical security incidents (suspected breach, ransomware): 1-hour response, 24/7 coverage required
  • AI platform outages: escalate to vendor support immediately; maintain manual fallback procedures

Escalation Path:

  • L1 (MSP Helpdesk): Scanner issues, basic login problems, password resets, general workstation support
  • L2 (MSP Senior Tech): AI platform configuration issues, integration failures, Dext/Botkeeper/TaxDome troubleshooting, bank feed reconnection
  • L3 (MSP Solutions Architect / vCISO): Compliance concerns, §7216 questions, WISP updates, security incidents, AI accuracy degradation, vendor escalations
  • Vendor Support: TaxGPT (enterprise support channel), Dext (partner support), Botkeeper (partner success manager), Drake (support hotline 828-524-8020)

Model Retraining / AI Tuning Triggers:

  • Dext: Retrain when extraction accuracy for a document type drops below 95% — correct errors in Dext to improve the learning model
  • Botkeeper: Review categorization rules when a new major vendor is added, chart of accounts is restructured, or client's business model changes significantly
  • TaxGPT: Annually updated by vendor for tax law changes; report persistent errors to TaxGPT support for model improvement
  • Anomaly Detector: Update historical baseline data annually; adjust threshold parameters if false positive rate exceeds 20% or false negative rate is observed
  • QA Checker Prompt: Update annually for tax law changes; add new review criteria based on IRS compliance focus areas for the current filing season

Want early access to the full toolkit?