How we looked
The owner was sure the problem was a thin pipeline of big accounts. Before agreeing, we did the one thing the business had never done: we pulled twelve months of completed work and rebuilt what each recurring account truly cost to serve, not what the proposal assumed. That means counting the hours that never reach an invoice, crew labor at the real loaded rate, paid drive time between stops, the supervisor's windshield and re-clean time, and the after-hours callbacks the dispatcher handles as a favor. Then we ranked every account by real profit, coldly, no matter how prized the logo is.
What we found (the part that flips the story)
The three largest, most-protected anchor accounts, the ones on the website, the ones crews were hired around, lose money once true hours are counted. It is not even across them: the medical office park is roughly break-even, but the regional bank branches and the distribution warehouse bleed about $33,900 and $29,700 a year. The small post-construction and one-off jobs everyone calls 'filler' carry a 24 percent margin and were quietly funding the anchors. Meridian does not have a growth problem. It has a 'we cannot see which work makes money' problem, and was about to spend $150,000 to win more anchors exactly like the ones losing it.
Recurring book, real profit by account (trailing 12 months)
| Account | Billed / yr | Real cost / yr | Real margin | What it hides |
|---|
| Regional bank, 9 branches | $214,800 | $248,700 | -15.8% | After-hours alarm callbacks, none billed |
| Distribution warehouse | $181,200 | $210,900 | -16.4% | Two-man crew sent where the bid assumed one |
| Medical office park | $163,500 | $160,400 | +1.9% | Roughly fine; scope crept but so did the rate |
| Mid-size recurring (11 accts) | $2,140,000 | $1,952,000 | +8.8% | The quiet, healthy middle |
| One-off & post-construction | $1,061,000 | $806,000 | +24.0% | The 'filler' funding the anchors |
Regional bank, 9 branches
- Billed / yr
- $214,800
- Real cost / yr
- $248,700
- Real margin
- -15.8%
- What it hides
- After-hours alarm callbacks, none billed
Distribution warehouse
- Billed / yr
- $181,200
- Real cost / yr
- $210,900
- Real margin
- -16.4%
- What it hides
- Two-man crew sent where the bid assumed one
Medical office park
- Billed / yr
- $163,500
- Real cost / yr
- $160,400
- Real margin
- +1.9%
- What it hides
- Roughly fine; scope crept but so did the rate
Mid-size recurring (11 accts)
- Billed / yr
- $2,140,000
- Real cost / yr
- $1,952,000
- Real margin
- +8.8%
- What it hides
- The quiet, healthy middle
One-off & post-construction
- Billed / yr
- $1,061,000
- Real cost / yr
- $806,000
- Real margin
- +24.0%
- What it hides
- The 'filler' funding the anchors
Reconstructed from Meridian's own job records and payroll, not industry averages. 'Real cost' includes unbilled drive, supervisor, and callback hours. Rounded to the nearest hundred.
Real margin by account type, trailing 12 months
Regional bank (anchor)-16%
Distribution warehouse (anchor)-16%
One-off & post-construction+24%
Loss0Profit
The two losing anchors sit below the line. The work treated as least important is the most profitable.
Show our work: the worst account, line by line
Take the bank, 9 branches, billed at $17,900 a month. The bid assumed a 2.5-hour clean per branch, five nights. The crew clock and the route sheet say the real average is 3.1 hours once two older branches that always run long are counted. That gap is about 67 unbilled crew hours a month. Add the supervisor's 11 hours a month driving the route to re-check the two problem branches, and the after-hours alarm-reset callbacks, 4 to 6 a month at roughly an hour each, billed to no one. Loaded at Meridian's own labor rate, those unbilled hours run about $2,825 a month. That is why an account that 'looks like' $17,900 of revenue actually costs about $20,725 to serve. You are paying roughly $2,825 a month to keep this logo. We rebuilt every other account the same way, from your hours, not from estimates, which is why we believe the rest of the table.
The collection lag hiding it
58
days
Average time from work done to cash in the bank on the three anchors, against 30-day terms
28
days late
How far past terms the anchors run, so the bleed never shows up as a cash crunch on time
$94k
tied up
Roughly what is sitting in receivables past terms on the anchors at any given moment
Why it stayed hidden
These accounts were bid years ago from a rate sheet, won, and never re-costed, while the work quietly crept: a branch remodel that added square footage, a warehouse that started running a second shift, alarm callbacks that became routine. They are also the accounts the family defends hardest. The owner's brother runs the bank route and is proud of it; the warehouse was the win that 'put us on the map.' And the 58-day collection lag means the loss never arrives as a missed payroll, it arrives as a line of credit that keeps creeping up for reasons nobody can name. Nothing in the system showed the leak, and the people closest to it had reasons not to look.
Why an owner cannot catch this from the inside
This is a position problem, not a competence problem. Seeing it needs three things an owner running the day rarely has at once: the outside eye that knows exactly where margin hides in route-based cleaning work, the distance to call your proudest account unprofitable to your own brother's face, and the hours to rebuild a year of job costs and rank them without flinching. Neither Altvina founder has ever run a cleaning company. What we bring is a vetted operator who ran bidding and margin inside a multi-route janitorial firm, plus the founders' systems lens and the distance to do the counting. That judgment is what the diagnosis buys, not a spreadsheet you could have downloaded.
What we assumed (and would confirm)
We used Meridian's loaded labor rate as given. If the workers' comp class code or the real overtime load on the night crews is heavier than payroll showed, the anchor losses are larger, not smaller. We flag it because the re-pricing conversation should start from a number you have nailed down, and we would lock that down before the first call to the bank.