Skip to main content

Intelligent financial modeling platform for small businesses

Project description

WACCY

Intelligent Financial Modeling Platform for Small Businesses

License: MIT Python 3.13+ Code style: ruff

WACCY Logo

WACCY is an intelligent financial modeling platform designed to automatically extract, parse, classify, and synthesize business data from diverse sources to generate sophisticated, production-grade financial models and operating analyses. The platform's primary focus is on small businessesโ€”from sole proprietorships to growing companiesโ€”that struggle with messy, incomplete, and poorly-maintained financial records.

Unlike large enterprises with dedicated accounting teams, small businesses often have inconsistent record-keeping, ambiguous account classifications, incomplete data, and limited financial infrastructure. WACCY transforms this raw, often chaotic business data into comprehensive, auditable, and decision-ready financial models that adhere to institutional-quality standards.

๐Ÿš€ Quick Start

Installation

WACCY uses uv, the modern Python package manager. Install the core platform:

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install WACCY core platform
uv pip install waccy

# Install with core extensions (QuickBooks Online and SEC EDGAR)
uv pip install "waccy[quickbooks,edgar]"

# Or install individual extensions
uv pip install waccy-quickbooks
uv pip install waccy-edgar

Basic Usage

from waccy.extraction import ExtractorRegistry
from waccy.modeling import ModelBuilder

# Discover available extractors
registry = ExtractorRegistry()
available_sources = registry.list_extractors()
print(f"Available data sources: {available_sources}")

# Extract data from QuickBooks Online
quickbooks_extractor = registry.get_extractor("quickbooks")
extracted_data = quickbooks_extractor().extract({
    "company_id": "your_company_id",
    "date_range": ("2023-01-01", "2024-12-31")
})

# Build a 3-statement financial model
builder = ModelBuilder()
model = builder.build_three_statement_model(
    extracted_data=extracted_data,
    forecast_periods=12
)

# Export to Google Sheets
builder.export_to_sheets(model, output_path="financial_model.xlsx")

๐Ÿ“‹ Core Features

๐Ÿค– AI-Powered Data Extraction & Classification

  • Intelligent Account Mapping: LLM-enhanced classification for ambiguous account names and inconsistent categorizations
  • Missing Data Inference: Patterns learned from high-quality sources (EDGAR filings) to infer missing information
  • Causal Chain Recognition: Understands how financial events cascade through statements
  • Terminology Normalization: Maps equivalent concepts across different naming conventions
  • Confidence Scoring: Every classification includes a confidence score for quality assessment

๐Ÿ—๏ธ Standardized Financial Ontology

  • WACCY Standard Chart of Accounts: Comprehensive, standardized classification ontology
  • Universal Mapping: All data sources map to the same standard accounts for consistency
  • Industry Templates: Pre-configured extensions for SaaS, manufacturing, retail, real estate, and more
  • Quality Quantification: Standardized ontology enables measurement of data quality and model reliability

๐Ÿ“Š Institutional-Quality Financial Models

  • 3-Statement Integrated Models: Income statement, balance sheet, and cash flow with full balancing
  • DCF Valuation Models: Detailed free cash flow construction, terminal value analysis, WACC calculation
  • Trading Comparables: Peer company analysis with multiple calculation and benchmarking
  • Transaction Comparables: Precedent M&A transaction analysis
  • LBO Models: Leveraged buyout analysis with returns calculation and debt schedules
  • M&A Models: Accretion/dilution analysis with purchase accounting
  • Specialized Models: SaaS cohort models, REIT models, project finance, cap tables, and more

๐Ÿ”Œ Modular Extension Architecture

  • Core Platform: Focused core with QuickBooks Online and SEC EDGAR as primary data sources
  • Extensible Design: Community-developed extension packages for additional data sources
  • Entry Point Discovery: Automatic discovery of extensions via Python entry points
  • Simple Installation: Install only the extensions you need

๐Ÿ“ˆ Advanced Forecasting & Analysis

  • Driver-Based Forecasting: Revenue builds from price ร— volume, units ร— ARPU, cohort models
  • Working Capital Modeling: DSO, DIO, DPO analysis with seasonality adjustments
  • Debt & Interest Modeling: Revolver mechanics, amortization schedules, cash sweep waterfalls
  • Tax Modeling: Effective tax rates, DTAs/DTLs, NOL utilization tracking
  • Sensitivity Analysis: Comprehensive scenario modeling and tornado charts

