waccy 0.0a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. waccy-0.0a1/.gitignore +129 -0
  2. waccy-0.0a1/CODE_OF_CONDUCT.md +93 -0
  3. waccy-0.0a1/LICENSE +21 -0
  4. waccy-0.0a1/PKG-INFO +442 -0
  5. waccy-0.0a1/README.md +414 -0
  6. waccy-0.0a1/docs/0-MISSION.md +360 -0
  7. waccy-0.0a1/docs/1-ARCHITECTURE.md +684 -0
  8. waccy-0.0a1/docs/2-EXPERIENCE.md +1 -0
  9. waccy-0.0a1/docs/skills_models.md +106 -0
  10. waccy-0.0a1/main.py +6 -0
  11. waccy-0.0a1/pyproject.toml +108 -0
  12. waccy-0.0a1/scripts/publish.py +187 -0
  13. waccy-0.0a1/src/waccy/__init__.py +34 -0
  14. waccy-0.0a1/src/waccy/classification/__init__.py +12 -0
  15. waccy-0.0a1/src/waccy/classification/confidence.py +24 -0
  16. waccy-0.0a1/src/waccy/classification/engine.py +33 -0
  17. waccy-0.0a1/src/waccy/classification/patterns.py +22 -0
  18. waccy-0.0a1/src/waccy/cli.py +28 -0
  19. waccy-0.0a1/src/waccy/core/__init__.py +15 -0
  20. waccy-0.0a1/src/waccy/core/models.py +37 -0
  21. waccy-0.0a1/src/waccy/core/ontology.py +63 -0
  22. waccy-0.0a1/src/waccy/core/validation.py +15 -0
  23. waccy-0.0a1/src/waccy/extraction/__init__.py +14 -0
  24. waccy-0.0a1/src/waccy/extraction/base.py +46 -0
  25. waccy-0.0a1/src/waccy/extraction/mapper.py +23 -0
  26. waccy-0.0a1/src/waccy/extraction/registry.py +55 -0
  27. waccy-0.0a1/src/waccy/modeling/__init__.py +12 -0
  28. waccy-0.0a1/src/waccy/modeling/builder.py +48 -0
  29. waccy-0.0a1/src/waccy/modeling/exporters.py +22 -0
  30. waccy-0.0a1/src/waccy/modeling/templates.py +28 -0
  31. waccy-0.0a1/src/waccy/utils/__init__.py +14 -0
  32. waccy-0.0a1/src/waccy/utils/dates.py +28 -0
  33. waccy-0.0a1/src/waccy/utils/formatting.py +16 -0
  34. waccy-0.0a1/src/waccy/utils/validation.py +14 -0
  35. waccy-0.0a1/tests/__init__.py +2 -0
  36. waccy-0.0a1/tests/fixtures/__init__.py +2 -0
  37. waccy-0.0a1/tests/fixtures/sample_data.py +29 -0
  38. waccy-0.0a1/tests/integration/__init__.py +2 -0
  39. waccy-0.0a1/tests/unit/__init__.py +2 -0
  40. waccy-0.0a1/tests/unit/test_extraction.py +17 -0
  41. waccy-0.0a1/tests/unit/test_ontology.py +32 -0
  42. waccy-0.0a1/uv.lock +573 -0
  43. waccy-0.0a1/waccy-logo-NoBG.png +0 -0
  44. waccy-0.0a1/waccy-logo.png +0 -0
