Bookkeeping Module - Requirements Specification
Version: 1.0 Draft
Date: December 23, 2025
Status: Pending Client Input
Parent Document: tax_practice_ai_requirements.md
Table of Contents
- Overview
- Follow-Up Questions
- Functional Requirements
- Integration Requirements
- AI Capabilities
- Cost Analysis
- Implementation Phases
1. Overview
1.1 Purpose
This document defines requirements for a bookkeeping module that extends the Tax Practice AI system to provide year-round financial services. The module processes bank statements, categorizes transactions, and integrates with QuickBooks.
1.2 Relationship to Tax Practice AI
This module shares infrastructure with the core Tax Practice AI system:
| Shared Component |
Reference |
| Client portal |
tax_practice_ai_requirements.md Section 8.2 |
| Document upload |
tax_practice_ai_requirements.md Section 3.3 |
| AI/Bedrock integration |
tax_practice_ai_requirements.md Section 9 |
| Aurora database |
ARCHITECTURE.md Section 7 |
| S3 document storage |
ARCHITECTURE.md Section 7.8 |
| Security & compliance |
tax_practice_ai_requirements.md Sections 4-5 |
1.3 Key Differences from Tax Workflow
| Aspect |
Tax Preparation |
Bookkeeping |
| Cadence |
Annual (seasonal) |
Monthly (year-round) |
| Client engagement |
Burst activity Jan-Apr |
Ongoing relationship |
| Primary output |
Tax return |
Categorized transactions, QuickBooks sync |
| Workflow |
Document -> Prep -> Review -> File |
Ingest -> Categorize -> Reconcile -> Export |
| Revenue model |
Per-return fee |
Monthly retainer |
1.4 Design Principles
- Start Light, Design for Full - Initial version focuses on tax-ready categorization; architecture supports future full bookkeeping
- Monthly Cadence - System designed around monthly statement processing and reconciliation
- QuickBooks as System of Record - This system categorizes and exports; QuickBooks maintains the official books
- Learn from Corrections - AI improves per-client based on user feedback
1.5 Service Level Options
| Service Level |
Description |
Phase |
| Tax-Ready Categorization |
Categorize transactions for tax prep, export to QuickBooks |
Phase 1 |
| Monthly Reconciliation |
Add balance verification, recurring transaction detection |
Phase 2 |
| Full Bookkeeping |
Chart of accounts, P&L, Balance Sheet, A/R-A/P, two-way sync |
Phase 3 |
2. Follow-Up Questions
2.1 Service Level
Question: What level of bookkeeping service will be offered initially?
| Option |
Description |
Complexity |
| Tax-Ready Categorization |
Categorize transactions, export to QuickBooks |
Moderate |
| Full Bookkeeping |
Chart of accounts, reconciliation, financial statements |
Significant |
Recommendation: Start with Tax-Ready Categorization (Phase 1), add reconciliation (Phase 2), then full bookkeeping (Phase 3) based on demand.
2.2 Target Clients
Question: Which clients will receive bookkeeping services?
| Option |
Description |
| Business entities only |
1120S, 1065, 1120 clients |
| Business income clients |
Includes Schedule C filers |
| Any client |
Anyone who requests the service |
Impact: Determines volume projections, staffing, and pricing strategy.
2.3 Pricing Model
Question: How will bookkeeping services be priced?
| Model |
Description |
| Monthly retainer |
Fixed fee per month regardless of transaction volume |
| Per-transaction |
Fee based on number of transactions processed |
| Tiered |
Monthly fee with transaction limits, overage charges |
2.4 Statement Sources
Question: How will bank statements be obtained?
| Method |
Phase |
Notes |
| Manual PDF upload |
Phase 1 |
Client uploads via portal |
| Direct bank feed (Plaid) |
Future |
Automated, adds ~$50-200/mo |
| Both options |
Future |
Client choice |
3. Functional Requirements
3.1 Bank Statement Processing
| ID |
Requirement |
Priority |
| BKP-001 |
System shall accept bank statement uploads (PDF) via client portal |
Must Have |
| BKP-002 |
System shall extract transactions from bank statements using AI/OCR |
Must Have |
| BKP-003 |
System shall support multiple bank accounts per client |
Must Have |
| BKP-004 |
System shall extract statement date range and ending balance |
Must Have |
| BKP-005 |
System shall detect and flag duplicate statement uploads |
Should Have |
| BKP-006 |
System shall support common bank statement formats (Chase, BofA, Wells Fargo, etc.) |
Must Have |
| BKP-007 |
System shall flag statements that fail extraction for manual review |
Must Have |
| BKP-008 |
System shall support direct bank feeds via Plaid API |
Future |
3.2 Transaction Categorization
| ID |
Requirement |
Priority |
| BKP-010 |
System shall automatically categorize transactions using AI |
Must Have |
| BKP-011 |
System shall assign confidence score to each categorization |
Must Have |
| BKP-012 |
System shall flag low-confidence categorizations for human review |
Must Have |
| BKP-013 |
System shall learn from user corrections to improve future categorization |
Should Have |
| BKP-014 |
System shall support client-specific categorization rules |
Should Have |
| BKP-015 |
System shall detect recurring transactions (rent, subscriptions, payroll) |
Should Have |
| BKP-016 |
System shall flag unusual transactions for review (large amounts, new vendors) |
Should Have |
| BKP-017 |
System shall support split transactions (partial business/personal) |
Should Have |
| BKP-018 |
System shall support bulk categorization of similar transactions |
Should Have |
Standard Categories (Tax-Oriented):
| Category |
Tax Schedule/Line |
Notes |
| Advertising |
Schedule C Line 8 |
Marketing, promotions |
| Bank Fees |
Schedule C Line 27a |
Service charges, wire fees |
| Car and Truck |
Schedule C Line 9 |
Fuel, maintenance, parking |
| Contract Labor |
Schedule C Line 11 |
1099 contractors |
| Insurance |
Schedule C Line 15 |
Business insurance premiums |
| Interest |
Schedule C Line 16 |
Business loan interest |
| Legal and Professional |
Schedule C Line 17 |
Attorney, accountant fees |
| Office Expense |
Schedule C Line 18 |
Supplies, software subscriptions |
| Rent |
Schedule C Line 20b |
Office/equipment rent |
| Repairs and Maintenance |
Schedule C Line 21 |
Equipment repairs |
| Supplies |
Schedule C Line 22 |
Materials, inventory |
| Taxes and Licenses |
Schedule C Line 23 |
Business licenses, permits |
| Travel |
Schedule C Line 24a |
Flights, hotels, transportation |
| Meals |
Schedule C Line 24b |
Business meals (50% deductible) |
| Utilities |
Schedule C Line 25 |
Electric, internet, phone |
| Wages |
Schedule C Line 26 |
Employee payroll |
| Other Expense |
Schedule C Line 27a |
Miscellaneous deductible |
| Owner Draw |
N/A |
Not deductible, equity reduction |
| Personal |
N/A |
Not deductible, flag for review |
| Transfer |
N/A |
Between accounts, not categorized |
| Income |
Various |
Revenue deposits |
3.3 Monthly Workflow
| ID |
Requirement |
Priority |
| BKP-020 |
System shall track bookkeeping status per client per month |
Must Have |
| BKP-021 |
System shall notify client when statements are due |
Should Have |
| BKP-022 |
System shall notify staff when statements are received |
Must Have |
| BKP-023 |
System shall provide dashboard showing all clients by monthly status |
Must Have |
| BKP-024 |
System shall support month-end deadline tracking |
Should Have |
Workflow States:
| State |
Description |
Owner |
| Awaiting Statements |
Month open, no statements uploaded |
Client |
| Statements Received |
Statements uploaded, pending extraction |
System |
| Extraction Complete |
Transactions extracted, pending categorization |
System |
| Categorization Review |
AI categorized, pending human review |
Staff |
| Ready for Reconciliation |
Categorization approved, pending balance check |
Staff |
| Reconciled |
Month balanced and closed |
Staff |
| Exported |
Data sent to QuickBooks |
System |
3.4 Reconciliation (Phase 2)
| ID |
Requirement |
Priority |
| BKP-030 |
System shall track expected vs actual transaction count per statement |
Phase 2 |
| BKP-031 |
System shall calculate running balance from transactions |
Phase 2 |
| BKP-032 |
System shall compare calculated balance to statement ending balance |
Phase 2 |
| BKP-033 |
System shall flag reconciliation discrepancies for review |
Phase 2 |
| BKP-034 |
System shall support marking month as "reconciled" after review |
Phase 2 |
| BKP-035 |
System shall prevent edits to reconciled months without explicit unlock |
Phase 2 |
| BKP-036 |
System shall track reconciliation history with timestamps |
Phase 2 |
3.5 Reporting
| ID |
Requirement |
Priority |
| BKP-040 |
System shall generate monthly transaction summary by category |
Must Have |
| BKP-041 |
System shall generate year-to-date expense summary |
Must Have |
| BKP-042 |
System shall generate uncategorized transaction report |
Must Have |
| BKP-043 |
System shall flag year-over-year category variances |
Should Have |
| BKP-044 |
System shall generate tax-ready annual summary by category |
Must Have |
3.6 Full Bookkeeping (Phase 3)
| ID |
Requirement |
Priority |
| BKP-050 |
System shall support custom chart of accounts per client |
Phase 3 |
| BKP-051 |
System shall generate Profit & Loss statement |
Phase 3 |
| BKP-052 |
System shall generate Balance Sheet |
Phase 3 |
| BKP-053 |
System shall support journal entries |
Phase 3 |
| BKP-054 |
System shall support accounts receivable tracking |
Phase 3 |
| BKP-055 |
System shall support accounts payable tracking |
Phase 3 |
| BKP-056 |
System shall support accrual basis accounting |
Phase 3 |
4. Integration Requirements
4.1 QuickBooks Integration
| ID |
Requirement |
Priority |
| QBO-001 |
System shall integrate with QuickBooks Online API |
Must Have |
| QBO-002 |
Integration shall support OAuth 2.0 authentication |
Must Have |
| QBO-003 |
Integration shall export categorized transactions to QuickBooks |
Must Have |
| QBO-004 |
Integration shall map internal categories to QuickBooks chart of accounts |
Must Have |
| QBO-005 |
Integration shall prevent duplicate transaction exports |
Must Have |
| QBO-006 |
Integration shall log all sync activity for audit |
Must Have |
| QBO-007 |
Integration shall handle API rate limits gracefully |
Must Have |
| QBO-008 |
Integration shall support QuickBooks Desktop export via IIF file |
Should Have |
| QBO-009 |
Integration shall support two-way sync |
Phase 3 |
QuickBooks Connection Flow:
- Staff initiates QuickBooks connection for client
- Client authorizes via OAuth (QuickBooks login)
- System retrieves chart of accounts for category mapping
- Staff maps internal categories to QuickBooks accounts
- System exports transactions monthly after reconciliation
4.2 Bank Feed Integration (Future)
| ID |
Requirement |
Priority |
| PLD-001 |
System shall integrate with Plaid API for direct bank feeds |
Future |
| PLD-002 |
Integration shall support automated daily transaction retrieval |
Future |
| PLD-003 |
Integration shall support client bank linking via Plaid Link |
Future |
| PLD-004 |
Integration shall fall back to manual upload if Plaid unavailable |
Future |
| PLD-005 |
Integration shall handle Plaid token refresh automatically |
Future |
Note: Plaid adds ~$50-200/month depending on connected accounts. Manual PDF upload is the initial approach; Plaid is a future enhancement for clients who want automation.
5. AI Capabilities
5.1 Transaction Categorization
| ID |
Requirement |
Priority |
| AIT-001 |
AI shall categorize bank transactions by expense type |
Must Have |
| AIT-002 |
AI shall assign confidence score (0-100%) to each categorization |
Must Have |
| AIT-003 |
AI shall learn from user corrections per client |
Should Have |
| AIT-004 |
AI shall detect recurring transactions (same vendor, similar amount) |
Should Have |
| AIT-005 |
AI shall flag unusual transactions (large amounts, new vendors) |
Should Have |
| AIT-006 |
AI shall suggest category based on vendor name matching |
Must Have |
| AIT-007 |
AI shall handle split transactions (suggest business vs personal split) |
Should Have |
| AIT-008 |
AI shall maintain per-client vendor-to-category mappings |
Should Have |
| ID |
Requirement |
Priority |
| AIT-010 |
AI shall extract transaction date, description, and amount from statements |
Must Have |
| AIT-011 |
AI shall identify statement date range and ending balance |
Must Have |
| AIT-012 |
AI shall handle multi-page statements |
Must Have |
| AIT-013 |
AI shall flag low-quality scans for re-upload |
Should Have |
| AIT-014 |
AI shall normalize vendor names (remove transaction IDs, standardize) |
Should Have |
5.3 Model Selection
| Task |
Recommended Model |
Rationale |
| Statement OCR/extraction |
Claude Sonnet |
Structured output, accuracy critical |
| Transaction categorization |
Claude Haiku |
High volume, simpler task |
| Anomaly detection |
Claude Sonnet |
Pattern recognition |
| Complex categorization (splits) |
Claude Sonnet |
Reasoning required |
6. Cost Analysis
6.1 Infrastructure Costs
Bookkeeping shares infrastructure with Tax Practice AI. Incremental costs:
| Component |
Monthly Estimate |
Notes |
| Aurora storage |
+$5-10 |
Transaction data |
| S3 storage |
+$2-5 |
Statement PDFs |
| AI/Bedrock |
+$50-150 |
Extraction + categorization |
| Subtotal |
$57-165 |
Per 50 bookkeeping clients |
6.2 Third-Party Costs
| Service |
Cost |
Notes |
| QuickBooks Online API |
$0 |
Included with QBO subscription (client pays) |
| Plaid (future) |
$0.30-1.00/account/month |
Direct bank feeds |
6.3 Per-Client Cost Estimate
| Volume |
AI Cost/Month |
Notes |
| ~50 transactions |
$1-3 |
Small business, one account |
| ~200 transactions |
$3-8 |
Medium business, multiple accounts |
| ~500+ transactions |
$8-15 |
Larger business |
7. Implementation Phases
Phase 1: Tax-Ready Categorization (MVP)
Scope:
- Bank statement upload (PDF)
- AI transaction extraction
- AI categorization with human review
- Monthly transaction reports
- QuickBooks Online export (one-way)
Target: Available with main Tax Practice AI launch
Phase 2: Reconciliation
Scope:
- Bank balance reconciliation
- Recurring transaction detection
- Reconciliation locking
- Enhanced reporting
Target: Post-launch enhancement
Phase 3: Full Bookkeeping
Scope:
- Custom chart of accounts
- Journal entries
- P&L and Balance Sheet
- A/R and A/P tracking
- Two-way QuickBooks sync
- Plaid integration
Target: Based on client demand
Appendix A: Database Schema (Phase 1)
bookkeeping_accounts -- Bank accounts per client
├── id
├── client_id (FK)
├── account_name
├── account_type (checking, savings, credit)
├── institution_name
├── last_4_digits
├── created_at
└── is_active
bookkeeping_statements -- Uploaded bank statements
├── id
├── account_id (FK)
├── statement_month (YYYY-MM)
├── statement_start_date
├── statement_end_date
├── ending_balance
├── s3_key
├── extraction_status
├── uploaded_at
└── extracted_at
bookkeeping_transactions -- Extracted transactions
├── id
├── statement_id (FK)
├── transaction_date
├── description_raw
├── description_normalized
├── amount
├── transaction_type (debit, credit)
├── category_id (FK)
├── category_confidence
├── is_reviewed
├── reviewed_by
├── reviewed_at
├── is_recurring
├── recurring_group_id
└── notes
bookkeeping_categories -- Category definitions
├── id
├── name
├── tax_line
├── is_deductible
├── is_system (vs custom)
└── parent_category_id
bookkeeping_category_rules -- Per-client learned rules
├── id
├── client_id (FK)
├── vendor_pattern
├── category_id (FK)
├── confidence_boost
└── created_from_correction
bookkeeping_months -- Monthly status tracking
├── id
├── client_id (FK)
├── month (YYYY-MM)
├── status
├── statements_expected
├── statements_received
├── transactions_total
├── transactions_categorized
├── transactions_reviewed
├── reconciled_at
├── reconciled_by
├── exported_at
└── qbo_sync_id
Document History
| Version |
Date |
Author |
Changes |
| 1.0 Draft |
December 23, 2025 |
[Author] |
Initial bookkeeping requirements |
This document is a companion to tax_practice_ai_requirements.md and defines the bookkeeping module as a separate phase of the Tax Practice AI system.