Rate Card & Billable Hours Forecasting
This use case explains how to build a rate card and billable hours forecasting engine for professional services and consulting firms in Model Reef.
You will:
Define rate cards by role, grade, office or practice.
Forecast billable hours per role and location.
Use those hours and rates to drive revenue.
Integrate the result with utilisation and capacity planning, and with project pipeline schedules.
When to use this pattern
Use this pattern when:
Your revenue is driven by billable time and rates.
You need to test changes in rates, discounting or mix.
You want revenue forecasts to derive from headcount, utilisation and rate cards rather than top down assumptions.
It pairs naturally with:
Utilisation and Capacity Planning
Project Pipeline and Revenue Scheduling
Office or Team Profitability Modelling
Architecture overview
You will build three main elements:
Rate card drivers
Rates per role, grade, office or service line.
Optional different rates per client type or channel.
Billable hours drivers and variables
Billable hours based on FTE, utilisation and realisation.
Optional adjustments from project pipeline schedules.
Revenue variables and outputs
Revenue per role and branch.
Aggregated firm revenue and margin.
Decide rate card dimensions
First decide how granular your rate card needs to be, for example:
Role based only:
Consultant, Senior Consultant, Manager, Director, Partner.
Role and office:
Consultant - London vs Consultant - Manchester.
Role and service line:
Strategy Consultant vs Technology Consultant.
More granular rate cards give more detail but require more maintenance. Choose the smallest set of dimensions that meaningfully affect pricing decisions.
Create rate card drivers
In the Data Library, create drivers for rates, for example:
Rate - Consultant - London.Rate - Senior Consultant - London.Rate - Manager - London.Rate - Consultant - Manchester.
These should be periodic series so you can represent planned rate increases over time, for example:
Annual increases each financial year.
Step changes to reflect a strategic shift in pricing.
You can use manual, regression or ML based presets if you want rate changes to follow a pattern, but in many cases manual edits are sufficient.
Build billable hours from capacity and utilisation
Reuse or create drivers for:
FTE per role and branch.
Available hours per FTE.
Utilisation percentages.
Realisation percentages.
Then, in each branch, define variables such as:
Available Hours - Consultant - London.Billable Hours - Consultant - London.Realised Billable Hours - Consultant - London.
For example:
Available hours = FTE × available hours per FTE.
Billable hours = available hours × utilisation.
Realised billable hours = billable hours × realisation.
These variables can either be stand alone or integrated directly into the utilisation and capacity structure.
Create revenue variables per role and branch
For each role and branch, define Revenue variables such as:
Revenue - Consultant - London.Revenue - Senior Consultant - London.Revenue - Manager - Manchester.
Set the formula to:
Revenue = realised billable hours × relevant rate driver.
Ensure these variables are typed as Revenue so they feed P&L, Cashflow and Cash Waterfall.
You may also add summarising revenue variables by practice, office or service line that sum multiple role level variables for reporting.
Adjust for discounts and different client types
If you have materially different rates or discounts by client type or channel, you can model this by either:
Creating separate rate drivers and revenue variables per client segment, for example:
Rate - Consultant - London - Enterprise.Rate - Consultant - London - SME.
Or using discount drivers that modify the base rate, for example:
Effective Rate = Base Rate × (1 minus Discount Percentage).
Keep segment definitions as simple as possible to avoid a proliferation of variables.
Integrate project pipeline and scheduling
To tie revenue more directly to work in the pipeline, you can connect billable hours to project schedules by:
Using Pipeline drivers for expected hours per project and period.
Allocating those hours to roles and branches.
Ensuring that allocated hours reconcile with total billable hours capacity.
This approach is described in more detail in Project Pipeline and Revenue Scheduling and will allow you to check that the combination of rate card, hours and pipeline assumptions are consistent.
Build rate and revenue dashboards
Create a dashboard that shows:
Rate per role and office over time.
Total billable and realised hours per role and branch.
Revenue per role, office and practice.
Revenue per FTE or per billable hour as key KPIs.
Use this dashboard to answer questions like:
What happens to revenue if we increase rates by a certain percentage.
How much of revenue growth comes from increased rates versus increased hours or headcount.
How does rate and mix differ between offices or service lines.
Check your work
Rate drivers match actual or planned rate cards used by the firm.
Billable hours calculations align with utilisation expectations and past performance.
Revenue per branch and role looks sensible when compared to historical data where available.
Rate changes and hiring plans produce revenue patterns that match your expectations.
Troubleshooting
Related guides
Last updated