Plain-language questions
Ask for bench time per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Projects and time
Bench time is the share of available hours in which employees are not working on any project, billable or internal. You divide available hours without project work by total available hours. Bench time is capacity you pay for but do not use, and therefore a direct cost.
(Available hours − hours on projects) ÷ available hours × 100%
In September 2026 Acme Groothandel's installation team had 1,680 available hours. Of these, 1,260 were billable and 252 were spent on internal projects, leaving 1,680 − 1,260 − 252 = 168 hours with no project work. Bench time is 168 ÷ 1,680 × 100% = 10.0%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
Higher bench time means capacity goes unused, because of a shortage of work, a mismatch between planning and demand or waiting for a client. Some bench time between projects is unavoidable; persistent bench time calls for more sales, different planning or redeploying people. Read it alongside billable utilisation and the schedule for the coming weeks.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
WITH per_day AS (
SELECT employee_id, entry_date,
SUM(hours) FILTER (WHERE project_id IS NOT NULL) AS project_hours,
MAX(available_hours) AS available
FROM time_entries
GROUP BY employee_id, entry_date
)
SELECT date_trunc('month', entry_date)::date AS month,
SUM(available) AS available_hours,
SUM(available) - COALESCE(SUM(project_hours), 0) AS bench_hours,
ROUND(100.0 * (SUM(available) - COALESCE(SUM(project_hours), 0))
/ NULLIF(SUM(available), 0), 1) AS bench_pct
FROM per_day
GROUP BY 1
ORDER BY 1;Available Hours = SUMX ( SUMMARIZE ( TimeEntries, TimeEntries[EmployeeId], TimeEntries[EntryDate] ), CALCULATE ( MAX ( TimeEntries[AvailableHours] ) ) )
Bench % = DIVIDE ( [Available Hours] - CALCULATE ( SUM ( TimeEntries[Hours] ), NOT ISBLANK ( TimeEntries[ProjectId] ) ), [Available Hours] )In ENABLE
Ask for bench time per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
Bench time is employees' available time in which no project work is done, because there is no assignment or task for them. It is also called idle or unassigned time. It is expressed as a percentage of available hours.
Subtract the hours logged on billable and internal projects from available hours after leave and sickness. Divide the remainder by available hours and multiply by 100%. Complete timesheets are a precondition.
Look ahead: plan staffing for the coming weeks against expected work so you spot gaps early. Fill gaps with internal improvement projects or training, or align sales with available capacity. Then measure whether bench time falls.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.