> 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/professional-services-and-consulting/project-pipeline-and-revenue-scheduling.md).

# Project Pipeline & Revenue Scheduling

This use case explains how to represent a project pipeline and revenue scheduling for consulting and professional services firms using Model Reef.

You will:

* Capture the project pipeline as a series of engagements with fees, start dates and durations.
* Apply probabilities and win rates.
* Schedule revenue over time based on work patterns or milestones.
* Connect pipeline output to utilisation, capacity and cashflow.

## When to use this pattern

Use this pattern when:

* You win work through discrete projects or engagements.
* You want a forward view of revenue based on actual pipeline, not just run rate assumptions.
* You need to see how pipeline supports or falls short of capacity and headcount plans.

It is closely linked to:

* **Utilisation and Capacity Planning**
* **Rate Card and Billable Hours Forecasting**
* **Office or Team Profitability Modelling**

## Architecture overview

The pipeline modelling structure has three components:

1. **Project definitions**
   * One set of drivers or variables per project or per project group.
   * Fee, start date, duration, probability.
2. **Revenue scheduling rules**
   * How fees convert into revenue by period (time and materials, fixed fee, milestones).
   * How probabilities are applied (weighted pipeline versus committed work).
3. **Outputs**
   * Pipeline based revenue series by office, practice and role.
   * Comparison of pipeline revenue to capacity based revenue.
   * Views for base, upside and downside scenarios.

***

{% stepper %}
{% step %}

### Step 1: Represent projects in the Data Library

Decide how granular your project list should be in the model:

* One entry per major project.
* One entry per client or per programme of work.
* Aggregated entries for many small jobs by type.

In the Data Library, create entries for each project or project group with fields such as:

* `Total Fee`.
* `Expected Start Date`.
* `Duration in Months or Weeks`.
* `Probability of Win` for pipeline stages.
* `Office` or `Practice` if you want branch level mapping.

You can maintain this list directly in Model Reef or import regularly from a CRM or sales system as a CSV.
{% endstep %}

{% step %}

### Step 2: Define revenue scheduling patterns

For each project, decide how fees will be recognised over time. Common patterns:

* **Time and materials**
  * Revenue follows hours staffed and rates.
  * Can be approximated as evenly spread over expected duration if detail is not required.
* **Fixed fee straight line**
  * Equal revenue each period over the project duration.
* **Milestone based**
  * Revenue recognised at defined milestones and dates.

In Model Reef, you can represent these patterns by:

* Using schedule style drivers for each project.
* Or using formulas that map total fee into a series over the chosen periods.

Document the rule for each project in notes so that it is clear how revenue scheduling is being applied.
{% endstep %}

{% step %}

### Step 3: Apply probabilities and build weighted pipeline

For pipeline stages that are not yet won, you can compute a weighted pipeline by:

* Weighted Fee = Total Fee × Probability of Win.
* Weighted Revenue Series = Scheduled Revenue Series × Probability of Win.

Implement this by either:

* Applying the probability directly in the formula that generates revenue.
* Or storing both unweighted and weighted series separately for reporting.

This allows you to see both committed work (probability near 100 percent) and earlier stage pipeline in the same structure.
{% endstep %}

{% step %}

### Step 4: Map projects into branches and roles

Use branches to reflect where work is delivered, for example by office or practice.

For each project:

* Assign the relevant branch.
* Optionally, break the project into components by role or team if you need role level revenue.

Create Revenue variables such as:

* `Revenue - Project Alpha - Strategy Practice`.
* `Revenue - Project Alpha - Technology Practice`.

These variables will reference the scheduled revenue series for that project. Because they are type **Revenue**, they feed P\&L and cashflow automatically.
{% endstep %}

{% step %}

### Step 5: Link pipeline to capacity and utilisation

Once pipeline based revenue is in place, compare it to your capacity based revenue expectations from **Rate Card and Billable Hours Forecasting** and **Utilisation and Capacity Planning**.

Use dashboards or reports to show:

* Pipeline derived revenue per branch and period.
* Capacity derived revenue per branch and period.
* Gaps where pipeline is insufficient to hit revenue targets or keep staff productively utilised.
* Overloads where pipeline implies more work than you can deliver with planned headcount.

This comparison provides an early warning for hiring, marketing and sales planning.
{% endstep %}

{% step %}

### Step 6: Build pipeline and scheduling dashboards

Create a **Pipeline and Revenue** dashboard that includes:

* Weighted pipeline by month or quarter.
* Committed work versus early stage opportunities.
* Revenue by project, office or practice.
* Funnel style views summarising total fee and weighted fee by stage.

If you maintain separate models for different scenarios, you can compare:

* Base pipeline.
* Optimistic or upside pipeline.
* Downside or conservative pipeline.
  {% endstep %}

{% step %}

### Step 7: Maintain the pipeline over time

To keep the pipeline model useful:

* Update project inputs regularly from your CRM or sales pipeline tool.
* Move projects between stages and adjust probabilities.
* Close won projects and convert them to committed work with probability 100 percent.
* Archive lost or completed projects when no longer needed for planning.

You can either edit Data Library entries directly or replace them via periodic imports from external systems.
{% endstep %}
{% endstepper %}

***

<details>

<summary>Check your work</summary>

* The list of projects in the model reasonably matches the current live pipeline.
* Scheduling patterns reflect how work is actually delivered and invoiced.
* Weighted pipeline values are plausible when compared to typical win rates.
* Pipeline based revenue and capacity based revenue tell a coherent story.

</details>

<details>

<summary>Troubleshooting</summary>

* **Pipeline appears far larger than capacity**\
  Confirm that probabilities are realistic and that projects are not double counted across segments or branches.
* **Revenue seems misaligned with invoicing patterns**\
  Refine scheduling rules for large or unusual projects to better match expected billing and recognition.
* **Keeping the pipeline data up to date feels manual**\
  Automate as much as possible using CSV exports from CRM systems and a regular import routine.

</details>

***

## Related guides

* [Build a Top Down Forecast](/how-tos/core-modelling/build-a-top-down-forecast.md)
* [Build a Unified Forecast from Multiple Inputs](/how-tos/core-modelling/build-a-unified-forecast-from-multiple-inputs.md)
* [Revenue Mapping](/help/financial-outputs-and-valuation/revenue-mapping.md)
* [Entering Schedules](/syntax/how-input-fields-work/entering-schedules.md)
