---
title: "Demand forecast"
slug: workspace/demand
url: https://projectri.com/docs/workspace/demand
section: workspace
audience: workspace
app_route: "/[slug]/[user]/demand"
permissions: [booking.view, opportunity.view, report.cost, report.financial]
plan: resourcing.forecast
mobile: "/demand"
updated: 2026-09-08
source: Projectri documentation
---

# Demand forecast

Which roles the firm will be short of, in which months, and by how many people, from committed bookings and the open pipeline together.

![Demand forecast](https://projectri.com/docs-shots/workspace-demand.png)

## What it is

The demand forecast puts supply and demand on the same axis for the year ahead.
Demand is bookings already made plus the estimated work on open deals, weighted
by how likely each deal is; supply is capacity. The gap between them is
expressed in people, so the answer is a sentence somebody can repeat — *we will
be 2.4 senior developers short in October*.

## How to get there

Demand is in the main navigation, gated on `booking.view`. That key rather than
a reporting key, because this screen is the staffing plan and the sales pipeline
in one table and both are commercial intelligence.

The forecast needs the **`resourcing.forecast`** entitlement. Without it the
routes answer with a plan gate rather than data.

Three further keys change what is on the page:

- `opportunity.view` adds the pipeline half. Without it the report still answers
  the committed question rather than refusing — a delivery lead who cannot see
  deals can still see the staffing gap.
- `report.cost` adds **Cost to cover**.
- `report.financial` adds **Revenue at risk**.

Money columns are absent without their key, never zeroed.

## How to use it

### Read the sentence

1. The strip under the controls is the worst shortage and the biggest surplus,
   each in people, each naming the role and the period.
2. Beside them, where permitted, are the cost to cover the gaps and the revenue
   at risk across the whole window.

### Check the coverage first

1. The badge next to the title is pipeline coverage — how many open deals have a
   primary estimate attached.
2. It turns amber below 60%. Roles for the deals without an estimate are **not
   forecast at all**; they are missing from these numbers rather than counted as
   zero, which is the difference between a cautious forecast and a wrong one.

### Tune the assumptions

1. **Monthly / Weekly** sets the granularity. A weekly view shortens the window
   automatically, because eighteen months of weeks is 78 unreadable columns.
2. **Horizon** offers 6, 12 or 18 months.
3. **Count tentative** decides whether provisional bookings count as demand.
4. **Count pipeline** turns the speculative half on and off. With it off, the
   probability floor and the spread control disappear rather than sitting there
   meaning nothing.
5. **Minimum probability** floors the deals included — every open deal, or 25%,
   50%, 75% and likelier. There is deliberately no hidden floor.
6. **Spread** decides how a deal's estimated effort is laid across its months —
   evenly, front-loaded or back-loaded.
7. **Include contractors** adds contract capacity to supply.

### Drill into a number

1. Click any cell in the grid, or any band on the chart.
2. The panel lists the bookings, placeholders and open deals behind that cell,
   and prints their sum against the cell above.
3. If those rows do not add up to the cell, the panel says so and tells you to
   treat the forecast as unreliable. A forecast nobody can check is a picture.

### Read the hiring plan

1. Switch to **Hiring plan**.
2. It lists gaps that persist — a role short for several periods running, with
   the start, the number of periods and the average shortfall in people.
3. The **sustained for** control sets how many consecutive periods count.
   Shorter gaps are overtime, a contractor, or a date that can move.

### Read what is already sold

1. Switch to **Committed**.
2. This is placeholder bookings on won projects with nobody in them — unfilled
   work the firm has already been paid to do.
3. It is **unweighted**, unlike the forecast. A role 60% likely to be needed
   twice is not a person you can employ 1.2 times.
4. **Include deals we have not won** widens it to speculative work.

### Export

**Export CSV** writes every role against every period with supply, committed,
tentative, pipeline, demand, gap hours and gap in people, plus whichever money
columns you may see.

## What it affects

- **Nothing is written here.** The forecast is derived from bookings, project
  placeholders and opportunity estimates. It moves when those do.
- **Grid colours.** Red is short, the first chart colour is spare. A cell is
  drawn from the gap in people, not in hours, so a role with a 40-hour weekly
  team and a role with a 400-hour one are comparable by eye.
- **Where a gap comes from.** A sustained shortage usually means either
  unstaffed placeholders on won work, or a deal whose estimate has just landed.
  The drill panel names which.

## On mobile

The Expo app has **Demand**. The phone carries the sentence, the coverage line
under it, one role's gap per period as a bar diverging from a centre rule, and
the hiring plan. Grouping, the CSV and the full role-by-period grid stay on the
web, where there is width for them.

## Limits and gotchas

- The committed view reads at most a year at a time and says so when it shortens
  your window. Use the forecast for longer horizons.
- Supply is capacity net of holidays and approved leave, divided across the
  workspace's **working days** — which come from the country the workspace was
  created with. A wrong working week moves every supply figure on this page.
- **How this is calculated** prints the engine's own formula and assumptions
  verbatim, for the same reason Bench does.
- The window starts at the beginning of the current month, in UTC, and is read
  once when the page loads.
- Demand is forward over bookings *and open deals*.
  [Bench](/docs/workspace/bench) is the same firm this week, over bookings only.

## Related

- [Bench](/docs/workspace/bench) — the near-term half of the same question.
- [Resourcing](/docs/workspace/resourcing) — where the bookings and placeholders come from.
- [Pipeline](/docs/workspace/pipeline) — the deals and estimates the speculative half reads.
- [Plans and entitlements](/docs/features/plans-and-entitlements) — what `resourcing.forecast` is on.

## Related

- [Bench](https://projectri.com/docs/workspace/bench.md): How much billable capacity is unbooked over the coming weeks, what it is costing, and which people are free.
- [Resourcing](https://projectri.com/docs/workspace/resourcing.md): The staffing timeline — people down the side, days across the top, bookings as bars you can drag, resize and fill.
- [Pipeline](https://projectri.com/docs/workspace/pipeline.md): The deals being chased, on a board of stages, with a weighted forecast by month and conversion rates behind a second tab.
- [Plans and entitlements](https://projectri.com/docs/features/plans-and-entitlements.md): What each plan includes, what happens when you hit a limit, and why losing a feature never loses the data behind it.
