“Weekly Billable Hour Targets: Engineer Utilization Analysis”
Autotask PSA Datto RMM Datto Backup Microsoft 365 SmileBack HubSpot IT Glue All reports
AI-GENERATED REPORT
You searched for:

Weekly Billable Hour Targets: Engineer Utilization Analysis

How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. Generated by AI via Proxuma Power BI MCP server.

Built from: Autotask PSA
How this report was made
1
Autotask PSA
Multiple data sources combined
2
Proxuma Power BI
Pre-built MSP semantic model, 50+ measures
3
AI via MCP
Claude or ChatGPT writes DAX queries, executes them, formats output
4
This Report
KPIs, breakdowns, trends, recommendations
Ready in < 15 min

Weekly Billable Hour Targets: Engineer Utilization Analysis

How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. 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

Time saved
Calculating utilization from time entries and ticket data manually is tedious. This report does it automatically.
Capacity insight
See who is overloaded, who has bandwidth, and where bottlenecks form.
Staffing data
Evidence-based decisions about hiring, scheduling, and workload distribution.
Report categoryResource & Capacity
Data sourceAutotask PSA · Datto RMM · Datto Backup · Microsoft 365 · SmileBack · HubSpot · IT Glue
RefreshReal-time via Power BI
Generation timeUnder 15 minutes
AI requiredClaude, ChatGPT or Copilot
AudienceOperations managers, service delivery leads
Where to find this in Proxuma
Power BI › Resources › Weekly Billable Hour Targets: Enginee...
What you can measure in this report
Summary Metrics
Billable vs. Non-Billable Split
Time Entry Breakdown by Type
Internal vs. Client-Facing Hours
Top Resources by Total Hours
Analysis
What Should You Do With This Data?
Frequently Asked Questions
BILLABLE %
AVG WEEKLY / RESOURCE
WEEKLY TARGET
ACTIVE RESOURCES
AI-Generated Power BI Report
Weekly Billable Hour Targets:
Engineer Utilization Analysis

How much of your team's capacity turns into billable work, where the rest goes, and who is falling short. Generated by AI via Proxuma Power BI MCP server.

