fpa-configure-actualslisted
Install: claude install-skill ryanduguid/au-fpa-pack
# Configure actuals and data sources (Phase 2)
## Overview
Connect the model to the available data and normalise it to one shape (`{account: amount}`). If no built-in connector fits, build an ingestion path for that source. `examples/foxfactory/pull_edgar.py` is a SEC-EDGAR adapter the agent wrote for this reason.
## The data can come from anywhere
- **Local spreadsheets** (always works, no credentials). A P&L, balance sheet, AR/AP ageing, or inventory export. `pyfpa.read_pl_csv(path)` reads any 2-column `Account, Amount` CSV (handles `$`, commas, `(parens)` negatives) → `{account: amount}` - it is generic, not P&L-only. For **richer tables** (aged AR/AP buckets, item-level inventory) there is no rigid reader by design: parse the file to what the model needs - derive **DSO** from AR ageing, **DIO** from inventory, **DPO** from AP ageing.
- **A live accounting system via MCP** - the cleanest live path. If a **QuickBooks** or **NetSuite** MCP server is connected, pull the trial balance / P&L / balance sheet through it and map the result to `{account: amount}`. openfpa never handles credentials - the MCP server owns auth.
- **A live system via API** - build a company-specific connector around the
source API and its actual report shape.
- **Public filings** - a 10-K / 10-Q from SEC EDGAR (curl + a compliant User-Agent), as in the Fox Factory example.
- **Anything else** - if the source isn't covered, write a small ingestion that returns `{account: amount}` (or parses the ri