waccy-0.0a1/.gitignore ADDED
@@ -0,0 +1,129 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
@@ -0,0 +1,93 @@
1
+
2
+ # WACCY Code of Conduct
3
+
4
+ Adapted from Contributor Covenant 3.0 Code of Conduct
5
+
6
+ ## Our Pledge
7
+
8
+ We pledge to make our community welcoming, safe, and equitable for all.
9
+
10
+ We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
11
+
12
+
13
+ ## Encouraged Behaviors
14
+
15
+ While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
16
+
17
+ With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
18
+
19
+ 1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
20
+ 2. Engaging **kindly and honestly** with others.
21
+ 3. Respecting **different viewpoints** and experiences.
22
+ 4. **Taking responsibility** for our actions and contributions.
23
+ 5. Gracefully giving and accepting **constructive feedback**.
24
+ 6. Committing to **repairing harm** when it occurs.
25
+ 7. Behaving in other ways that promote and sustain the **well-being of our community**.
26
+
27
+
28
+ ## Restricted Behaviors
29
+
30
+ We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
31
+
32
+ 1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
33
+ 2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
34
+ 3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits.
35
+ 4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
36
+ 5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
37
+ 6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
38
+ 7. Behaving in other ways that **threaten the well-being** of our community.
39
+
40
+ ### Other Restrictions
41
+
42
+ 1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
43
+ 2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
44
+ 3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
45
+ 4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
46
+
47
+
48
+ ## Reporting an Issue
49
+
50
+ Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
51
+
52
+ When an incident does occur, it is important to report it promptly. To report a possible violation, please use the contact methods available on the project's GitHub repository.
53
+
54
+ Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
55
+
56
+
57
+ ## Addressing and Repairing Harm
58
+
59
+ If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
60
+
61
+ 1) Warning
62
+ 1) Event: A violation involving a single incident or series of incidents.
63
+ 2) Consequence: A private, written warning from the Community Moderators.
64
+ 3) Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
65
+ 2) Temporarily Limited Activities
66
+ 1) Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
67
+ 2) Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
68
+ 3) Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
69
+ 3) Temporary Suspension
70
+ 1) Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
71
+ 2) Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
72
+ 3) Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
73
+ 4) Permanent Ban
74
+ 1) Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
75
+ 2) Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
76
+ 3) Repair: There is no possible repair in cases of this severity.
77
+
78
+ This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
79
+
80
+
81
+ ## Scope
82
+
83
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
84
+
85
+
86
+ ## Attribution
87
+
88
+ This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
89
+
90
+ Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
91
+
92
+ For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
93
+
waccy-0.0a1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 David Spencer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
waccy-0.0a1/PKG-INFO ADDED
@@ -0,0 +1,442 @@
1
+ Metadata-Version: 2.4
2
+ Name: waccy
3
+ Version: 0.0a1
4
+ Summary: Intelligent financial modeling platform for small businesses
5
+ Project-URL: Homepage, https://github.com/DecisionNerd/waccy
6
+ Project-URL: Repository, https://github.com/DecisionNerd/waccy
7
+ Project-URL: Issues, https://github.com/DecisionNerd/waccy/issues
8
+ Project-URL: Documentation, https://github.com/DecisionNerd/waccy#readme
9
+ Author: WACCY Contributors
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: accounting,finance,financial-modeling,valuation
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Financial and Insurance Industry
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Office/Business :: Financial
18
+ Requires-Python: >=3.13
19
+ Requires-Dist: numpy>=2.3.5
20
+ Requires-Dist: pandera>=0.27.0
21
+ Requires-Dist: polars>=1.36.1
22
+ Requires-Dist: pydantic>=2.12.5
23
+ Provides-Extra: edgar
24
+ Requires-Dist: waccy-edgar>=0.1.0; extra == 'edgar'
25
+ Provides-Extra: quickbooks
26
+ Requires-Dist: waccy-quickbooks>=0.1.0; extra == 'quickbooks'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # WACCY
30
+
31
+ **Intelligent Financial Modeling Platform for Small Businesses**
32
+
33
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
34
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
35
+ [![Code style: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
36
+
37
+ <div align="center">
38
+ <img src="waccy-logo-NoBG.png" alt="WACCY Logo" width="400"/>
39
+ </div>
40
+
41
+ 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.**
42
+
43
+ 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.
44
+
45
+ ## 🚀 Quick Start
46
+
47
+ ### Installation
48
+
49
+ WACCY uses `uv`, the modern Python package manager. Install the core platform:
50
+
51
+ ```bash
52
+ # Install uv if you haven't already
53
+ curl -LsSf https://astral.sh/uv/install.sh | sh
54
+
55
+ # Install WACCY core platform
56
+ uv pip install waccy
57
+
58
+ # Install with core extensions (QuickBooks Online and SEC EDGAR)
59
+ uv pip install "waccy[quickbooks,edgar]"
60
+
61
+ # Or install individual extensions
62
+ uv pip install waccy-quickbooks
63
+ uv pip install waccy-edgar
64
+ ```
65
+
66
+ ### Basic Usage
67
+
68
+ ```python
69
+ from waccy.extraction import ExtractorRegistry
70
+ from waccy.modeling import ModelBuilder
71
+
72
+ # Discover available extractors
73
+ registry = ExtractorRegistry()
74
+ available_sources = registry.list_extractors()
75
+ print(f"Available data sources: {available_sources}")
76
+
77
+ # Extract data from QuickBooks Online
78
+ quickbooks_extractor = registry.get_extractor("quickbooks")
79
+ extracted_data = quickbooks_extractor().extract({
80
+ "company_id": "your_company_id",
81
+ "date_range": ("2023-01-01", "2024-12-31")
82
+ })
83
+
84
+ # Build a 3-statement financial model
85
+ builder = ModelBuilder()
86
+ model = builder.build_three_statement_model(
87
+ extracted_data=extracted_data,
88
+ forecast_periods=12
89
+ )
90
+
91
+ # Export to Google Sheets
92
+ builder.export_to_sheets(model, output_path="financial_model.xlsx")
93
+ ```
94
+
95
+ ## 📋 Core Features
96
+
97
+ ### 🤖 **AI-Powered Data Extraction & Classification**
98
+
99
+ * **Intelligent Account Mapping**: LLM-enhanced classification for ambiguous account names and inconsistent categorizations
100
+ * **Missing Data Inference**: Patterns learned from high-quality sources (EDGAR filings) to infer missing information
101
+ * **Causal Chain Recognition**: Understands how financial events cascade through statements
102
+ * **Terminology Normalization**: Maps equivalent concepts across different naming conventions
103
+ * **Confidence Scoring**: Every classification includes a confidence score for quality assessment
104
+
105
+ ### 🏗️ **Standardized Financial Ontology**
106
+
107
+ * **WACCY Standard Chart of Accounts**: Comprehensive, standardized classification ontology
108
+ * **Universal Mapping**: All data sources map to the same standard accounts for consistency
109
+ * **Industry Templates**: Pre-configured extensions for SaaS, manufacturing, retail, real estate, and more
110
+ * **Quality Quantification**: Standardized ontology enables measurement of data quality and model reliability
111
+
112
+ ### 📊 **Institutional-Quality Financial Models**
113
+
114
+ * **3-Statement Integrated Models**: Income statement, balance sheet, and cash flow with full balancing
115
+ * **DCF Valuation Models**: Detailed free cash flow construction, terminal value analysis, WACC calculation
116
+ * **Trading Comparables**: Peer company analysis with multiple calculation and benchmarking
117
+ * **Transaction Comparables**: Precedent M&A transaction analysis
118
+ * **LBO Models**: Leveraged buyout analysis with returns calculation and debt schedules
119
+ * **M&A Models**: Accretion/dilution analysis with purchase accounting
120
+ * **Specialized Models**: SaaS cohort models, REIT models, project finance, cap tables, and more
121
+
122
+ ### 🔌 **Modular Extension Architecture**
123
+
124
+ * **Core Platform**: Focused core with QuickBooks Online and SEC EDGAR as primary data sources
125
+ * **Extensible Design**: Community-developed extension packages for additional data sources
126
+ * **Entry Point Discovery**: Automatic discovery of extensions via Python entry points
127
+ * **Simple Installation**: Install only the extensions you need
128
+
129
+ ### 📈 **Advanced Forecasting & Analysis**
130
+
131
+ * **Driver-Based Forecasting**: Revenue builds from price × volume, units × ARPU, cohort models
132
+ * **Working Capital Modeling**: DSO, DIO, DPO analysis with seasonality adjustments
133
+ * **Debt & Interest Modeling**: Revolver mechanics, amortization schedules, cash sweep waterfalls
134
+ * **Tax Modeling**: Effective tax rates, DTAs/DTLs, NOL utilization tracking
135
+ * **Sensitivity Analysis**: Comprehensive scenario modeling and tornado charts
136
+
137
+ ### ✅ **Data Quality & Validation**
138
+
139
+ * **Pandera Validation**: Schema-based validation for extracted data
140
+ * **Mapping Confidence Scores**: Quantify the reliability of account mappings
141
+ * **Reconciliation Checks**: Cross-referencing between sources and balance checks
142
+ * **Audit Trails**: Every data point traceable to source with full provenance
143
+
144
+ ### 📝 **Professional Model Outputs**
145
+
146
+ * **Google Sheets Export**: Production-ready spreadsheet models with proper formatting
147
+ * **Professional Architecture**: Modular tab structures, consistent time axis, clear sign conventions
148
+ * **Color Conventions**: Inputs in blue, calculations in black, outputs in green
149
+ * **Balance Checks**: Built-in reconciliation tables and error flags
150
+ * **Scenario Tooling**: Data tables for sensitivity analysis, scenario toggles, goal seek integration
151
+
152
+ ## 🔄 Complete Workflow
153
+
154
+ ```python
155
+ from waccy.extraction import ExtractorRegistry
156
+ from waccy.classification import ClassificationEngine
157
+ from waccy.modeling import ModelBuilder
158
+ from waccy.core.ontology import StandardChartOfAccounts
159
+
160
+ # 1. Extract data from QuickBooks Online (handles messy, incomplete records)
161
+ registry = ExtractorRegistry()
162
+ extractor = registry.get_extractor("quickbooks")()
163
+ credentials = {
164
+ "client_id": "your_client_id",
165
+ "client_secret": "your_client_secret",
166
+ "access_token": "your_access_token"
167
+ }
168
+ extractor.authenticate(credentials)
169
+
170
+ extracted_data = extractor.extract({
171
+ "company_id": "123456789",
172
+ "date_range": ("2022-01-01", "2024-12-31"),
173
+ "include_transactions": True
174
+ })
175
+
176
+ # 2. Classify and map to standard accounts (with LLM enhancement for ambiguity)
177
+ ontology = StandardChartOfAccounts()
178
+ classification_engine = ClassificationEngine()
179
+
180
+ for account in extracted_data.accounts:
181
+ mapped_account, confidence = classification_engine.classify_account(
182
+ source_account_name=account.name,
183
+ transaction_patterns=account.transaction_history,
184
+ context={"company_type": "SaaS", "industry": "Software"}
185
+ )
186
+ print(f"Mapped '{account.name}' to '{mapped_account.name}' (confidence: {confidence:.2f})")
187
+
188
+ # 3. Build 3-statement integrated model
189
+ builder = ModelBuilder()
190
+ model = builder.build_three_statement_model(
191
+ extracted_data=extracted_data,
192
+ forecast_periods=24
193
+ )
194
+
195
+ # 4. Generate DCF valuation
196
+ dcf_model = builder.build_dcf_model(
197
+ three_statement_model=model,
198
+ wacc=0.10,
199
+ terminal_growth_rate=0.03,
200
+ exit_multiple=12.0
201
+ )
202
+
203
+ # 5. Export to Google Sheets
204
+ builder.export_to_sheets(model, output_path="financial_model.xlsx")
205
+ builder.export_to_sheets(dcf_model, output_path="dcf_valuation.xlsx")
206
+
207
+ # 6. Generate quality report
208
+ quality_report = extracted_data.generate_quality_report()
209
+ print(f"Data completeness: {quality_report.completeness:.2%}")
210
+ print(f"Average mapping confidence: {quality_report.avg_confidence:.2f}")
211
+ print(f"Issues flagged: {len(quality_report.issues)}")
212
+ ```
213
+
214
+ ## 📊 Example Output
215
+
216
+ ### Standardized Account Mapping
217
+
218
+ **Source Account**: `"Sales Revenue"` (QuickBooks)
219
+ **Mapped To**: `Revenue - Product Sales` (WACCY Standard)
220
+ **Confidence**: 0.95
221
+ **Validation**: ✅ Transaction patterns match revenue recognition
222
+
223
+ ### 3-Statement Model Structure
224
+
225
+ ```
226
+ Financial Model.xlsx
227
+ ├── Assumptions
228
+ │ ├── Revenue Drivers
229
+ │ ├── Cost Assumptions
230
+ │ └── Working Capital
231
+ ├── Income Statement
232
+ │ ├── Historical (3 years)
233
+ │ └── Forecast (2 years)
234
+ ├── Balance Sheet
235
+ │ ├── Assets (Current & Non-Current)
236
+ │ ├── Liabilities (Current & Non-Current)
237
+ │ └── Equity
238
+ ├── Cash Flow Statement
239
+ │ ├── Operating Activities
240
+ │ ├── Investing Activities
241
+ │ └── Financing Activities
242
+ ├── Supporting Schedules
243
+ │ ├── Working Capital Detail
244
+ │ ├── Debt Schedule
245
+ │ └── Depreciation
246
+ └── Checks & Reconciliations
247
+ ├── Balance Checks
248
+ └── Quality Metrics
249
+ ```
250
+
251
+ ## 🔗 Core Data Sources
252
+
253
+ ### QuickBooks Online (QBO)
254
+
255
+ **Primary Data Source** - The accounting system most commonly used by small businesses.
256
+
257
+ * Direct API integration for chart of accounts, general ledger, and financial statements
258
+ * Intelligent handling of ambiguous, inconsistently-named accounts
259
+ * Transaction-level detail extraction
260
+ * Vendor and customer data integration
261
+ * Skeptical treatment of source classifications with validation
262
+
263
+ ### SEC EDGAR
264
+
265
+ **Pattern Learning & Reference Data** - High-quality financial data for learning and benchmarking.
266
+
267
+ * Automated parsing of 10-K, 10-Q, 8-K filings
268
+ * Proxy statement and registration statement processing
269
+ * Pattern extraction for proper financial classification
270
+ * Learning causal chains from professional financial reports
271
+ * Application of learned patterns to small business data
272
+
273
+ ### Extension Packages
274
+
275
+ Additional data sources available as modular extensions:
276
+
277
+ * `waccy-google` - Google Drive and Gmail integration
278
+ * `waccy-xero` - Xero accounting system
279
+ * `waccy-sage` - Sage accounting platform
280
+ * `waccy-stripe` - Payment processor data
281
+ * `waccy-salesforce` - CRM and sales pipeline data
282
+
283
+ ## 📁 Project Structure
284
+
285
+ ```
286
+ waccy/
287
+ ├── src/
288
+ │ └── waccy/
289
+ │ ├── core/
290
+ │ │ ├── ontology.py # Standardized chart of accounts
291
+ │ │ ├── models.py # Core data models (Pydantic)
292
+ │ │ └── validation.py # Data validation (Pandera)
293
+ │ ├── extraction/
294
+ │ │ ├── base.py # Abstract base classes
295
+ │ │ ├── registry.py # Extension registry
296
+ │ │ └── mapper.py # Mapping to standard ontology
297
+ │ ├── classification/
298
+ │ │ ├── engine.py # LLM-enhanced classification
299
+ │ │ ├── patterns.py # Pattern matching from EDGAR
300
+ │ │ └── confidence.py # Confidence scoring
301
+ │ ├── modeling/
302
+ │ │ ├── builder.py # Model construction
303
+ │ │ ├── templates.py # Model templates
304
+ │ │ └── exporters.py # Google Sheets export
305
+ │ └── utils/
306
+ │ ├── dates.py
307
+ │ ├── formatting.py
308
+ │ └── validation.py
309
+ ├── tests/
310
+ │ ├── unit/
311
+ │ ├── integration/
312
+ │ └── fixtures/
313
+ ├── docs/
314
+ │ ├── 0-MISSION.md
315
+ │ ├── 1-ARCHITECTURE.md
316
+ │ ├── 2-EXPERIENCE.md
317
+ │ └── skills_models.md
318
+ └── pyproject.toml
319
+ ```
320
+
321
+ ## 🧪 Testing
322
+
323
+ ```bash
324
+ # Install development dependencies
325
+ uv sync --dev
326
+
327
+ # Run all tests
328
+ uv run pytest
329
+
330
+ # Run with coverage
331
+ uv run pytest --cov=waccy --cov-report=html
332
+
333
+ # Run specific test suites
334
+ uv run pytest tests/unit/
335
+ uv run pytest tests/integration/
336
+
337
+ # Format and lint with ruff
338
+ uv run ruff format
339
+ uv run ruff check --fix
340
+
341
+ # Type checking with mypy
342
+ uv run mypy src/waccy
343
+ ```
344
+
345
+ ## 📚 Documentation
346
+
347
+ * **[Mission Statement](docs/0-MISSION.md)** - Project goals, philosophy, and roadmap
348
+ * **[Architecture](docs/1-ARCHITECTURE.md)** - Technical architecture and design principles
349
+ * **[Experience Guide](docs/2-EXPERIENCE.md)** - User experience and workflows
350
+ * **[Skills & Models](docs/skills_models.md)** - Financial modeling capabilities
351
+
352
+ ## 🏛️ Design Principles
353
+
354
+ 1. **Simplicity and Focus**: Core platform maintains a simple, focused design with essential data sources (QBO and EDGAR)
355
+
356
+ 2. **Standardized Ontology First**: All financial data maps to a standardized WACCY chart of accounts, ensuring consistency and comparability
357
+
358
+ 3. **Modular Extensibility**: New data sources and model types added as separate packages that conform to core interfaces
359
+
360
+ 4. **Accuracy First**: Deterministic functions preferred over probabilistic models. LLMs used for parsing and classification, not financial calculations
361
+
362
+ 5. **Transparency and Auditability**: Every data point traceable to source, every calculation explainable, every assumption documented
363
+
364
+ 6. **Professional Standards**: Models adhere to institutional-quality standards for architecture, formatting, and presentation
365
+
366
+ 7. **Quality Quantification**: Standardized ontology enables measurement and reporting of data quality and model output reliability
367
+
368
+ 8. **Small Business Focus**: Designed primarily for small businesses—from sole proprietorships to growing companies—handling messy, incomplete data
369
+
370
+ ## 🤝 Contributing
371
+
372
+ We welcome contributions! WACCY is built for the small business community, and we'd love your help making financial modeling more accessible.
373
+
374
+ ### Getting Started
375
+
376
+ 1. **Fork the repository** on GitHub
377
+ 2. **Create a feature branch** for your contribution
378
+ 3. **Set up development environment**:
379
+ ```bash
380
+ git clone https://github.com/your-username/waccy.git
381
+ cd waccy
382
+ uv sync --dev
383
+ ```
384
+ 4. **Make your changes** following our coding standards:
385
+ - Use `ruff` for formatting and linting
386
+ - Add type hints with `mypy` compliance
387
+ - Write tests for new functionality
388
+ - Update documentation as needed
389
+ 5. **Run tests and linting**:
390
+ ```bash
391
+ uv run pytest
392
+ uv run ruff check
393
+ uv run mypy src/
394
+ ```
395
+ 6. **Submit a pull request** with a clear description of your changes
396
+
397
+ ### Creating Extensions
398
+
399
+ Want to add a new data source? Create an extension package:
400
+
401
+ 1. Create a new package: `waccy-yourdatasource`
402
+ 2. Implement the `Extractor` interface from `waccy.extraction.base`
403
+ 3. Register your extension via entry points
404
+ 4. Follow the [Extension Development Guide](docs/1-ARCHITECTURE.md#extension-development-guide)
405
+
406
+ See our [Architecture Documentation](docs/1-ARCHITECTURE.md) for detailed extension development guidelines.
407
+
408
+ ### Code of Conduct
409
+
410
+ Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md) to ensure a welcoming environment for all contributors.
411
+
412
+ ## 📈 Project Status
413
+
414
+ * **Phase 1**: 📋 Planned - Core foundation and 3-statement models
415
+ * **Phase 2**: 📋 Planned - Public market data and pattern learning (EDGAR)
416
+ * **Phase 3**: 📋 Planned - Advanced valuation models (DCF, M&A, LBO)
417
+ * **Phase 4**: 📋 Planned - Specialized model types (SaaS, REIT, project finance)
418
+ * **Phase 5**: 📋 Planned - Advanced analysis and decision support
419
+
420
+ **Current Status**: Early development - Architecture and core platform design
421
+ **Python Version**: 3.13+
422
+ **Package Manager**: [uv](https://github.com/astral-sh/uv)
423
+ **CI/CD**: GitHub Actions (coming soon)
424
+
425
+ ## 📄 License
426
+
427
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
428
+
429
+ ## 🙏 Acknowledgments
430
+
431
+ * **Small Business Community** - Built for entrepreneurs and small business owners who need professional financial modeling
432
+ * **Financial Modeling Community** - Inspired by institutional-quality modeling standards
433
+ * **Open Source Tools**:
434
+ * [uv](https://github.com/astral-sh/uv) - Modern Python package manager
435
+ * [ruff](https://github.com/astral-sh/ruff) - Fast Python linter and formatter
436
+ * [Pydantic](https://github.com/pydantic/pydantic) - Data validation framework
437
+ * [Polars](https://github.com/pola-rs/polars) - High-performance data manipulation
438
+ * [Pandera](https://github.com/pandera-dev/pandera) - Statistical data validation
439
+
440
+ ---
441
+
442
+ **Made with 🤪 for small businesses that deserve institutional-quality financial modeling**