Internal · AIA staff · Project Kilimanjaro

Nkabom

Twi: to bring together. How we develop, govern and publish insights — the operating manual for Project Kilimanjaro.

Staff (dev) · staff access
Overview

The operating manual.

This is the home for how Project Kilimanjaro works — the operations an analyst runs, the method we model by, how we take it to market, and the governance that keeps every number defensible. Start with the operations if you’re shipping work this week; start with the method if you’re new.

New to Project Kilimanjaro entirely?

What it is, the problem it kills, what we sell, and one worked example end-to-end — for the wider team.

Project Kilimanjaro, explained →

Shipping work?

Pull governed inputs and run the pre-publication checklist.

Operations →

New to the desk?

The modelling philosophy and the capability ladder.

Method →

In a buyer conversation?

The offer ladder and how a model becomes a product.

Go-to-market →

Changing a number?

The steward for each domain and the PR workflow.

Stewardship →

Bidding on a tender?

Upload the TOR; get a recommended bid team matched to staff & contractors.

Tendering →
Operations · for analysts

Pulling assumptions via the API.

Models read governed inputs from the Master Assumptions API — never local copies. Use the assumptions_client package, pass a named scenario, pin a ref to reproduce. Service on port 8020; open the Swagger reference →

Pull a value or series

from assumptions_client import AssumptionsClient, AssumptionsContext client = AssumptionsClient(base_url="http://localhost:8020") ctx = AssumptionsContext(scenario="medium") rate = client.get_value("macro", "interest_rate.base", context=ctx) gdp = client.get_series("macro", "gdp.timeseries_index", context=ctx)

Pin a version to reproduce

