Fpa learn business
The FP&A toolbelt for AI coding agents. Claude Code or Codex does the thinking; openfpa gives it a tested finance kernel, durable company memory, and a Karpathy inspired research loop that improves forecasts against your actuals. By Guiderail and Jeff Brines.
npx -y skills add JeffBrines/openfpa --skill fpa-learn-businessAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when starting FP&A work for a new company, onboarding a business into openfpa, or asked to "understand my business / set up a model for us" before any forecasting - produces a durable business profile and generates business-specific skills.
SKILL.md
4.7 KB, as published. Nobody here has run it
Learn the Business (Phase 0)
Overview
Before scaffolding any model, learn the business. This produces two artifacts: a durable business profile that every other openfpa skill reads first, and - where the standard skills don't fit - bespoke skills/agents generated for this specific company. The toolkit re-tools itself per business instead of forcing a generic template.
Core principle: A forecast is only as good as the business understanding behind it. Encode that understanding once, explicitly, so it grounds everything downstream.
When to use
- A new company is being onboarded into openfpa
- You're asked to "build us a model" / "understand our business" before forecasting
- An existing
.fpa/business-profile.mdis missing or stale
Do not force this workflow when the user asks for a narrow task that can be completed without understanding the whole company.
Workflow
-
Check and initialize the workspace. Run
openfpa status <company-root>. If it is uninitialized, runopenfpa init <company-root> --business-name "<name>". Then runopenfpa doctor <company-root>. The CLI emits JSON. If the console script is unavailable in a source checkout, usepython3 -m pyfpa.cli. -
Inspect local evidence first. Run
openfpa inspect-data <data-root>for every user-supplied folder, then read the relevant financials, operating files, documentation, and existing model code before asking questions. Record each fact withopenfpa intake-record <company-root>, including file references and confidence. Never access an external MCP/API system without the user's approval. -
Ask only what remains unknown. Run
openfpa intake-next <company-root>and ask that related round of at most three questions. After every response, callopenfpa intake-recordwith--source-type user. Direct answers are confirmed immediately. Only ask the user to resolve conflicting or low-confidence inferred facts. -
Repeat short rounds until
pyfpa.intake_ready(intake)is true. Do not ask questions already answered by local evidence or earlier conversation. -
Propose the company architecture. Build a
pyfpa.ArchitectureProposalcovering the model objective, connectors, company-specific model components, generated skills, risks, and validation checks. Callpyfpa.write_onboarding_outputs(intake, workspace, proposal)to write:.fpa/business-profile.md.fpa/decisions/initial-model-architecture.md
-
Stop for approval. Summarize known facts, remaining unknowns, and the proposed architecture. Do not scaffold or generate artifacts until the user approves the proposal.
-
After approval, seed from the portfolio library. If one exists, start the model from what generalized across same-type clients. Priors are seeds; this client's learning loop refines them.
-
Identify gaps the standard skills don't cover, and propose bespoke skills/agents:
- Product company with SKUs → a
sku-profitabilityskill - SaaS → an
arr-waterfall/ cohort-retention skill - Logistics/fleet → a
driver-cost-scorecardskill
- Product company with SKUs → a
-
Generate approved artifacts using the repository's agent operating contract and local skill format, into
skills/generated/(andagents/generated/). Company models and connectors belong inmodels/generated/andconnectors/generated/. Each generated artifact MUST cite the profile facts that justify it and include a focused test or reconciliation check. -
Apply existing corrections. Before forecasting, fold in human corrections:
pyfpa.apply_corrections(cfg, pyfpa.load_corrections('.fpa/corrections')). Route anytype: structuralcorrections through this skill's skill-generation path as pre-ratified proposals (the human already authored them - don't wait for backtest misses).
Guardrails (self-extending, NOT self-executing)
- Generated artifacts go in
generated/namespaces in the client's own repo - never the public openfpa template. - Human review gate: propose each new skill/agent with its rationale and WAIT for approval before writing it.
- No profile fact → no generated skill. Speculation is not a justification.
- Record material generated changes as
pyfpa.Experimentfiles in.fpa/experiments/; preserve rejected and reverted experiments.
Next
After architecture approval, use fpa-scaffold-model to build the runnable model. Consult fpa-cfo-judgment throughout.