idea39-vizforge-interactive.../README.md

60 lines
2.1 KiB
Markdown

# idea39-vizforge-interactive-economic
VizForge is a Python scenario studio for startup economics. It lets founders describe a business in a declarative YAML DSL, run stochastic simulations across macro shocks, and generate investor-facing markdown and SVG artifacts with a reproducible seed and source digest.
## What it does
- Parses a versioned business model DSL with typed validation.
- Simulates revenue, cash runway, dilution, and LTV/CAC under macro uncertainty.
- Compares scenarios such as recession, supply shocks, or tighter funding.
- Generates an investor brief with KPI tables and slide-ready SVG charts.
- Exposes a CLI for exporting reports from a YAML model file.
## Package layout
- `src/idea39_vizforge_interactive_economic/models.py` - typed model schema.
- `src/idea39_vizforge_interactive_economic/dsl.py` - YAML parser and serializer.
- `src/idea39_vizforge_interactive_economic/simulation.py` - Monte Carlo engine and sensitivity analysis.
- `src/idea39_vizforge_interactive_economic/artifacts.py` - markdown report and SVG generation.
- `src/idea39_vizforge_interactive_economic/cli.py` - command-line entry point.
## DSL example
```yaml
name: Acme AI
horizon_months: 12
starting_cash: 250000
macro:
gdp_growth: 0.02
inflation: 0.03
consumer_confidence: 102
revenue_streams:
- name: core
starting_customers: 100
price_per_customer: 120
monthly_growth_rate: 0.06
monthly_churn: 0.04
gross_margin: 0.82
acquisition_rate: 15
costs:
- name: cloud
monthly_amount: 10000
financing:
- month: 0
instrument: equity
amount: 150000
valuation: 3000000
```
## CLI
```bash
vizforge path/to/model.yaml --output-dir vizforge-output --sims 1000 --seed 7
```
This writes `report.md` plus SVG charts into the output directory.
## Development
- Install the package in editable mode: `python3 -m pip install -e .`
- Run tests: `python3 -m pytest`
- Build the distribution: `python3 -m build`
## Reproducibility
Every simulation bundle records a deterministic seed and SHA-256 digest of the parsed DSL text so the same assumptions can be replayed later.