ctx = AssumptionsContext( scenario="medium", ref="a3f9c1b2", # assumptions_commit ) iron = client.get_series("mining", "iron_ore.production", context=ctx) print(iron.metadata.resolved_commit) # record this
MethodPathReturns
GET/v1/catalogall domains, fields, judgements, scenarios
GET/v1/value/{domain}/{field}?scenario=&ref=a scalar value
GET/v1/series/{domain}/{field}?scenario=a timeseries
GET/v1/table/{domain}/{field}?scenario=a table

scenario required on every /v1/* call. Auth (when on): Authorization: Bearer <token>. Install editable / pinned-from-GitHub (private repo, PAT). Reference: API_SETUP.md, assumptions_client_quickstart.md.

Operations

The modelling checklist.

The SOP as a checklist. Nothing reaches a formal deliverable until the compliance gate passes. Download the provenance template →

Before modelling

  • Define the decision question.
  • Set the boundary — in / out.
  • List & classify material assumptions.
  • Check the registry; request missing inputs.
  • Agree scenarios; confirm units.

During modelling

  • Pull from the registry; no hard-coded shared values.
  • Keep data, assumptions & outputs separate.
  • Standard internal units.
  • Record exceptions immediately.
  • Run low/med/high; visible calc trail.

Before review

  • Produce: register, logic map, scenario summary, outputs, sensitivity table, exception log, provenance.
  • State limitations & open items.

Before publication

  • Owners sign off assumptions.
  • Model Owner signs off logic.
  • Custodian checks compliance.
  • Output records assumptions_commit; deck states scenario & basis.

The compliance gate

Ready for formal use only when all pass. Fail one → internal exploration only, never a formal result.

Decision clarityAssumption ownershipRegistry disciplineScenario disciplineCalc transparencyReview completedProvenance recordedLimitations visibleSign-offs complete

Production mode also requires review_status: reviewed, scenario approved_by: chief_analysts, and a pinned ref to published/v3/. An undocumented exception is a failure.

Operations

Changing an assumption.

Open a pull request to domains/{domain}/. The steward reviews within a 5-working-day SLA; shared drivers need every affected steward. A band shift >10%, new field, or new scenario routes to the monthly Assumptions Committee. On merge, publish_master_data.py recompiles published/v3/. See who stewards each domain →

Method

Modelling philosophy.

Every formal output is a function of four governed terms. Control all four, or it doesn’t go in a board paper.

Output = f( model_version, assumptions_version, data_snapshot, run_context )

Single source of truth

Read shared inputs from the registry, behind a provider interface — never local copies.

Vintaged & reproducible

Vintages are immutable; (vintage, scenario, model_version) + provenance decompose any change into assumption-delta vs logic-delta.

Cost vs worth

A floor (landed / cost-recovery) against a ceiling (bearable / affordable). The verdict lives in the gap.

Scenario discipline

Named scenarios defined centrally; one-lever what-ifs go to the tornado, never become a scenario.

Intellectual honesty

Don’t hide judgement in a number. Ranges over false precision. “Illustrative, not audited” is a tracked label.

Shared vocabulary

bearable/landed · T_min/T_max · goal_seek · deal_space · [Q]/[P]/[N].

Method

Capability & careers.

Our internal ladder mirrors the offer ladder — same spine, pointed at people. We grade on producing the weave. The full hub has the career ladder, how to self-assess, the problem-solving toolkit, the worked cases, and the workshop.

The career ladder

Five bands (Analyst → Partner), the placement rule, the two-band-gap promotion blocker.

Self-evaluation

The proficiency scale, the evidence rule, sponsor calibration — and the downloadable worksheet.

Problem-solving toolkit

The Decision Brief, issue vs hypothesis trees, the binding constraint, Expand·Link·Distill·Lead.

The cases & workshop

Five worked decisions, and how feedback works: name the step and the band, never the person.

Open Capability & Careers →
Commercial

Go-to-market.

“The weave is the product. The ladder is an escalator, not a menu.”

One proposition at five depths — the promise never changes rung to rung, only the depth, specificity and commitment.

1

Public Insight / Weekly Pulse · free

Free signal that proves the thinking.

2

Proprietary Brief / Outlook · first paid

The same weave, now sized — numbers, scenarios, a sourced answer.

3

Paid Pilot

The weave on the buyer’s variables — a scoped verdict (act/wait/hedge/reprice/phase).

4

Retained Intelligence

The weave delivered continuously.

5

Advisory / Deployment

The weave embedded inside the client.

Wedge sequencing

Prove the full motion on one wedge, then template it. Liquid Fuels → Gas → Corridor/Freight.

Painkiller or vitamin?

A buyer is validated only on a number, a story, or a referral. Polite enthusiasm doesn’t count — keep vitamins as internal capability.

See it live

The journey map walks the funnel from stranger to client.

Open the journey →
Knowledge

Field notes.

Internal knowledge-sharing — how we actually work, sanitised for the team.

Knowledge

Governance: the Master Assumptions Policy.

Models don’t each carry private assumptions. Shared assumptions live in one governed registry; every output records which version produced it.

1. Single source of truth

Models read from the registry, not local copies or hard-coded constants.

2. Versioned consumption

Every output records the assumptions_commit — reproducible and auditable.

3. Domain stewardship

Named steward per domain; shared-driver changes need every affected steward.

4. Scenario discipline

Named scenarios defined centrally; never redefined locally.

Knowledge

Domain stewardship.

13 governed domains. Each has a named custodian, a review cadence, and a 5-working-day SLA for field changes. Band shifts >10% or new scenarios go to the monthly Assumptions Committee. View the registry →

DomainNamed custodianTeamCadenceLast reviewedStatus
Macroeconomics Confirm at committee Strategy / Economics Quarterly Q2 2026 live
Energy Confirm at committee Integrated Energy (IE) Quarterly Q2 2026 live
Fuel Prices Confirm at committee Energy + Finance (joint) Monthly Jun 2026 wiring pending
LNG Transport Confirm at committee Energy Analytics Quarterly Q1 2026 wiring pending
Mining Confirm at committee Mining Centre of Excellence Quarterly Q1 2026 live
Manufacturing Confirm at committee Manufacturing Centre of Excellence Quarterly Q1 2026 live
Rail Confirm at committee Finance / TFR Liaison Quarterly Feb 2026 registry ready
Ports Confirm at committee Finance / TNPA Liaison Quarterly Feb 2026 registry ready
Rolling Stock Confirm at committee Transport / Rail Quarterly Q4 2025 wiring pending
Transport Confirm at committee Transport / Logistics Quarterly Q4 2025 wiring pending
Financial Confirm at committee Finance Quarterly Q1 2026 wiring pending
Agriculture Confirm at committee Agriculture Centre of Excellence Quarterly Q2 2026 live
Chemicals TBD Quarterly aspirational
Review SLA: Field value changes → custodian reviews within 5 working days. Band shift >10%, new field, or new scenario → monthly Assumptions Committee. Shared-driver changes (affect >1 domain) → every affected custodian must sign off. On merge, publish_master_data.py recompiles published/v3/.
Knowledge

Standards & voice.

“Bullish on the destination; ruthless on the evidence.”

Voice

Name the rock in the road, then the navigation line — never doom without direction. End on what to do, and by when.

The gating rule

Is this the story, or the number? Open = the structural story. Gated = the report, model, data. Paid = the sized brief.

Honesty

Cite only gathered evidence. No invented facts or dates. The machine carries coverage; the human keeps voice.