โœ… Data Quality & Validation

  • Pandera Validation: Schema-based validation for extracted data
  • Mapping Confidence Scores: Quantify the reliability of account mappings
  • Reconciliation Checks: Cross-referencing between sources and balance checks
  • Audit Trails: Every data point traceable to source with full provenance

๐Ÿ“ Professional Model Outputs

  • Google Sheets Export: Production-ready spreadsheet models with proper formatting
  • Professional Architecture: Modular tab structures, consistent time axis, clear sign conventions
  • Color Conventions: Inputs in blue, calculations in black, outputs in green
  • Balance Checks: Built-in reconciliation tables and error flags
  • Scenario Tooling: Data tables for sensitivity analysis, scenario toggles, goal seek integration

๐Ÿ”„ Complete Workflow

from waccy.extraction import ExtractorRegistry
from waccy.classification import ClassificationEngine
from waccy.modeling import ModelBuilder
from waccy.core.ontology import StandardChartOfAccounts

# 1. Extract data from QuickBooks Online (handles messy, incomplete records)
registry = ExtractorRegistry()
extractor = registry.get_extractor("quickbooks")()
credentials = {
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "access_token": "your_access_token"
}
extractor.authenticate(credentials)

extracted_data = extractor.extract({
    "company_id": "123456789",
    "date_range": ("2022-01-01", "2024-12-31"),
    "include_transactions": True
})

# 2. Classify and map to standard accounts (with LLM enhancement for ambiguity)
ontology = StandardChartOfAccounts()
classification_engine = ClassificationEngine()

for account in extracted_data.accounts:
    mapped_account, confidence = classification_engine.classify_account(
        source_account_name=account.name,
        transaction_patterns=account.transaction_history,
        context={"company_type": "SaaS", "industry": "Software"}
    )
    print(f"Mapped '{account.name}' to '{mapped_account.name}' (confidence: {confidence:.2f})")

# 3. Build 3-statement integrated model
builder = ModelBuilder()
model = builder.build_three_statement_model(
    extracted_data=extracted_data,
    forecast_periods=24
)

# 4. Generate DCF valuation
dcf_model = builder.build_dcf_model(
    three_statement_model=model,
    wacc=0.10,
    terminal_growth_rate=0.03,
    exit_multiple=12.0
)

# 5. Export to Google Sheets
builder.export_to_sheets(model, output_path="financial_model.xlsx")
builder.export_to_sheets(dcf_model, output_path="dcf_valuation.xlsx")

# 6. Generate quality report
quality_report = extracted_data.generate_quality_report()
print(f"Data completeness: {quality_report.completeness:.2%}")
print(f"Average mapping confidence: {quality_report.avg_confidence:.2f}")
print(f"Issues flagged: {len(quality_report.issues)}")

๐Ÿ“Š Example Output

Standardized Account Mapping

Source Account: "Sales Revenue" (QuickBooks)
Mapped To: Revenue - Product Sales (WACCY Standard)
Confidence: 0.95
Validation: โœ… Transaction patterns match revenue recognition

3-Statement Model Structure

Financial Model.xlsx
โ”œโ”€โ”€ Assumptions
โ”‚   โ”œโ”€โ”€ Revenue Drivers
โ”‚   โ”œโ”€โ”€ Cost Assumptions
โ”‚   โ””โ”€โ”€ Working Capital
โ”œโ”€โ”€ Income Statement
โ”‚   โ”œโ”€โ”€ Historical (3 years)
โ”‚   โ””โ”€โ”€ Forecast (2 years)
โ”œโ”€โ”€ Balance Sheet
โ”‚   โ”œโ”€โ”€ Assets (Current & Non-Current)
โ”‚   โ”œโ”€โ”€ Liabilities (Current & Non-Current)
โ”‚   โ””โ”€โ”€ Equity
โ”œโ”€โ”€ Cash Flow Statement
โ”‚   โ”œโ”€โ”€ Operating Activities
โ”‚   โ”œโ”€โ”€ Investing Activities
โ”‚   โ””โ”€โ”€ Financing Activities
โ”œโ”€โ”€ Supporting Schedules
โ”‚   โ”œโ”€โ”€ Working Capital Detail
โ”‚   โ”œโ”€โ”€ Debt Schedule
โ”‚   โ””โ”€โ”€ Depreciation
โ””โ”€โ”€ Checks & Reconciliations
    โ”œโ”€โ”€ Balance Checks
    โ””โ”€โ”€ Quality Metrics

