← Pilot Hub
Week 7 · Build Your Own · H3 Walkthrough

Financial Modeling as a Multi-Agent Orchestration

Three live data streams — development raise estimates, finance historical-and-projected actuals, Pathstone investment-market scenarios — combined into one audit-trail-grade view of DC CAP's financial position now and through FY35. Eleven Opus agents, thirteen expertise references, four verification layers, one live surface behind Cloudflare Access. The worked example for the eight Week 7 questions.

11 agents· 13 references· 4 verification layers· 3 skill layers· 1 production surface

BLUF

Every Stage 4 orchestration starts as a smaller container that outgrew its bounds. The financial_modeling tool is exactly that arc. DC CAP needed one surface that combined three live data streams into a single audit-trail-grade view of the organization's financial position now and projected through FY35: development targets and raise estimates across individual, corporate, and philanthropic sources; finance data for historical, current, and projected costs and revenues; investment-market projections from Pathstone (DC CAP's investment partner). Bringing those three streams into one model — refreshing between Board meetings, surviving Investment Committee and Finance Committee scrutiny, traceable cell-by-cell — is what crossed every threshold on the four-stage ladder.

This walkthrough applies the eight Week 7 questions to the production build. No one in the pilot is expected to ship Stage 4 themselves. The point is the architecture: how the spec carries the expertise, how the roles divide the work, how the verification gates catch what the layer above missed. The failure mode lives in the spec the designer wrote.

1. The Goal — One Surface, Three Data Streams, Audit-Trail Grade

DC CAP needed one surface that combined three live data streams into a single overarching view of the organization's financial position — current state and projected through FY35. The job was to make financial visibility a core function, refreshed between Board meetings, with cell-by-cell provenance on every value the Investment Committee, the Finance Committee, or the Board would see.

The three data streams the model brings together

Stream 1 · Development

Raise targets & estimates

Goals and expected close estimates across individual, corporate, and philanthropic sources. Sourced from the AI Development Office pipeline and Eric's active funder conversations. Refreshes weekly.

Stream 2 · Finance

Costs & revenues, full arc

Historical actuals (FY12–FY26), current-year tracking, and forward projections of operating costs and revenues. Sourced from the canonical Finance + Development merged Budget Preview workbook. Refreshes on each Finance cycle.

Stream 3 · Investment

Pathstone market projections

Best-estimate market trajectories from Pathstone, DC CAP's investment partner. Drives endowment performance modeling and the implied draw path. Refreshes quarterly, sometimes inside a meeting.

Combining three streams of this shape — three refresh cadences, three source systems, three sets of business rules — into a single audit-trail-grade surface is what ruled out Stage 1 (a prompt cannot survive Investment Committee scrutiny) and ruled out Stage 2 (a skill is reusable and still falls short of multi-step workflows with files and gates). Stage 3 (a Project) got close: system instructions, reference files, governance config, workflow doc. The moment all three streams had to reconcile inside the same model in the same conversation, the architecture had to move up one more rung.

A Project answers one question well. An Orchestration answers the same question every time any of the three streams refreshes, with an audit trail on every value.

2. The Iteration Arc — One Question to Eleven Agents

The build did not arrive fully formed. A lot changed along the way, and the discipline that made the changes survive was not the model — it was the spec that the designer kept rewriting.

The model identity — visibility into what we see, what we owe, what we control

The job was to get the financial picture right and put it in front of the people making the decisions. That meant designing the model around three views:

That three-way visibility feeds three strategic surfaces, each answering a different question from the same audit trail:

endowmentDraw = max(0, totalExpenses − operatingRevenue)

The same numbers, the same audit trail, three surfaces each answering its own question.

The four verification layers

Verification went through four layers, each catching a different failure mode the prior layer missed:

L1

Source-cell provenance

Every value in the model traces to a specific cell in the Finance + Development merged Budget Preview workbook. If a value cannot trace, it does not enter.

L2

Parser hard-gate

The parser refuses to ingest the workbook if anchors, sheet names, or row labels have shifted. Catches structural drift before it reaches the math layer.

L3

Runtime cross-foots

Computed totals cross-foot against the workbook's own totals at runtime. Catches math the parser passed but the model would surface incorrectly.

L4

Defaults alignment

Default assumptions (raise targets, market scenarios) reconcile against the Investment Committee-approved set before any surface renders.

The roster rewrite

