> 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.modelreef.io/use-cases/construction-and-contracting/labour-and-subcontractor-planning.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
