Which projects are delivering on time, which are falling behind, and where estimated hours no longer match reality. Generated by AI via Proxuma Power BI MCP server.
Which projects are delivering on time, which are falling behind, and where estimated hours no longer match reality. 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: Project managers, operations leads, and MSP owners tracking delivery
How often: Weekly for status updates, milestone dates for escalation, monthly for portfolio review
Which projects are delivering on time, which are falling behind, and where estimated hours no longer match reality. Generated by AI via Proxuma Power BI MCP server.
EVALUATE ROW(
"TotalTasks", COUNTROWS('BI_Autotask_Tasks'),
"Completed", CALCULATE(COUNTROWS('BI_Autotask_Tasks'), 'BI_Autotask_Tasks'[status_name] = "Complete"),
"Overdue", CALCULATE(COUNTROWS('BI_Autotask_Tasks'), 'BI_Autotask_Tasks'[status_name] <> "Complete", 'BI_Autotask_Tasks'[end_date] < TODAY()),
"Projects", DISTINCTCOUNT('BI_Autotask_Tasks'[project_name])
)
Largest projects ranked by total tasks, showing completion percentage, overdue count, and hour variance
| # | Project | Tasks | Completed | Overdue | Est Hours | Actual Hours | Completion % |
|---|---|---|---|---|---|---|---|
| 1 | Project Happy | 132 | 0 | 132 | 0.0 | 0.0 | 0.0% |
| 2 | Project If | 132 | 132 | 0 | 0.0 | 0.0 | 100.0% |
| 3 | Project Feel | 92 | 81 | 11 | 854.9 | 560.2 | 88.0% |
| 4 | Project Set | 71 | 31 | 40 | 303.0 | 317.3 | 43.7% |
| 5 | Project Police | 53 | 53 | 0 | 0.0 | 49.1 | 100.0% |
| 6 | Project Professional | 52 | 31 | 21 | 93.0 | 13.0 | 59.6% |
| 7 | Project Bag | 51 | 0 | 51 | 0.0 | 0.0 | 0.0% |
| 8 | Project Safe | 49 | 49 | 0 | 1,027.2 | 423.4 | 100.0% |
| 9 | Project Anyone | 42 | 0 | 42 | 0.0 | 181.4 | 0.0% |
| 10 | Project Environment | 36 | 36 | 0 | 1,205.0 | 1,586.7 | 100.0% |
EVALUATE
TOPN(10,
ADDCOLUMNS(
SUMMARIZE('BI_Autotask_Tasks','BI_Autotask_Tasks'[project_name]),
"Tasks", CALCULATE(COUNTROWS('BI_Autotask_Tasks')),
"Completed", CALCULATE(COUNTROWS('BI_Autotask_Tasks'), 'BI_Autotask_Tasks'[status_name] = "Complete"),
"Overdue", CALCULATE(COUNTROWS('BI_Autotask_Tasks'), 'BI_Autotask_Tasks'[status_name] <> "Complete", 'BI_Autotask_Tasks'[end_date] < TODAY()),
"EstHours", CALCULATE(SUM('BI_Autotask_Tasks'[estimated_hours])),
"ActualHours", CALCULATE(SUM('BI_Autotask_Tasks'[worked_hours]))
),
[Tasks], DESC
)
All 1,409 tasks grouped by current status, with average estimated and actual hours per task
| Status | Tasks | Avg Estimate (h) | Avg Actual (h) | Share |
|---|---|---|---|---|
| Complete | 967 | 8.9 | 15.9 | 68.6% |
| New | 316 | 1.1 | — | 22.4% |
| In progress | 119 | 8.9 | 14.2 | 8.4% |
| Planned | 4 | 7.0 | 3.5 | 0.3% |
| Waiting for third party | 2 | 13.0 | 16.5 | 0.1% |
| Waiting Customer | 1 | 12.0 | 1.0 | 0.1% |
EVALUATE
ADDCOLUMNS(
SUMMARIZE('BI_Autotask_Tasks','BI_Autotask_Tasks'[status_name]),
"Tasks", CALCULATE(COUNTROWS('BI_Autotask_Tasks')),
"AvgEst", CALCULATE(AVERAGE('BI_Autotask_Tasks'[estimated_hours])),
"AvgActual", CALCULATE(AVERAGE('BI_Autotask_Tasks'[worked_hours]))
)
ORDER BY [Tasks] DESC
Projects where every single task is overdue and zero tasks have been completed. These need immediate review.
| Project | Tasks | Completion | Overdue | Actual Hours | Status |
|---|---|---|---|---|---|
| Project Happy | 132 | 0% | 132 | 0 | Stalled |
| Project Dawn | 51 | 0% | 51 | 0 | Stalled |
| Project Flow | 42 | 0% | 42 | 181.4 | Active but overdue |
EVALUATE
FILTER(
ADDCOLUMNS(
SUMMARIZE(BI_Autotask_Tasks,
BI_Autotask_Tasks[project_name]),
"Tasks", CALCULATE(COUNTROWS(BI_Autotask_Tasks)),
"Completed", CALCULATE(COUNTROWS(BI_Autotask_Tasks),
BI_Autotask_Tasks[status_name] = "Complete"),
"Overdue", CALCULATE(COUNTROWS(BI_Autotask_Tasks),
BI_Autotask_Tasks[is_overdue] = TRUE()),
"Actual_Hours", CALCULATE(SUM(
BI_Autotask_Tasks[hours_worked]))
),
[Completed] = 0 && [Overdue] > 0
)
ORDER BY [Tasks] DESC
A 68.6% completion rate across 1,409 tasks is not a crisis, but the 30.8% overdue rate underneath it is a problem that compounds over time. Almost one in three tasks has missed its deadline. That backlog does not shrink on its own.
Project Happy is the biggest outlier. It has 132 tasks, zero completions, zero actual hours, and every single task overdue. This is not a project that is struggling. It is a project that was either abandoned or never started. The same pattern applies to Project Dawn with 51 tasks. Both should be reviewed this week to determine whether they should be cancelled, rescheduled, or reassigned.
Project Flow presents a different problem. It has 42 overdue tasks and 181.4 hours of logged work, but not a single task has been marked as complete. The work is happening, but it is not being tracked properly. This creates a false impression of zero delivery when engineers are actively working. A 5-minute conversation with the project lead about closing tasks as they finish will fix the data gap.
The most concerning operational signal is in the in-progress tasks. Across 119 tasks currently being worked on, the average actual hours (13.24h) exceed the average estimate (8.87h) by 49%. That is not a rounding error. It means active work is consistently running over budget, and any fixed-price projects in this group are losing margin with every hour logged.
On the positive side, Project If, Project Alpha, and Project Edge have all completed 100% of their tasks. Project Edge is worth noting because it finished 49 tasks using only 269.9 hours against an estimate of 1,027.2 hours. Either the estimates were padded or the team was unusually efficient. Worth understanding which, so you can apply the same pattern elsewhere.
Project Gamma completed all 36 tasks but went 31.7% over budget (1,586.7 actual hours vs. 1,205 estimated). This is the kind of project that looks healthy on a completion dashboard but creates a margin problem on the invoice. If this was fixed-price, the overrun cost real money.
5 priorities based on the findings above
Both projects have 100% overdue rates with zero completions and zero hours logged. That is 183 tasks sitting in the backlog producing nothing. Either formally cancel these projects, reset their timelines, or reassign them to someone who can start delivery. Leaving them in their current state inflates your overdue numbers and makes it harder to see real problems elsewhere.
Project Flow has 181.4 actual hours logged but zero tasks completed. Engineers are doing the work but not closing tasks. Talk to the project lead this week and set a standard: tasks get marked complete when the work is done. This is a 5-minute process fix that will immediately clean up your completion metrics and give you accurate delivery visibility.
Across 119 in-progress tasks, the average actual hours (13.24h) are 49% above the average estimate (8.87h). Pull the top 10 in-progress tasks by hour variance and check whether the scope changed, the estimate was wrong, or the work hit unexpected blockers. For fixed-price projects, this directly impacts your margin. You need to know which ones are bleeding.
Project Core has 71 tasks with only a 43.7% completion rate and 40 overdue tasks. It is also 4.7% over on hours. This project is not stalled like Happy or Dawn, it is actively running behind. A mid-project review with the team will help determine whether the timeline needs adjusting, resources need adding, or scope needs cutting. Waiting makes the overdue count worse.
Project Edge completed all 49 tasks using only 269.9 of 1,027.2 estimated hours. That is a 73.7% underspend. If the estimates were realistic, this team found a way to deliver at a fraction of the expected cost. Document what they did differently. If the estimates were just wrong, fix your estimating process so future projects start with realistic baselines.
The completion rate is the number of tasks with a status of "Complete" divided by the total number of tasks in the project. A project with 31 completed tasks out of 71 total has a 43.7% completion rate. This count includes all task statuses: new, in progress, planned, waiting, and complete.
A task is flagged as overdue when its due date has passed and its status is not "Complete." The overdue flag comes from the is_overdue field in the BI_Autotask_Tasks table. Tasks without a due date are not included in the overdue count.
Some projects in Autotask have tasks created without estimated hours. This typically happens with internal projects or ad-hoc work where time tracking is used for logging rather than budgeting. The hour variance column shows "N/A" or "No est." for these projects because there is no baseline to compare against.
Hour variance is (actual hours minus estimated hours) divided by estimated hours, expressed as a percentage. A variance of +31.7% means the project used 31.7% more hours than originally estimated. Negative values mean the project came in under budget. Projects with zero estimated hours are excluded from variance calculations.
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 project 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