> For the complete documentation index, see [llms.txt](https://help.modelreef.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.modelreef.io/use-cases/construction-and-contracting/labour-and-subcontractor-planning.md).

# Labour & Subcontractor Planning

This use case explains how to plan labour and subcontractor deployment and costs across construction and contracting projects in Model Reef.

You will:

* Represent direct employees and subcontractors using Staff, COGS and Opex variables.
* Tie labour demand to project workload and schedules.
* Forecast subcontractor usage based on capacity gaps.
* See the effect on project margins and group cashflow.

The focus is on planning and forecasting rather than detailed timesheet level tracking.

When to use this pattern

* Labour and subcontractor costs are major drivers of project profitability.
* You want to understand whether you have enough internal capacity to deliver the pipeline.
* You need to decide how much work to give to subcontractors versus hiring more staff.

Combine this with:

* Project Cash Flow (Milestones) for project level cash behaviour.
* Multi-Project Consolidated Model for portfolio level views.

Architecture overview

The labour and subcontractor planning structure includes:

* Branch and role structure
  * Project branches for where work occurs.
  * Optional central branch for shared labour pools.
  * Role definitions for site labour, supervisors and subcontractors.
* Capacity and demand drivers
  * Internal labour capacity by role (FTE or hours).
  * Project demand for labour hours by period.
  * Subcontractor usage to cover gaps.
* Cost variables
  * Staff variables for internal labour.
  * COGS or Opex variables for subcontractors.
  * Timing of payments based on contracts and terms.
* Outputs
  * Labour cost by project and role.
  * Subcontractor spend over time.
  * Capacity gaps and utilisation.

{% stepper %}
{% step %}

### Define labour roles and structure

Decide how to group labour types, for example:

* Site workers (carpenters, electricians, general labour).
* Supervisors and foremen.
* Project managers.
* Specialist subcontractors (for example steel, electrical, mechanical).

In the branch tree, you can either:

* Place all labour in the project branches, or
* Use a central labour pool branch and allocate labour to projects using drivers.

Choose the approach that best matches how your organisation manages people.
{% endstep %}

{% step %}

### Create internal labour capacity drivers

In the Data Library, create drivers for internal capacity, for example:

* `FTE - Site Workers`.
* `FTE - Supervisors`.
* `FTE - Project Managers`.

Also define:

* `Available Hours per FTE per Period`.
* Leave and non productive allowances to reflect that not all time is billable or deployable.

Capacity per role each period is then:

* `Capacity Hours = FTE × Available Hours per FTE`.

You can define separate drivers per project or per central pool depending on your structure.
{% endstep %}

{% step %}

### Estimate project labour demand

For each project, estimate labour demand over time. Options include:

* Labour hours derived from project schedule and quantities (for example labour hours per unit of work).
* Labour hours as a percentage of cost or revenue.
* Labour hours approximated via templates for similar projects.

Represent demand using drivers such as:

* `Labour Demand Hours - Site Workers - Project X`.
* `Labour Demand Hours - Supervisors - Project X`.

These drivers can be entered manually, imported from project planning tools or derived from other model variables and drivers.
{% endstep %}

{% step %}

### Identify capacity gaps and subcontractor needs

Compare labour capacity to demand across projects:

* If demand exceeds internal capacity for a role in a period, the gap must be covered by subcontractors or additional hiring.
* If capacity exceeds demand, you have under utilised staff or can take on more work.

Analytically, for each period and role:

* `Gap hours = max(0, demand hours − capacity hours)`

From there, estimate subcontractor hours and costs:

* `Subcontractor Hours = Gap Hours`
* `Subcontractor Cost = Gap Hours × Subcontractor Rate`

Represent subcontractor cost using COGS variables such as:

* `COGS - Subcontractors - Project X`
  {% endstep %}

{% step %}

### Model labour and subcontractor costs

For internal labour, use Staff variables that represent:

* Salaries or hourly pay.
* Oncosts such as pensions, payroll tax and insurances.
* Timing of payroll.

For subcontractors, use COGS variables that reflect:

* Contract rates per hour, day or unit of work.
* Payment terms (for example 30 days from invoice).

Place these variables in project branches if they are clearly attributable to specific projects, or in a central branch if they are shared and later allocated.
{% endstep %}

{% step %}

### Connect labour planning to project margins and cashflow

Ensure that:

* Labour and subcontractor cost variables are correctly classified so they flow into P\&L and cashflow.
* Project level P\&L shows revenue minus labour, subcontractor and other direct costs.
* Group level Cashflow Statement and Cash Waterfall show aggregate labour and subcontractor cash outflows over time.

Use dashboards to show:

* Labour cost per project and as a percentage of project revenue.
* Subcontractor spend per project and overall.
* Capacity utilisation per role.

This makes it easier to see whether the chosen mix of internal labour and subcontractors is sustainable and profitable.
{% endstep %}

{% step %}

### Use scenarios to test hiring and subcontracting strategies

Create scenario models for different labour strategies, for example:

* Hire more internal staff to reduce subcontractor usage.
* Use more subcontractors to stay flexible and reduce fixed costs.
* Change mix by role or by project type.

Adjust drivers for:

* FTE levels and timing of hires.
* Subcontractor rates and usage.
* Project labour demand if schedule changes.

Compare scenarios using:

* Project and group level margins.
* Cash requirements and volatility.
* Utilisation and subcontractor dependence.
  {% endstep %}
  {% endstepper %}

Check your work

* Labour roles and cost structures reflect how the organisation actually operates.
* Internal capacity and project demand assumptions are grounded in past projects or realistic planning.
* Subcontractor cost patterns align with actual contract structures and rates.
* Project margins and group cashflows look plausible when compared to historical results.

Troubleshooting

<details>

<summary>Subcontractor spend appears unrealistically high</summary>

Check capacity assumptions and make sure internal labour is being used before subcontractors in your gap calculations.

</details>

<details>

<summary>Capacity appears sufficient but projects still show labour shortfalls</summary>

Ensure that you are comparing capacity and demand at the correct level of detail and that timing lines up across projects.

</details>

<details>

<summary>The model becomes too detailed to maintain</summary>

Group similar roles or subcontractor types and focus detail on the largest projects or the most critical labour categories.

</details>

Related guides

* [Core Modelling](/how-tos/core-modelling.md)
* [Data Workflows & Automation](/how-tos/data-workflows-and-automation.md)
* [Consolidation Logic](/help/building-your-model/consolidation-logic.md)
* [Formula Syntax](/syntax/formula-syntax.md)
