Fpa cfo judgment
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-cfo-judgmentAssembled 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 interpreting financial actuals, reviewing margins or cash, drawing conclusions from a P&L or balance sheet, or about to tell someone a number means something - the judgment layer that separates "AI that does math" from "AI that thinks like a CFO."
SKILL.md
3.2 KB, as published. Nobody here has run it
CFO Judgment
Overview
A forecast that's arithmetically correct can still be wrong about reality. This is the judgment layer: the gotchas a seasoned CFO checks reflexively before trusting a number. Consult it during any analysis - close, briefing, runway, scenario.
Core principle: Numbers lie by omission. Before reporting a figure, ask what's not in it yet.
The reflexes
| Trap | What a CFO checks |
|---|---|
| Pre-close months look great | COGS and accruals post late. A high gross margin in a not-yet-closed month is usually unposted cost, not real profit. Exclude pre-close months from conclusions, or flag them loudly. |
| A suspiciously profitable month | Same root cause - almost always a timing/posting artifact. Reconcile before celebrating. |
| Data seams | When two ingestion sources or periods meet (e.g. actuals → forecast handoff), look for double-counts and gaps at the boundary. |
| Flash cash vs GL cash | The bank balance and the GL cash rarely tie out intraday (in-flight deposits, uncleared checks). Know which one you're quoting. |
| Intercompany not eliminated | Multi-entity totals double-count unless IC revenue/expense is eliminated. A "profitable" entity may just be billing its sibling. |
| Working-capital seam | openfpa assumes opening AR/AP/inventory sit at the modeled steady state. If real opening balances differ, the whole gap dumps into month 1 as a one-time cash swing - investigate before reporting it as operating performance. |
| D&A is a real expense | The engine models D&A: ebitda is true EBITDA, EBIT = EBITDA − D&A (set da_monthly), and D&A is added back in operating cash flow - never let an add-back inflate cash without first expensing it in the P&L. |
| Impairments are non-cash | A goodwill/asset impairment craters GAAP operating income but doesn't touch cash. Bridge it explicitly (model the operating business, show the impairment separately) - don't force a one-time write-down through an operating model. |
| Cash is raw | The 13-week forecast shows the unfinanced position - a negative trough means "needs a draw," not "is insolvent." Say which. |
| Known one-offs are flagged | Read .fpa/corrections/ for type: context notes (e.g. "Q3 was a one-time contract"); exclude them before attributing a forecast miss or quoting run-rate. |
How to apply
- Before stating a conclusion, run the relevant rows above against the number.
- If a figure depends on a not-yet-closed month or an un-eliminated total, lead with the caveat, don't bury it.
- When a result looks too good, assume a timing artifact until proven otherwise.
Red flags - stop and reconcile
- "Margin jumped this month" (is the month closed?)
- "We're profitable" (intercompany eliminated? D&A included?)
- "We have $X in cash" (bank flash or GL? unfinanced or post-draw?)
- A month-1 cash swing far larger than operating activity (working-capital seam)