No single number answers this question, and the mistake starts with expecting one to exist. When you ask which services, divisions, and customers actually make money, you are really asking about several distinct things at once: how much revenue a segment brings in, how much of that revenue survives the costs the work directly causes, and what is left after the costs you can reasonably trace to that segment. The honest answer is a layered view rather than a verdict. It shows the economics you can attribute to a segment directly, keeps the costs you cannot attribute clearly separate, and treats any allocation of shared overhead as a choice you make rather than a fact you discover.
That distinction is the center of this diagnostic. A segment’s contribution, meaning what it earns after the costs its own work causes, is more directly grounded in attributable economics and is less dependent on allocation choice. A segment’s “fully allocated profit,” measured after shared overhead has been spread across the company, is partly an artifact of how you spread it. Both numbers are useful, but they are not the same number. Confusing them is how a segment that funds real overhead gets labeled a loser, or a segment with a thin result gets defended because the allocation happened to be gentle with it.
This is a diagnostic, not a decision. It tells you where the money is being made and lost relative to the resources each segment consumes, and it points you toward the segments that deserve a closer look. It does not tell you to drop a customer, cut a service, or close a division, and it does not tell you what to charge. A companion workbook lets you apply the same layered structure to your own numbers, one segment and one period at a time.
Analyze one dimension and one period, on one basis
Before any number means anything, fix the frame. Choose a single dimension to analyze: services, or divisions, or customers. Mixing them in one view produces double counting, because a single customer buys several services and a single division contains many customers. Analyze one dimension at a time, then run the view again on another dimension if you want a second angle.
Fix the period the same way. Use one reporting period for every segment in the comparison, long enough to capture the segment’s real rhythm. Seasonality is why this matters: a snow and ice division judged on an off-season quarter is not comparable to a maintenance division judged on a full year, and no amount of careful arithmetic afterward repairs a mismatched period.
Then hold the definitions constant across every segment in the view. Each segment must use the same entity or company scope, the same revenue-recognition basis, the same definition of cost, the same treatment of directly traceable costs, and the same treatment of shared costs. If one division counts equipment differently from another, or one customer’s revenue is booked on a different basis, the comparison measures your inconsistencies rather than the segments. Because the diagnostic works by comparison, consistency inside the view matters more than any single input being perfect.
A layered view of service, division, and customer profitability
1
Segment revenue
Revenue attributable to the segment in the period, on the chosen recognition basis.
2
Costs the segment’s work directly causes: field labor on those jobs, materials, subcontractors, direct equipment use, and similar job costs.
3
Contribution after directly traceable costs
Layer 1 minus Layer 2. What the work earns after the costs it directly causes.
4
5
6
7
8
Fully allocated result
Layers 1 through 5 are the primary diagnostic. They rest on costs you can attribute to the segment through a real causal link, so they change only when the underlying economics change. Layer 3 tells you whether the work covers the costs it directly causes. Layer 5 tells you whether the segment also covers the fixed costs that exist because of it, and that is the more revealing number when a division or a dedicated crew carries fixed costs of its own.
Layers 6 through 8 sit apart as a secondary layer, and the separation is deliberate. Shared business-wide overhead is real and has to be funded, but it is not caused by any one segment, so no single segment’s economics can be stated as fact once that overhead is pushed onto it. Keeping Layer 6 visible and unallocated is what stops the diagnostic from quietly turning an accounting convention into a conclusion about a segment.
A note on scope. This diagnostic reads cost inputs; it does not define them. How you cost a productive field hour, how you build job cost, and how you recover overhead across the company are established elsewhere. This view consumes those definitions and asks a different question: given consistent inputs, what does each segment actually contribute.
Why shared-overhead allocation is not economic truth
The central analytical point in this diagnostic is that allocating shared overhead does not reveal a segment’s true profitability. It distributes a company-wide cost using a rule you selected, and the rule you select changes the answer.
Consider an illustrative example. The figures below are invented to show the mechanism, and they are not a benchmark, a default, or a suggested rate. A company has two divisions and one pool of shared overhead of 600,000 dollars for the period. The divisions’ contribution after segment-specific costs (Layer 5) is already known and does not depend on how the pool is split.
400,000
300,000
Nothing about either division’s operations changed between the two allocation methods. The same crews did the same work at the same cost. Yet the maintenance division’s fully allocated result doubles from 50,000 to 100,000, and design/build falls from 250,000 to 200,000, purely because the allocation basis changed from revenue to field labor hours. The total is identical because the same 600,000 was spread either way. What moved was the split, and the split is a choice.
This is why the diagnostic reports Layer 5 as the primary read and treats Layer 8 as provisional even when it is complete. If a segment looks strong or weak only after shared overhead is allocated, the finding lives in the allocation method, not in the segment. Before acting on a fully allocated number, separate the contribution the segment produces from the enterprise overhead that was layered on top of it, and name the basis you used. Redesigning the allocation method itself is a separate exercise. Here, the discipline is simply to keep the allocated layer labeled, optional, and consistent across every segment in the view.
Keep revenue, contribution dollars, and contribution rate distinct
Three measures describe a segment, and each answers a different question. Treating them as one measure misreads the portfolio.
Revenue measures scale, or how large the segment is. Contribution dollars are the actual dollars the segment adds after the costs its work causes. Contribution rate expresses that contribution as a percentage of the segment’s revenue, which tells you how much of each revenue dollar survives. A segment can rank high on one and low on another, and each ranking means something on its own.
A high-volume maintenance service can run a modest contribution rate and still generate substantial contribution dollars, because even a modest rate applied to large revenue produces real money. A specialty service can carry a high contribution rate and still be too small to matter, because a strong rate on little revenue produces little. Neither pattern is automatically better. Do not treat a low rate as a problem to fix by reflex, or a high rate as a success to protect by reflex. Read the three together: the rate describes the economics of the work itself, the dollars show how much that work moves the company, and the revenue shows how much capacity it occupies.
There is no universal contribution rate that separates good segments from bad ones, and this diagnostic does not set one. A threshold that fits one company’s cost structure, service mix, and capacity would mislead another. What matters is how a segment’s three measures compare with the other segments in the same consistent view, and what that comparison suggests about where to look next.
Customer revenue is not customer profitability
For a customer analysis, the same layered logic applies, with one addition that deserves care. A large customer is not automatically a profitable one. Revenue tells you how much the customer buys, not how much the company keeps after serving them.
Build the customer’s view from the economics you can reasonably attribute to that customer: the revenue they generate, the directly traceable costs of serving them, and then any segment-specific costs that exist because of them. That produces the customer’s contribution on the same basis as any other segment.
Some of the costs a demanding customer imposes are real but not cleanly measured in your financials. Excess travel and mobilization to reach a distant or scattered site, rework driven by the customer’s standards or site conditions, scope creep that never becomes a billed change order, and a heavier collections and administrative burden all consume resources. When you have measured these costs, include them in the traceable layers. When you have not, surface them as qualitative notes attached to the customer rather than as invented dollar figures.
Manufacturing a number for mobilization or admin burden would corrupt the contribution figure and defeat the purpose of the diagnostic. A customer with strong measured contribution and a heavy qualitative burden is a candidate for closer investigation, not an automatic problem, and the note is what routes it there.
Two strategic realities also belong as context rather than as adjustments. Customer concentration means a single large account can carry more importance than its contribution rate alone suggests, because losing it would strand shared capacity. A lower-contribution customer, meanwhile, may support other work, occupy otherwise idle capacity, or open a route. These considerations matter to the eventual decision, but they are not reasons to overwrite what the numbers show.
Data quality: Known, Estimated, Missing
Every input in the view has a data-quality state, and labeling it honestly is part of the analysis. Mark each input as Known, Estimated, or Missing. Known means it is drawn from reliable records. Estimated means it is derived, apportioned, or judged. Missing means you do not yet have it.
These are states, not a score. Do not convert them into a percentage, a weighting, or a traffic-light rating, and do not average them into a single confidence figure. The point is to see exactly which inputs are solid and which are soft, not to compress that information into a number that hides it.
The most important rule is that Missing is never zero. A cost you have not captured does not become zero because the field is blank, and leaving it blank silently inflates the segment’s contribution. Mark it Missing and note what is absent. When a segment’s result depends on Estimated inputs, that result is provisional, and it should be labeled provisional wherever it is reported. Provisional does not mean useless. It is a signal that improving the estimate is one of the things the diagnostic is telling you to do, and it keeps a soft number from being treated as a hard finding.
From diagnostic to decision
The output of this work is not a ranking or a verdict. It is a map of where the company makes and loses money relative to the resources each segment consumes, along with a set of prioritized questions about the segments that stand out. The diagnostic informs management judgment and points to where deeper investigation is warranted. It does not, on its own, justify dropping a customer, eliminating a service, or closing a division.
The next questions follow the pattern of the findings rather than a fixed template. When a segment fails to cover the costs its own work directly causes, meaning contribution after directly traceable costs is negative, that is a direct signal to investigate because the segment is not covering the directly traceable costs assigned to its work before shared overhead enters the picture. When a segment covers its direct costs but not its segment-specific fixed costs, the question turns to whether those fixed costs are sized correctly, whether the segment is running below the volume its dedicated resources assume, and whether idle capacity could be redirected. When a segment looks weak only after shared overhead is allocated, the conclusion is allocation-sensitive. Return to the Layer 5 contribution before concluding that the segment itself is economically weak.
Where inputs were Estimated or Missing, the priority may simply be to get better data before drawing a conclusion, because a provisional result is not a basis for an irreversible decision. Where a segment’s result is genuinely weak on solid data, the finding routes to a specific follow-on decision about pricing, capacity, service mix, or equipment, each of which is its own analysis with its own economics. Strategic factors such as capacity utilization, cross-selling, seasonality, customer concentration, and growth belong in that next step, so that a diagnostic finding becomes a considered decision rather than a reflex.
Run the layered view for one dimension and one period, on a consistent basis, and the picture that emerges is more specific than the company-wide P&L suggests. The companion workbook lets you apply this structure to your own segments and see, layer by layer, what each one contributes before anyone decides what to do about it. If a segment looks weak only after shared overhead is allocated, or if too many of its inputs are still Estimated or Missing to trust the result, that is the point to separate contribution from enterprise overhead and work the numbers through with someone who reads them alongside how the business actually operates. If that would help, request a consultation.