๐Ÿ”— Core Data Sources

QuickBooks Online (QBO)

Primary Data Source - The accounting system most commonly used by small businesses.

  • Direct API integration for chart of accounts, general ledger, and financial statements
  • Intelligent handling of ambiguous, inconsistently-named accounts
  • Transaction-level detail extraction
  • Vendor and customer data integration
  • Skeptical treatment of source classifications with validation

SEC EDGAR

Pattern Learning & Reference Data - High-quality financial data for learning and benchmarking.

  • Automated parsing of 10-K, 10-Q, 8-K filings
  • Proxy statement and registration statement processing
  • Pattern extraction for proper financial classification
  • Learning causal chains from professional financial reports
  • Application of learned patterns to small business data

Extension Packages

Additional data sources available as modular extensions:

  • waccy-google - Google Drive and Gmail integration
  • waccy-xero - Xero accounting system
  • waccy-sage - Sage accounting platform
  • waccy-stripe - Payment processor data
  • waccy-salesforce - CRM and sales pipeline data

๐Ÿ“ Project Structure

waccy/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ waccy/
โ”‚       โ”œโ”€โ”€ core/
โ”‚       โ”‚   โ”œโ”€โ”€ ontology.py          # Standardized chart of accounts
โ”‚       โ”‚   โ”œโ”€โ”€ models.py            # Core data models (Pydantic)
โ”‚       โ”‚   โ””โ”€โ”€ validation.py        # Data validation (Pandera)
โ”‚       โ”œโ”€โ”€ extraction/
โ”‚       โ”‚   โ”œโ”€โ”€ base.py              # Abstract base classes
โ”‚       โ”‚   โ”œโ”€โ”€ registry.py          # Extension registry
โ”‚       โ”‚   โ””โ”€โ”€ mapper.py            # Mapping to standard ontology
โ”‚       โ”œโ”€โ”€ classification/
โ”‚       โ”‚   โ”œโ”€โ”€ engine.py            # LLM-enhanced classification
โ”‚       โ”‚   โ”œโ”€โ”€ patterns.py          # Pattern matching from EDGAR
โ”‚       โ”‚   โ””โ”€โ”€ confidence.py        # Confidence scoring
โ”‚       โ”œโ”€โ”€ modeling/
โ”‚       โ”‚   โ”œโ”€โ”€ builder.py           # Model construction
โ”‚       โ”‚   โ”œโ”€โ”€ templates.py         # Model templates
โ”‚       โ”‚   โ””โ”€โ”€ exporters.py         # Google Sheets export
โ”‚       โ””โ”€โ”€ utils/
โ”‚           โ”œโ”€โ”€ dates.py
โ”‚           โ”œโ”€โ”€ formatting.py
โ”‚           โ””โ”€โ”€ validation.py
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ unit/
โ”‚   โ”œโ”€โ”€ integration/
โ”‚   โ””โ”€โ”€ fixtures/
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ 0-MISSION.md
โ”‚   โ”œโ”€โ”€ 1-ARCHITECTURE.md
โ”‚   โ”œโ”€โ”€ 2-EXPERIENCE.md
โ”‚   โ””โ”€โ”€ skills_models.md
โ””โ”€โ”€ pyproject.toml

๐Ÿงช Testing

# Install development dependencies
uv sync --dev

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=waccy --cov-report=html

# Run specific test suites
uv run pytest tests/unit/
uv run pytest tests/integration/

# Format and lint with ruff
uv run ruff format
uv run ruff check --fix

# Type checking with mypy
uv run mypy src/waccy

๐Ÿ“š Documentation