Agent specs were rewritten three times. The first roster had a governance-heavy Tier 1 (BoardSource, CFA IPS, NACUBO Spending Policy, NFF). The current roster has an insight-and-analytics Tier 1 (Damodaran, Tufte, Knaflic, Hyndman, McKinsey Valuation, Bridgespan, Few, NACUBO NCSE 2024, AFP). The lesson the rewrite carried: the tool is a strategic analytics surface first, a compliance surface second. The governance references stayed, moved to Tier 2.

3. The Roles — Eleven Opus Agents, One Job Each

Stage 4 means the work is too big for one role. The dispatch protocol splits it into eleven, each with one job and an explicit handoff to the next.

AgentOne Job
fpa-leadOrchestrator. Dispatches lanes. Never does domain work.
fpa-architectMethodology, ADRs, scope rule.
fpa-data-engineerParser intake. Per-cell provenance. L1/L2 gates.
fpa-quantMath layer. Hyndman prediction intervals. L3 gates.
fpa-insight-hunterPareto. Damodaran bias diagnostic. "Three numbers that matter."
fpa-analystDrift classification. Bridgespan PWIT. Cost-per-outcome.
fpa-strategistDamodaran 3P test. Big Idea. McKinsey ROIC matrix.
fpa-modelerAFP driver-based budgeting. Rolling forecasts. Variance bridges.
fpa-vizTufte / Knaflic / Few applied to chart design.
fpa-storytellerKnaflic Big Idea. Preston voice. Audience-first.
fpa-frontendReact + Recharts implementation. WCAG 2.2 AA. Brand tokens.

Each output a Builder agent produces has a state contract the next agent reads. The Lead never overwrites; the Lead routes. That single rule — Lead routes, never edits — is what keeps the audit trail intact when seven lanes run in parallel.

One job per role. Explicit handoffs between them. The Lead dispatches and consolidates; the Lead never does domain work.

4. Instructions vs Reference Files — Where the Rules Live

Each agent ships with a short, prescriptive instructions block (under 600 lines) and loads reference files at session start. The split was deliberate:

The boundary was tested. The first version of fpa-data-engineer tried to encode the workbook structure inside the instructions. Every refresh required an instructions edit. Moving the anchors to a reference file the L2 parser hard-gate reads cut maintenance from "every refresh" to "every quarterly restructure." Same expertise; different home.

5. The Skill Chain — Three Layers, Loaded on Demand

Each agent loads named skills at session start. The skills live at three layers, and the dispatch protocol controls which layer loads on which agent.

Plugin layer
finance:* data:*
Shared organizational plugin skills any DC CAP project can load. The agents in the financial_modeling orchestration actually call finance:variance-analysis and finance:financial-statements (fpa-analyst); finance:reconciliation, data:explore-data, data:validate-data (fpa-data-engineer); data:statistical-analysis (fpa-quant); data:data-visualization, data:create-viz (fpa-viz). Maintained centrally; consumed where the agent declares them.
BRAIN skills
preston-writing, funder-framing, dccap-brand, dc-cap-org-intelligence, executive-summary-formatter, data-interpreter, program-budget-intake
DC CAP-wide skills that live under ~/Desktop/BRAIN/skills/skills/ and load by name from inside the agents that need them. Each is one SKILL.md plus the references it owns. Project-local skills (fpa-glossary-and-scope-rule, story-from-data, insight-discovery-patterns) are planned for Phase 2 — created lazily as agents need them.
References
references/expertise/
(13 canonical sources)
Damodaran, Tufte, Knaflic, Hyndman, McKinsey Valuation, Bridgespan, Few, NACUBO NCSE 2024, AFP (Tier 1) plus BoardSource, CFA IPS, NFF, NACUBO Spending Policy (Tier 2). Each reference carries YAML frontmatter, verbatim quotes with inline attribution, methodology summary, and routing notes that name which agents load it.

Naming the chain at design time is what makes the orchestration inheritable. A future analyst picking up the build sees, in one place, exactly which expertise is loaded. Each chained skill is one piece of expertise the build no longer has to invent.

What a single SKILL.md actually contains

Zooming in on one piece of the chain — every skill the agents load is one folder with one canonical file. The shape is the same whether the skill carries five lines of voice rules or 500 lines of financial-modeling methodology.

