How your team's time divides between revenue-generating billable work and internal non-billable overhead. Generated by AI via Proxuma Power BI MCP server.
How your team's time divides between revenue-generating billable work and internal non-billable overhead. Generated by AI via Proxuma Power BI MCP server.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: Operations managers, service delivery leads, and MSP owners managing capacity
How often: Weekly for scheduling, monthly for utilization reviews, quarterly for staffing decisions
How your team's time divides between revenue-generating billable work and internal non-billable overhead. Generated by AI via Proxuma Power BI MCP server.
EVALUATE
ROW(
"total", SUM('BI_Autotask_Time_Entries'[hours_worked]),
"billable", SUM('BI_Autotask_Time_Entries'[Billable Hours]),
"non_billable", SUM('BI_Autotask_Time_Entries'[Non billable Hours]),
"entries", COUNTROWS('BI_Autotask_Time_Entries'),
"billable_pct", DIVIDE(
SUM('BI_Autotask_Time_Entries'[Billable Hours]),
SUM('BI_Autotask_Time_Entries'[hours_worked]))
)
Overall distribution of time entries across your MSP, shown as a donut chart and segmented bar
EVALUATE
ROW(
"total", SUM('BI_Autotask_Time_Entries'[hours_worked]),
"billable", SUM('BI_Autotask_Time_Entries'[Billable Hours]),
"non_billable", SUM('BI_Autotask_Time_Entries'[Non billable Hours])
)
Each resource ranked by billable percentage, with comparison bars showing the billable vs. non-billable ratio
| TotalHours | BillableHours | NonBillableHours | Entries | BillablePct |
|---|---|---|---|---|
| 50,751.57 | 38,363.76 | 12,387.81 | 82,790 | 75.59 |
EVALUATE ROW("TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]), "NonBillableHours", SUM('BI_Autotask_Time_Entries'[Non billable Hours]), "Entries", COUNTROWS('BI_Autotask_Time_Entries'), "BillablePct", DIVIDE(SUM('BI_Autotask_Time_Entries'[Billable Hours]), SUM('BI_Autotask_Time_Entries'[hours_worked]))*100)
Five resources are below the 70% benchmark. Two are significantly below at under 56%. These represent the largest opportunity to recover billable capacity.
| # | Resource | Total Hours | Billable | Non-Bill | Bill % | Status |
|---|---|---|---|---|---|---|
| 1 | Dr. Amber Ayala DVM | 2,400 | 1,749 | 651 | 72.9% | Above target |
| 2 | James Li | 2,136 | 1,303 | 833 | 61.0% | Below target |
| 3 | Kevin Allen | 2,060 | 1,145 | 915 | 55.6% | Well below |
| 4 | Maxwell Reed | 2,050 | 1,838 | 213 | 89.6% | Above target |
| 5 | Andrew Roberts | 1,888 | 1,527 | 361 | 80.9% | Above target |
| 6 | David Hunt | 1,862 | 1,416 | 446 | 76.0% | Above target |
| 7 | Chelsea Thomas | 1,780 | 1,157 | 623 | 65.0% | Below target |
| 8 | Jennifer King | 1,585 | 1,228 | 356 | 77.5% | Above target |
| 9 | Jerry Mcfarland | 1,554 | 819 | 735 | 52.7% | Well below |
| 10 | Gregory Horn | 1,505 | 957 | 547 | 63.6% | Below target |
| 11 | Jeremy White | 1,492 | 1,094 | 399 | 73.3% | Above target |
| 12 | Elizabeth Ortega | 1,433 | 1,308 | 125 | 91.3% | Above target |
| 13 | Daniel Daniels | 1,418 | 1,344 | 75 | 94.7% | Above target |
| 14 | Brandon Bishop | 1,362 | 1,322 | 40 | 97.1% | Above target |
| 15 | Brandon Lynn | 1,344 | 1,087 | 256 | 80.9% | Above target |
EVALUATE TOPN(15, FILTER(ADDCOLUMNS(SUMMARIZE('BI_Autotask_Time_Entries','BI_Autotask_Time_Entries'[resource_name]), "TotalHours", CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])), "BillableHours", CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])), "NonBillable", CALCULATE(SUM('BI_Autotask_Time_Entries'[Non billable Hours])), "BillablePct", DIVIDE(CALCULATE(SUM('BI_Autotask_Time_Entries'[Billable Hours])), CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked])))*100), [TotalHours] > 100), [TotalHours], DESC) ORDER BY [TotalHours] DESC
The MSP-wide billable rate of 75.6% sits comfortably above the 70% industry benchmark. That is the good news. The problem is that the average masks a wide spread between top and bottom performers.
API Integration leads at 89.6%. This is an automated or heavily specialized resource where almost every hour maps to client work. Michael Brown, Emily Davis, James Wilson, and Dr. Jessica Adams DVM all sit above 70%, which means the top half of the team is carrying the overall number.
The bottom two resources tell a different story. Lisa Anderson at 52.7% spends nearly half her time on non-billable work. That is 735 hours that did not generate revenue. David Chen is at 55.6% with 915 non-billable hours, the highest absolute count on the team. Between these two resources alone, there are over 1,650 non-billable hours that need investigation.
Sarah Martinez is the third-highest in total hours (2,136) but only bills 61% of them. With 833 non-billable hours, she has more internal overhead than some team members have total hours. The pattern here matters: is this training, internal projects, or poorly categorized time?
If the five below-target resources each moved to 70%, the MSP would recover 943 billable hours. At a blended rate of $150/hour, that represents over $141,000 in potential revenue currently left on the table.
5 priorities based on the findings above
Both resources are below 56% billable. Pull their time entries for the last 90 days and categorize the non-billable hours by work type. Look for patterns: recurring internal meetings, admin tasks that could be delegated, or time entries that should have been marked billable but were not. 735 and 915 non-billable hours respectively is too high to ignore.
A common cause of low billable percentages is time entries logged against the wrong work type or ticket. If a resource works a billable ticket but logs time to an internal task, the hours show as non-billable. Run a cross-reference between ticket types and time entry categories for the five flagged resources. Even a 5% reclassification would recover meaningful hours.
Sarah has 2,136 total hours but only 61% are billable. That leaves 833 hours of internal work. If she is spending significant time on training, onboarding, or project management, consider whether those responsibilities should be shared or reassigned. She has the capacity to be a high-output billable resource if the non-billable load is reduced.
The gap between API Integration at 89.6% and Lisa Anderson at 52.7% is 37 percentage points. Resources cannot improve what they cannot see. Publish a monthly billable percentage per person (anonymized if needed) and set individual targets based on role. A dispatcher or service manager will naturally have a lower target than a field engineer. The point is that everyone should know their number.
Michael Brown (80.9%), Emily Davis (77.5%), James Wilson (76.0%), and Dr. Jessica Adams DVM (72.9%) are all above target. Keep them there. When internal projects or admin work comes up, route it to resources with capacity rather than pulling your best billers off client work. The top performers are already generating the revenue that compensates for the bottom of the list.
Time entries are pulled from Autotask PSA through the Proxuma Power BI connector. Each entry includes the resource name, hours worked, and a billable flag. The Power BI model separates these into Billable Hours and Non billable Hours measures, which the AI queries via DAX to calculate the split per resource.
The industry benchmark for MSPs is around 70% billable. Top-performing MSPs target 75-80%. The exact number depends on your service model: break-fix MSPs often run higher because most work is directly billable, while managed services MSPs may have more internal overhead from monitoring and proactive maintenance. Anything below 60% per resource warrants investigation.
API Integration is a system resource in Autotask that logs time entries automatically through integrations (e.g., RMM tools, monitoring platforms). These entries are typically billable because they represent automated work performed on client systems. Its high billable percentage (89.6%) reflects that automated entries are almost always tied to client-facing tasks.
Hours to Recover = (70% target x total hours) minus current billable hours. For Lisa Anderson: (0.70 x 1,554) - 819 = 269 hours. This is how many hours would need to shift from non-billable to billable for that resource to reach the 70% target. It does not mean working more hours. It means reclassifying or reducing non-billable time.
Yes. The DAX queries can be modified with date filters on the time entry date column or filtered by department/team. For monthly tracking, add a DATESINPERIOD filter. For team-level analysis, filter by resource department or role in Autotask. Ask the AI to regenerate the report with your preferred filters.
Yes. Connect Proxuma Power BI to your Autotask PSA account, add an AI tool (Claude, ChatGPT, or Copilot) via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real data, and produces a report like this in under fifteen minutes.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started