Program Cost Modelling
This use case explains how to model program level costs for not-for-profit and education organisations in Model Reef.
You will:
Represent programs, projects or services as separate branches.
Attach staffing, direct costs and allocated overheads to each program.
Link program costs to grant income, donations and earned revenue.
Produce P&L and cash views per program and in total.
The goal is to understand the true cost of delivering each program and to support funding, pricing and prioritisation decisions.
When to use this pattern
Use this pattern when:
You run multiple programs, services or projects with distinct objectives.
You want to know which programs are fully funded, partially funded or cross subsidised.
You need to justify funding requests or report program economics to stakeholders.
You want program economics stitched into group level reporting.
It is commonly combined with:
Grant Funding Models
Donor or Revenue Stream Forecasting
Multi Program Consolidated Reporting
Architecture overview
Program cost modelling uses:
Branch structure
One branch per program or project.
Optional regional or thematic parent branches.
Central overhead branch for shared costs.
Staff and direct cost variables
Program staff, contractors and volunteers.
Direct costs such as materials, venues, travel and equipment.
Overhead allocation structures
Central administration and support functions.
Allocation drivers by FTE, revenue, headcount or other metrics.
Financial outputs
Program level P&L and cash.
Contribution after direct and allocated overheads.
Coverage ratios relative to funding.
Step 1: Create branches for each program
In the branch tree, define a structure that reflects how you run and monitor your work, for example:
Organisation
Program - Youth Services
Program - Adult Education
Program - Research and Evaluation
Central Overheads
If you manage programs by region or thematic area, insert intermediate branches such as Region - North or Theme - Health, then add program branches underneath.
Each program branch will contain its own revenue and cost variables.
Step 2: Add program staff cost structures
Within each program branch, create Staff variables, for example:
Staff - Program Manager - Youth Services.
Staff - Case Workers - Youth Services.
Staff - Tutors - Adult Education.
Staff - Researchers - Research Program.
Define drivers for:
FTE per role.
Average salary per FTE.
Oncost percentages for super, pension, payroll tax and other benefits.
Formulas typically look like:
Staff Cost - Case Workers - Youth Services = FTE Case Workers × Salary per FTE × (1 plus Oncost Percentage).
Use timing settings to reflect pay cycles and delays, so that P&L, Balance Sheet and Cashflow outputs align with how staff are actually paid.
Step 3: Add direct program costs
Still within each program branch, create Opex variables for direct costs, for example:
Opex - Venue Hire - Youth Workshops.
Opex - Materials and Supplies - Adult Education.
Opex - Travel and Outreach - Youth Services.
Opex - Participant Support Costs - Research Program.
Link these to drivers such as:
Cost per participant or per group.
Cost per workshop or per term.
Cost per kilometre of travel.
Fixed baseline cost per period with growth.
This ensures direct costs scale appropriately with program activity in different scenarios.
Step 4: Model central overheads and allocation choices
In a Central Overheads branch, represent organisation wide costs, for example:
Staff - Executive and Leadership Team.
Staff - Finance, HR and IT.
Opex - Office Rent and Utilities.
Opex - Central Systems, Subscriptions and Insurance.
Decide whether to:
Leave these costs unallocated and show program contribution before central overheads, or
Allocate some or all overheads to programs for a fully loaded view.
If you allocate overheads, define drivers such as:
Share of FTE per program.
Share of program direct costs.
Share of revenue or funding per program.
Implement allocation through:
Additional Opex variables in program branches that reference central cost pools and allocation drivers, or
Custom reports that apply allocation formulas when presenting results.
Make allocation logic transparent and easy to adjust.
Step 5: Link program costs to funding and revenue
With program costs in place, connect them to funding streams by:
Using Grant Funding Models to represent grants in each program branch.
Using Donor or Revenue Stream Forecasting to represent donations, membership fees or earned income by program.
Keeping central or general funds in a separate branch if they are not program specific.
Create dashboards and reports that show for each program:
Total funding from grants, donations and earned revenue.
Total staff and direct costs.
Program contribution before and after overhead allocations.
Funding coverage ratios and any funding gaps.
This provides a clear picture of which programs are constrained, which are well funded and where flexible funding is most needed.
Step 6: Use scenarios for program changes and prioritisation
Clone the base model into scenario models to assess options such as:
Scaling successful programs up or extending them to new regions.
Restructuring or winding down underperforming programs.
Adjusting delivery models (for example more group sessions, hybrid or digital delivery).
Responding to changes in grant funding or donor income.
In each scenario, adjust:
Program staff and direct cost drivers.
Funding levels and mix per program.
Overhead allocation rules and central cost structures.
Compare scenarios using:
Program and group level surplus or deficit.
Cash requirements and reserve usage.
Ability to protect core programs under stress cases.
Clarity for boards and funders about trade offs.
Check your work
Program list and structure match how work is managed and reported internally.
Staff and cost assumptions reconcile to recent budgets or actuals when calibrated.
Overhead allocations are understandable and not overly complex.
The model can be maintained as programs start, scale, pause or end.
Troubleshooting
Related guides
Last updated