Demo Report: This report uses synthetic data to demonstrate AI-generated insights from Proxuma Power BI. The structure, DAX queries, and analysis reflect real MSP data patterns.
1.0 Summary Metrics
BILLABLE %
1,838 hrs
Maxwell Reed
AVG WEEKLY / RESOURCE
94.7%
Daniel Daniels
WEEKLY TARGET
55.6%
Kevin Allen
ACTIVE RESOURCES
84
With time entries recorded
View DAX Query — Summary Metrics
EVALUATE TOPN(10, SUMMARIZECOLUMNS('BI_Autotask_Time_Entries'[resource_name], "TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours])), [BillableHours], DESC)
What are these DAX queries? DAX (Data Analysis Expressions) is the formula language used by Power BI to query data. Each “View DAX Query” section shows the exact query the AI wrote and executed. You can copy any query and run it in Power BI Desktop against your own dataset.
2.0 Billable vs. Non-Billable Split

Overall hour distribution: 75.6% of all hours logged are billable, leaving 24.4% as non-billable overhead

75.6% BILLABLE
Billable: 38,364h
24.4% NON-BILL
Non-billable: 12,388h
View DAX Query — Billable vs. Non-Billable by Type
EVALUATE
SUMMARIZE(
    BI_Autotask_Time_Entries,
    BI_Autotask_Time_Entries[time_entry_type],
    "Entries", COUNT(BI_Autotask_Time_Entries[time_entry_id]),
    "Hours", SUM(BI_Autotask_Time_Entries[hours_worked]),
    "BillableHours", CALCULATE(
        SUM(BI_Autotask_Time_Entries[hours_worked]),
        BI_Autotask_Time_Entries[is_billable] = TRUE()),
    "NonBillableHours", CALCULATE(
        SUM(BI_Autotask_Time_Entries[hours_worked]),
        BI_Autotask_Time_Entries[is_billable] = FALSE())
)
ORDER BY [Hours] DESC
3.0 Time Entry Breakdown by Type

Where hours are going: ticket work dominates at 65.6%, followed by project tasks at 20.1%

TypeEntriesHours% of TotalCategory
Ticket Work74,13833,27165.6%Client-Facing
Project Task Work4,66210,21620.1%Client-Facing
Internal / Non-Billable3,5835,40010.6%Overhead
Service Call / Recurring4071,8643.7%Client-Facing
Ticket Work
33,271h
65.6%
Project Tasks
10,216h
20.1%
Internal
5,400h
10.6%
Service Calls
1,864h
3.7%
View DAX Query — Time by Type
EVALUATE
SUMMARIZE(
    BI_Autotask_Time_Entries,
    BI_Autotask_Time_Entries[time_entry_type],
    "Entries", COUNT(BI_Autotask_Time_Entries[time_entry_id]),
    "Hours", SUM(BI_Autotask_Time_Entries[hours_worked]),
    "BillableHours", CALCULATE(
        SUM(BI_Autotask_Time_Entries[hours_worked]),
        BI_Autotask_Time_Entries[is_billable] = TRUE()),
    "NonBillableHours", CALCULATE(
        SUM(BI_Autotask_Time_Entries[hours_worked]),
        BI_Autotask_Time_Entries[is_billable] = FALSE())
)
ORDER BY [Hours] DESC
4.0 Internal vs. Client-Facing Hours

85.7% of hours are client-facing. Internal overhead and service calls account for the remaining 14.3%.

85.7% CLIENT
Client-facing: 43,487h
10.6% INTERNAL
Internal: 5,400h
3.7% SVC CALL
Service calls: 1,864h
5.0 Top Resources by Total Hours

The five highest-producing resources by total logged hours, with work mix breakdown

#ResourceTotal HoursTicketProjectInternalEntries
1Resource A2,4001,7623301192,043
2Resource B2,1366916935862,236
3Resource C2,0602131,104395715
4Resource D2,0501,83972054,513
5Resource E1,8881,74221993,705
Resource A
73% Ticket
14% Proj
Resource B
32% Tkt
32% Proj
27% Int
Resource C
54% Project
19% Int
17%
Resource D
90% Ticket
10%
Resource E
92% Ticket
Ticket Work Project Tasks Internal Other
View DAX Query — Resource Utilization
EVALUATE
TOPN(15,
    SUMMARIZE(
        BI_Autotask_Time_Entries,
        BI_Autotask_Time_Entries[resource_name],
        "TotalHours", SUM(BI_Autotask_Time_Entries[hours_worked]),
        "BillableHours", CALCULATE(
            SUM(BI_Autotask_Time_Entries[hours_worked]),
            BI_Autotask_Time_Entries[is_billable] = TRUE())
    ),
    [TotalHours], DESC
)
ORDER BY [TotalHours] DESC
6.0 Analysis

The headline number is clear: 75.6% billable is close to the 80% target, but the real problem is not the percentage. It is the absolute hours. Across 84 active resources, the average weekly billable output is 10.9 hours per person. That is a third of the 32-hour target. Either the team has significant part-time or administrative resources inflating the headcount, or the workload is spread unevenly across a large roster.

Resource D is the efficiency model. With 2,050 total hours and 89.7% on ticket work, this person is consistently producing high-volume billable output. They have 4,513 time entries, which means short, frequent ticket touches. If this represents a dedicated service desk engineer, the pattern is exactly what you want. Worth understanding what makes their workflow so productive.

Resource B and Resource C tell a different story. Both have significant internal hours: 586 and 395 respectively. Resource B splits evenly between tickets and projects, but over a quarter of their time is non-billable internal work. Resource C is project-heavy (54%) with nearly 20% internal time. These two resources need a closer look. Is the internal time legitimate (training, documentation, tool maintenance), or is it unstructured downtime that could be reallocated?

The time entry type breakdown shows that ticket work at 65.6% is the primary revenue driver, with project tasks at 20.1%. That 85.7% client-facing rate is healthy for an MSP. The 10.6% internal overhead is within acceptable range, but only if it is being used productively. Track the internal time by category to find out.

The gap between total hours worked (50,752) and capacity (84 resources at 40h/week over the period) suggests many of these resources are part-time, specialized, or logging time inconsistently. Cleaning up the active resource definition would give a more accurate utilization picture.

7.0 What Should You Do With This Data?

5 priorities based on the findings above

1

Audit the active resource list to get an accurate utilization baseline

84 resources averaging 10.9 billable hours per week means the denominator is inflated. Filter down to full-time, billable-role engineers only. If you have 40 full-time techs, the weekly average jumps to roughly 22.7 hours. Still below target, but a more honest starting point. You cannot manage utilization against a headcount that includes dispatchers, managers, and part-time resources.

2

Investigate the 5,400 hours of internal time

10.6% of all logged hours are internal. That is not automatically a problem, but you need to know what it covers. Break it down by time entry sub-type or notes. If a large chunk is meetings, admin overhead, or uncategorized time, you have a scheduling problem. If it is training and documentation, it is an investment. The difference between productive and wasted internal time is visibility, not volume.

3

Review Resource B and Resource C's internal hour allocation

Resource B has 586 internal hours (27.4%) and Resource C has 395 internal hours (19.2%). Both are above the team average. Pull their internal time entries and categorize them. If these resources are in leadership or training roles, the hours make sense. If they are billable engineers spending a quarter of their time on non-client work, you are leaving revenue on the table.

4

Set up weekly utilization targets per role, not per person

A flat 32-hour target works for service desk engineers, but project leads, team leads, and senior escalation engineers have different time profiles. Set role-based targets: 32h for L1/L2 techs, 24h for project engineers (who have planning overhead), 16h for team leads. Measure everyone against a realistic benchmark and the data becomes actionable.

5

Use Resource D and Resource E as benchmarks for ticket efficiency

Both are logging 90%+ on ticket work with high entry volumes. Resource D has 4,513 entries across 2,050 hours, averaging 27 minutes per entry. That is a fast, high-throughput workflow. Study what tools, templates, or processes they use. If you can replicate their pattern across even five more engineers, you recover hundreds of billable hours per quarter.

8.0 Frequently Asked Questions
Where does the time entry data come from?

All time entries come from Autotask PSA. When a technician logs time against a ticket, project task, or internal activity, it creates a record in the BI_Autotask_Time_Entries table. Proxuma Power BI pulls this data automatically and the AI queries it using DAX to calculate totals, averages, and breakdowns.

Why is the weekly average so low if billable % is 75.6%?

Billable percentage and utilization are two different things. Billable % says 75.6% of logged hours are billable. Utilization measures those billable hours divided by total available capacity. If resources are logging fewer hours than they have available, the billable percentage can be high while absolute utilization is low. The fix is either more hours logged or fewer resources counted.

What is a good billable hour target for MSP engineers?

Industry benchmarks vary, but most profitable MSPs target 28-32 billable hours per week for full-time service desk engineers. That leaves 8-12 hours for meetings, training, documentation, and admin. Project engineers typically target 24-28 hours due to planning and coordination overhead. Anything below 24 hours for a full-time billable role is worth investigating.

How do I filter this report to a specific time period?

Add a date filter to the DAX queries using the date_worked column. For example, add FILTER(BI_Autotask_Time_Entries, BI_Autotask_Time_Entries[date_worked] >= DATE(2026,1,1)) to limit results to the current year. For weekly tracking, filter to the last 7 or 14 days.

Can I run this report against my own data?

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.

Generate this report from your own data

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