๐Ÿ›๏ธ Design Principles

  1. Simplicity and Focus: Core platform maintains a simple, focused design with essential data sources (QBO and EDGAR)

  2. Standardized Ontology First: All financial data maps to a standardized WACCY chart of accounts, ensuring consistency and comparability

  3. Modular Extensibility: New data sources and model types added as separate packages that conform to core interfaces

  4. Accuracy First: Deterministic functions preferred over probabilistic models. LLMs used for parsing and classification, not financial calculations

  5. Transparency and Auditability: Every data point traceable to source, every calculation explainable, every assumption documented

  6. Professional Standards: Models adhere to institutional-quality standards for architecture, formatting, and presentation

  7. Quality Quantification: Standardized ontology enables measurement and reporting of data quality and model output reliability

  8. Small Business Focus: Designed primarily for small businessesโ€”from sole proprietorships to growing companiesโ€”handling messy, incomplete data

๐Ÿค Contributing

We welcome contributions! WACCY is built for the small business community, and we'd love your help making financial modeling more accessible.

Getting Started

  1. Fork the repository on GitHub
  2. Create a feature branch for your contribution
  3. Set up development environment:
    git clone https://github.com/your-username/waccy.git
    cd waccy
    uv sync --dev
    
  4. Make your changes following our coding standards:
    • Use ruff for formatting and linting
    • Add type hints with mypy compliance
    • Write tests for new functionality
    • Update documentation as needed
  5. Run tests and linting:
    uv run pytest
    uv run ruff check
    uv run mypy src/
    
  6. Submit a pull request with a clear description of your changes

Creating Extensions

Want to add a new data source? Create an extension package:

  1. Create a new package: waccy-yourdatasource
  2. Implement the Extractor interface from waccy.extraction.base
  3. Register your extension via entry points
  4. Follow the Extension Development Guide

See our Architecture Documentation for detailed extension development guidelines.

Code of Conduct

Please read and follow our Code of Conduct to ensure a welcoming environment for all contributors.

๐Ÿ“ˆ Project Status

  • Phase 1: ๐Ÿ“‹ Planned - Core foundation and 3-statement models
  • Phase 2: ๐Ÿ“‹ Planned - Public market data and pattern learning (EDGAR)
  • Phase 3: ๐Ÿ“‹ Planned - Advanced valuation models (DCF, M&A, LBO)
  • Phase 4: ๐Ÿ“‹ Planned - Specialized model types (SaaS, REIT, project finance)
  • Phase 5: ๐Ÿ“‹ Planned - Advanced analysis and decision support

Current Status: Early development - Architecture and core platform design
Python Version: 3.13+
Package Manager: uv
CI/CD: GitHub Actions (coming soon)

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Small Business Community - Built for entrepreneurs and small business owners who need professional financial modeling
  • Financial Modeling Community - Inspired by institutional-quality modeling standards
  • Open Source Tools:
    • uv - Modern Python package manager
    • ruff - Fast Python linter and formatter
    • Pydantic - Data validation framework
    • Polars - High-performance data manipulation
    • Pandera - Statistical data validation

Made with ๐Ÿคช for small businesses that deserve institutional-quality financial modeling

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

waccy-0.0a1.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

waccy-0.0a1-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file waccy-0.0a1.tar.gz.

File metadata

  • Download URL: waccy-0.0a1.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.16

File hashes

Hashes for waccy-0.0a1.tar.gz
Algorithm Hash digest
SHA256 e5d655803fb787aa2e3d7f25d494276333f51dadfaf9093c4185e29cfb49fda7
MD5 203e0db57c6b9304059307144a2e1858
BLAKE2b-256 d861dace537c6841b2cb87a71133c3d605296d50b1bd1653cd540cd5f45df5c8

See more details on using hashes here.

File details

Details for the file waccy-0.0a1-py3-none-any.whl.

File metadata

  • Download URL: waccy-0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.16

File hashes

Hashes for waccy-0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 27a72f6c5b25064aea5c53b64c1abb03064d8337e1584d56116100f662c2b767
MD5 e502d6103174530a29a9194bfc531588
BLAKE2b-256 905eab82d05bc0306b0e7e7b71ef9f228e00b07975cf8f093898b7c9a347e9cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page