agentsclimarketplace

Fpa capture correction

Skill JeffBrines/openfpa/skills/fpa-capture-correction

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.

Install
npx -y skills add JeffBrines/openfpa --skill fpa-capture-correction

Assembled 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 a human reviewing a forecast catches something off ("December always spikes", "you're double-counting deferred revenue", "that Q3 number was a one-time contract") - captures it as a durable, typed correction in the company's memory so future forecasts are grounded by it.

SKILL.md

3.4 KB, as published. Nobody here has run it

Capture a Correction (Operate)

Overview

A human reviewing a forecast is the highest-signal feedback there is - they catch structural errors and domain knowledge the backtest can't see, and catch them now. This skill turns that into durable memory: a typed correction in .fpa/corrections/ that grounds every future forecast.

Core principle: the human is the authority; capture, confirm interpretation once, then it persists. Everything is plain markdown the user owns.

The three correction types

  • parametric - a concrete driver fix ("December runs ~2× a normal month"). Becomes an override (a config path + value) applied to every future forecast via pyfpa.apply_corrections.
  • structural - a methodology fix ("you're double-counting deferred revenue"). A pre-ratified structural proposal (the human authored it) - route it to fpa-learn-business to generate the skill/model change; do NOT wait for backtest misses.
  • context - a one-time-item note ("that Q3 spike was a one-off contract"). Annotates so fpa-cfo-judgment's one-time screen keeps the backtest from "learning" a one-off.

Workflow

  1. Classify the correction (parametric / structural / context).
  2. Identify the target - the driver path (e.g. channels[*].seasonality[11], working_capital.dio_days), line, or profile area. For parametric, draft the concrete override: {path, value}.
  3. Write the correction with pyfpa.save_correction. Set slug to a <date>-<short-name> string (e.g. 2026-06-08-december-seasonality) - save_correction uses the whole slug as the filename (.fpa/corrections/<slug>.md), so keep the date in it. Include frontmatter (type, target, status, date, override) and a markdown body (**Was off:** … **Correction:** … **Why:** [[…]]), linking to the assumption/profile it corrects with [[wikilinks]].
  4. Confirm interpretation. Echo back the concrete change ("I'll set December seasonality to 2.0 on all channels - right?"). Only on confirmation set status: applied.
  5. Keep .fpa/MEMORY.md current - the vault index (see below).

Applying corrections

When building any forecast, pyfpa.apply_corrections(cfg, load_corrections(".fpa/corrections")) folds the applied parametric corrections into the config. The per-client loop refines from there - corrections are seeds, not mandates.

The .fpa/ vault (MEMORY.md index)

Keep a .fpa/MEMORY.md that orients a human, Obsidian, or Claude:

  • business-profile.md - what we know about the business.
  • corrections/ - human corrections (this skill).
  • forecasts/*.snapshot.yaml, scorecard.md - forecast snapshots + backtest track record.
  • learnings.md - accepted model changes. All plain markdown - open it in Obsidian if you like, but never required.

Guardrails

  • Confirm interpretation before applied. Reversible via status (open/applied/superseded).
  • The backtest monitors applied corrections and may flag a stale one - it never reverts; the human decides.

Next

Correction captured → fpa-monthly-close / fpa-board-briefing (re-run grounded by it).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.