Scenario Model Skill
Purpose
Build financial scenario models for cost productivity initiatives. Takes a cost lever and models Conservative/Base/Stretch outcomes with phasing across FY26–28. Output is always an Excel workbook with formulas — never hardcoded computed values.
Trigger Phrases
- "model this", "scenario model", "what's the upside/downside", "size the opportunity"
- "how much could we save", "build a business case model", "financial model for [initiative]"
- When Jacob has identified a cost lever and wants to quantify the range of outcomes
Execution Steps
Step 1 — Define the Lever
Confirm the following before proceeding. If any are missing, ask Jacob directly:
- What is being optimised? (e.g. payment terms, vendor consolidation, travel policy, headcount)
- What is the current cost base? Annual run-rate in AUD. If unknown, flag as "requires data".
- What are the available levers? Rate / volume / mix / policy / process
- What data exists? The spend cube, data request outputs, or provided in conversation
- What is the initiative timeline? Any known constraints on FY26 landing (contracts, systems, approvals)
Do not proceed to Step 2 until cost base and lever type are confirmed.
Step 2 — Build the Scenario Table
Three scenarios, each with stated assumptions:
| Scenario |
Description |
Saving % |
What has to be true |
| Conservative |
Minimum credible outcome — quick wins only |
X% |
[specific assumptions] |
| Base Case |
Realistic outcome with normal execution |
Y% |
[specific assumptions] |
| Stretch |
Best case with full execution and tailwinds |
Z% |
[specific assumptions] |
- Never present a single number — always a range (Conservative to Stretch)
- Separate one-off savings from recurring (annualised) savings
- Assumptions not confirmed by Jacob must be flagged as "⚠ Unverified"
Step 3 — Phase Across Financial Years
Apply the following phasing logic (adjust if Jacob provides initiative-specific timelines):
| Lever Type |
FY26 |
FY27 |
FY28 |
| Quick wins (policy enforcement, payment timing) |
100% |
100% |
100% |
| Negotiations (vendor consolidation, rate reduction) |
50% |
100% |
100% |
| Structural (operating model, system changes) |
0% |
50% |
100% |
- FY26: What can land this year (~9 months remaining from July 2025)
- FY27: What requires structural change (contracts, systems, policy)
- FY28: Full run-rate once changes are embedded
Step 4 — Sensitivity Table
Show outcomes at 5%, 10%, 15%, 20%, 25% reduction on the cost base:
| Saving % |
Annual Saving ($) |
3-Year Cumulative ($) |
% of FY26 target |
% of 3-year target |
| 5% |
|
|
|
|
| 10% |
|
|
|
|
| 15% |
|
|
|
|
| 20% |
|
|
|
|
| 25% |
|
|
|
|
All cells formula-driven. Reference the cost base input cell — do not hardcode.
Step 5 — Generate Excel Workbook
ALWAYS invoke the davila7-xlsx skill pattern. Never use raw openpyxl without the skill.
Venv: <workspace>/.venv
Logo: Template/logo.png (brand-adaptable, bring your own asset)
Save to: 4 - Projects/[initiative-name]/[YYMMDD]_Scenario_Model_[name].xlsx
Workbook Structure (4 tabs)
Tab 1 — Cover
- Company logo top-left (white/no-fill header band, do not use a dark band behind logo)
- Report title, large navy text
- Synopsis: max 2 sentences — state the initiative and how the model was built. Then dot points for key findings.
- Assumptions: listed in full. Mark unverified assumptions with "⚠ Unverified".
- Tab guide: one-line description per sheet
Tab 2 — Scenario Model
Columns: Cost Base | Saving % | Annual Saving $ | FY26 Phased | FY27 Phased | FY28 Phased | 3-Year Cumulative
- One row per scenario: Conservative / Base Case / Stretch
- All savings cells use formulas (e.g.
=cost_base * saving_pct)
- Phased columns reference the lever type phasing percentages as named cells or a lookup
- Assumptions block below the table — label each one, mark unverified
Tab 3 — Sensitivity
- Matrix: saving % rows (5%–25%) × metric columns (Annual $, 3-Year Cumulative, % of target, % of 3-year)
- Single input cell for cost base at top of sheet — all formulas reference it
- Highlight the Base Case row
Tab 4 — Phasing
- Waterfall / build view: FY26 → FY27 → FY28 run-rate
- Split by lever type (Quick Win / Negotiation / Structural)
- Show cumulative savings build across 3 years per scenario
Formula & Quality Rules
- Use Excel formulas —
=SUM(), =AVERAGE(), =cell_ref * pct_ref — never hardcode computed values
- Named ranges for key inputs: cost base, saving percentages, phasing factors
- Currency format:
$#,##0 (no decimals) for all dollar cells
- Percentage format:
0% for all rate cells
- Run
recalc.py to verify zero formula errors before delivery if available
Company Context
| Field |
Value |
| Company |
A large ASX-listed infrastructure services enterprise (~$6B revenue, ~35,000 people) |
| Cost program |
8 figure FY26 / 9 figure 3-year |
| Currency |
AUD — formatted $#,##0 (no decimals) |
| Brand |
Brand-adaptable output (bring your own theme) |
| No |
Pie charts, 3D effects, WordArt |
Rules
- Always use Excel formulas — never hardcode computed values
- Verify assumptions with Jacob before generating the workbook — ask if not provided
- Never present a single savings number — always Conservative to Stretch range
- Separate one-off savings from recurring (annualised) savings
- Phase realistically — do not assume everything lands in FY26
- Flag unverified assumptions with "⚠ Unverified" on the cover sheet
- If cost base is unknown, ask Jacob or mark as "requires data" — do not guess
- Append a dated entry to
4 - Projects/[initiative-name]/log.md on completion
1---2name: scenario-model3description: Build financial scenario models for cost-out initiatives — Conservative/Base/Stretch with FY26–28 phasing, sensitivity table, and Excel workbook output.4---56# Scenario Model Skill78## Purpose9Build financial scenario models for cost productivity initiatives. Takes a cost lever and models Conservative/Base/Stretch outcomes with phasing across FY26–28. Output is always an Excel workbook with formulas — never hardcoded computed values.1011## Trigger Phrases12- "model this", "scenario model", "what's the upside/downside", "size the opportunity"13- "how much could we save", "build a business case model", "financial model for [initiative]"14- When Jacob has identified a cost lever and wants to quantify the range of outcomes1516---1718## Execution Steps1920### Step 1 — Define the Lever21Confirm the following before proceeding. If any are missing, ask Jacob directly:2223- **What is being optimised?** (e.g. payment terms, vendor consolidation, travel policy, headcount)24- **What is the current cost base?** Annual run-rate in AUD. If unknown, flag as "requires data".25- **What are the available levers?** Rate / volume / mix / policy / process26- **What data exists?** The spend cube, data request outputs, or provided in conversation27- **What is the initiative timeline?** Any known constraints on FY26 landing (contracts, systems, approvals)2829Do not proceed to Step 2 until cost base and lever type are confirmed.3031---3233### Step 2 — Build the Scenario Table34Three scenarios, each with stated assumptions:3536| Scenario | Description | Saving % | What has to be true |37|---|---|---|---|38| Conservative | Minimum credible outcome — quick wins only | X% | [specific assumptions] |39| Base Case | Realistic outcome with normal execution | Y% | [specific assumptions] |40| Stretch | Best case with full execution and tailwinds | Z% | [specific assumptions] |4142- Never present a single number — always a range (Conservative to Stretch)43- Separate one-off savings from recurring (annualised) savings44- Assumptions not confirmed by Jacob must be flagged as "⚠ Unverified"4546---4748### Step 3 — Phase Across Financial Years49Apply the following phasing logic (adjust if Jacob provides initiative-specific timelines):5051| Lever Type | FY26 | FY27 | FY28 |52|---|---|---|---|53| Quick wins (policy enforcement, payment timing) | 100% | 100% | 100% |54| Negotiations (vendor consolidation, rate reduction) | 50% | 100% | 100% |55| Structural (operating model, system changes) | 0% | 50% | 100% |5657- FY26: What can land this year (~9 months remaining from July 2025)58- FY27: What requires structural change (contracts, systems, policy)59- FY28: Full run-rate once changes are embedded6061---6263### Step 4 — Sensitivity Table64Show outcomes at 5%, 10%, 15%, 20%, 25% reduction on the cost base:6566| Saving % | Annual Saving ($) | 3-Year Cumulative ($) | % of FY26 target | % of 3-year target |67|---|---|---|---|---|68| 5% | | | | |69| 10% | | | | |70| 15% | | | | |71| 20% | | | | |72| 25% | | | | |7374All cells formula-driven. Reference the cost base input cell — do not hardcode.7576---7778### Step 5 — Generate Excel Workbook7980**ALWAYS invoke the davila7-xlsx skill pattern.** Never use raw openpyxl without the skill.8182**Venv:** `<workspace>/.venv`83**Logo:** `Template/logo.png` (brand-adaptable, bring your own asset)84**Save to:** `4 - Projects/[initiative-name]/[YYMMDD]_Scenario_Model_[name].xlsx`8586#### Workbook Structure (4 tabs)8788**Tab 1 — Cover**89- Company logo top-left (white/no-fill header band, do not use a dark band behind logo)90- Report title, large navy text91- Synopsis: max 2 sentences — state the initiative and how the model was built. Then dot points for key findings.92- Assumptions: listed in full. Mark unverified assumptions with "⚠ Unverified".93- Tab guide: one-line description per sheet9495**Tab 2 — Scenario Model**96Columns: Cost Base | Saving % | Annual Saving $ | FY26 Phased | FY27 Phased | FY28 Phased | 3-Year Cumulative9798- One row per scenario: Conservative / Base Case / Stretch99- All savings cells use formulas (e.g. `=cost_base * saving_pct`)100- Phased columns reference the lever type phasing percentages as named cells or a lookup101- Assumptions block below the table — label each one, mark unverified102103**Tab 3 — Sensitivity**104- Matrix: saving % rows (5%–25%) × metric columns (Annual $, 3-Year Cumulative, % of target, % of 3-year)105- Single input cell for cost base at top of sheet — all formulas reference it106- Highlight the Base Case row107108**Tab 4 — Phasing**109- Waterfall / build view: FY26 → FY27 → FY28 run-rate110- Split by lever type (Quick Win / Negotiation / Structural)111- Show cumulative savings build across 3 years per scenario112113#### Formula & Quality Rules114- Use Excel formulas — `=SUM()`, `=AVERAGE()`, `=cell_ref * pct_ref` — never hardcode computed values115- Named ranges for key inputs: cost base, saving percentages, phasing factors116- Currency format: `$#,##0` (no decimals) for all dollar cells117- Percentage format: `0%` for all rate cells118- Run `recalc.py` to verify zero formula errors before delivery if available119120---121122## Company Context123124| Field | Value |125|---|---|126| Company | A large ASX-listed infrastructure services enterprise (~$6B revenue, ~35,000 people) |127| Cost program | 8 figure FY26 / 9 figure 3-year |128| Currency | AUD — formatted `$#,##0` (no decimals) |129| Brand | Brand-adaptable output (bring your own theme) |130| No | Pie charts, 3D effects, WordArt |131132---133134## Rules1351361. Always use Excel formulas — never hardcode computed values1372. Verify assumptions with Jacob before generating the workbook — ask if not provided1383. Never present a single savings number — always Conservative to Stretch range1394. Separate one-off savings from recurring (annualised) savings1405. Phase realistically — do not assume everything lands in FY261416. Flag unverified assumptions with "⚠ Unverified" on the cover sheet1427. If cost base is unknown, ask Jacob or mark as "requires data" — do not guess1438. Append a dated entry to `4 - Projects/[initiative-name]/log.md` on completion