
Service Time — Estimated vs Actual
You priced each service assuming it takes X hours. Does it?
Time logged against each service, compared with the estimated effort of the tasks that time was spent on — so the services quietly eating more hours than they were priced for stop being invisible.

Where the estimate comes from
Workflow step estimates roll up into each task's budget, so the expected figure is built from the way you already described the work rather than from a number someone typed into a pricing spreadsheet once and never revisited.
There is no service-level fallback estimate, which is deliberate. If the steps do not carry estimates the row shows no expectation rather than an invented one, because a made-up baseline is worse than an honest gap — it makes an unpriced service look fine.
Pricing that reflects reality
A service that runs consistently over its estimate is either underpriced or badly scoped, and both are fixable once you can see it. The per-client drill-down on any service matters just as much: often a service is profitable across the board except for two clients whose work looks nothing like the rest.
That drill-down is where fee conversations start. "Your bookkeeping takes us twice as long as everyone else's" is a hard thing to say and an easy thing to prove, and the second is what makes the first possible.
Billable, unbillable and unattributed
Each row separates billable from total hours, so you can see the work you can recover as well as the work you did. A service can be comfortably inside its estimate and still be losing money if half the hours are unbillable.
Time that cannot be attributed to any service — logged against something with no service behind it — is reported as its own figure rather than being quietly dropped or spread across the rows. If that number is large, the service totals underneath it are only part of the picture, and you should be able to tell.
Filtering, drilling in, and getting it out
Set a period, then drill into any single service to swap the rows from services to clients. Row counts show how many tasks and engagements the hours came from, so a startling average can be checked against how much work it is actually describing.
Export to CSV for a pricing review, pin it to your dashboard, or query it through the MCP server.
This report needs time tracking switched on.
Related reports
These answer the question next door. If this report tells you something is wrong, one of them usually tells you why.
Related features
The parts of Sodium this report reads from — set these up and the report fills itself in.
Want to learn about other capabilities?
Explore all featuresHave questions or suggestions?
Get in touch