Segment rollup
Skill JeffBrines/openfpa/examples/foxfactory/skills/generated/segment-rollup
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 segment-rollupAssembled 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 modeling a multi-segment company that discloses segment net sales and segment Adjusted EBITDA (ASU 2023-07) but not segment COGS or operating income - rolls segment P&Ls into a consolidated forecast and reconciles total segment Adjusted EBITDA to the disclosed total. Generated for Fox Factory (PVG/AAG/SSG).
SKILL.md
2.8 KB, as published. Nobody here has run it
Segment Roll-Up (generated for Fox Factory)
Why this skill exists
The standard openfpa skills model a single entity. Fox Factory reports three
segments (PVG, AAG, SSG) and, under ASU 2023-07, discloses net sales and
Adjusted EBITDA per segment - but not segment COGS or operating income
(.fpa/business-profile.md). The base engine has no segment concept, so this
skill was generated to bridge the gap. It cites these profile facts:
- Three reportable segments; segment metric is Adjusted EBITDA, not gross profit.
- Segment-level working capital, debt, and tax are not disclosed - those stay consolidated. So segments drive the P&L down to Adjusted EBITDA only; the consolidated layer owns everything below.
The model shape
segment net sales + Adj EBITDA margin (PVG, AAG, SSG)
│ roll_up_segments() → total net sales + total Adj EBITDA
│ segments_to_channels(cogs_pct)→ revenue channels for the engine
▼
consolidated EntityConfig (blended COGS%, opex, D&A, capex, WC days, debt, tax)
│ cashflow_from_config()
▼
consolidated P&L + indirect cash flow (revenue → … → FCF)
How to use
- Build one
pyfpa.Segmentper segment from disclosed net sales and Adjusted-EBITDA margin (adjusted_ebitda / net_sales). roll_up_segments(segments)→ total net sales + total Adjusted EBITDA. Reconcile that total to the disclosed segment-footnote total - it must tie.segments_to_channels(segments, cogs_pct=<consolidated blended rate>)→ revenue channels. The blended COGS% is applied to every segment (segment COGS isn't disclosed), so the channels sum back to consolidated COGS by construction.- Feed the channels into a consolidated
EntityConfigand runcashflow_from_config. Set the singleadjusted_opexline togross_profit − total_adjusted_ebitdaso engine EBITDA ties to segment Adj EBITDA. - Keep the goodwill impairment and discrete tax items out of the engine and in a documented bridge to GAAP net income - the lean engine models the operating business, not one-time non-cash charges.
Reference implementation
examples/foxfactory/foxf_model.py (reconciliation_config, phase_a_model,
forecast_year) and pyfpa.analysis.segments.
Guardrail
This skill lives in the client's skills/generated/ namespace - it is specific
to a three-segment, Adjusted-EBITDA-reporting company and must never be promoted
into the public openfpa template.