my-skill/
├── SKILL.md          ← required: frontmatter + body
│   ├── ---           ← YAML frontmatter
│   │   name: my-skill
│   │   description: <what it does> + <when to trigger>.
│   │   ---
│   └── <imperative instructions, under 500 lines>
├── scripts/          ← deterministic code (optional)
├── references/       ← docs loaded on demand (optional)
└── assets/           ← templates and files for output

The frontmatter is the trigger surface. Claude reads name + description from every available skill and decides which ones to consult based on what the user asked for. The body is loaded only after the trigger fires. The bundled resources are loaded only when the body says to read them. That is progressive disclosure — three levels of loading, each gated by the level above it.

How skills relate to agents — composable by design

The exact loadings from the financial_modeling agent specs (verified against the SKILL and Expertise Specification section of each agent's frontmatter file):

The canonical guidance for what makes a good SKILL.md lives in the skill-creator skill itself — the Anthropic-authored skill for creating skills. Load it whenever you start a new Skill build. Most of the rules in this section are pulled from there: under-500-line body, pushy description, progressive disclosure across three loading levels.

6. Tools and Permissions — The Smallest Set That Runs

The build runs with a deliberately small tool surface. File read, file write (scoped to the project directory), and code execution (R + Python, scoped to the parser and quant lanes). No web access at runtime. No email. No external API calls during a model run.

Web access lives on the design side. The run side stays sealed. New ADRs and reference updates happen between runs, in the open. The audit trail stays reproducible — if the same workbook goes in, the same surfaces come out.

7. Verification — Four Layers, One Audit Trail

The four verification layers (L1–L4) are the spine of the audit trail. They run automatically; nothing ships to a Board surface unless all four pass.

How the layers compose

  1. L1 source-cell provenance runs at parser intake. Each value gets a {sheet, cell, value, last_seen} tag. Values without tags are dropped.
  2. L2 parser hard-gate runs immediately after. The parser refuses to proceed if any anchor, sheet name, or row label has drifted from the contract. The lane that catches a refusal here is fpa-data-engineer, which logs the structural drift and pings fpa-lead for routing.
  3. L3 runtime cross-foots runs inside fpa-quant. Computed totals cross-foot against the workbook's own totals at the runtime layer. Mismatches halt the lane.
  4. L4 defaults alignment runs before any surface renders. Default raise targets and market scenarios reconcile against the IC-approved set. The Lead consolidates the L4 result and decides whether to publish.

At the most recent build, all four layers passed 53/53 checks green. The number is itself a verification artifact — a missed check is a routing signal that halts the lane and pings fpa-lead for triage.

The failure-mode map

Each agent ships with cosmetic / costly / catastrophic failure modes named in its own instructions. Examples from fpa-storyteller:

8. How the Orchestration Runs End-to-End

A request lands at fpa-lead. The Lead dispatches lanes in parallel where dependencies allow, sequentially where they do not. Each lane writes to its own state file. The Lead consolidates. The Output Verification protocol runs before anything ships.

The FY27 revenue-walk request — a worked dispatch

request fpa-lead fpa-data-engineer fpa-quant fpa-insight-hunter fpa-storyteller fpa-frontend / publish

The Lead dispatches to fpa-data-engineer first to reconcile the three streams at intake: development raise targets (individual, corporate, philanthropic), finance historical-and-projected actuals, and the most recent Pathstone market projection set. Once L1 + L2 pass on all three, fpa-quant runs the math layer with L3 cross-foots — the endowment draw recomputes from the Pathstone bands, the operating gap recomputes from finance + development. In parallel, fpa-insight-hunter runs the Pareto and bias diagnostic on the cleaned data. fpa-storyteller reads both lanes and writes the Big Idea in Preston's voice. fpa-frontend publishes to the live surface after L4 defaults alignment. The Lead writes the consolidated audit trail.

Iteration cadence and governance line

The takeaway

The orchestration is not "more AI." It is a process the designer authored. The agents have no expertise. The designer has the expertise. The failure mode lives in the spec the designer wrote.

Most pilot builds will stop at Stage 2 or 3. That is the right call. Knowing when to stop is the discipline Week 7 trains. The Skill and the Project are where the practical inheritance lives — where one teammate's work becomes another teammate's default — and that is the surface the artifact teach-pages (B and C) walk through end-to-end.

The eight questions are the same eight questions whether the build is a Stage 1 prompt or a Stage 4 orchestration. The answers scale. The discipline does not.