Notes/Jun 2026
Jun 2026·9 min·Colby

A facilities maintenance company can win a fifteen-building portfolio on a clean preventive-maintenance number and be losing money on it by month three. The PM schedule is the easy part to price. What the bid never really counts is the reactive volume: the after-hours emergencies, and the one building that eats twice its share of work orders.

What the bid prices well

Preventive maintenance is predictable, so it prices cleanly. Quarterly HVAC filter changes, monthly common-area inspections, the annual backflow test. You can put hours and a frequency against each one per building and add them up. The proposal that comes out looks tidy and competitive, and it usually wins.

The trouble is that the PM schedule is maybe half of what the portfolio will actually demand over a year. The other half does not show up on a schedule, so it does not show up in the bid.

What it underprices

Reactive work orders are the half nobody priced. A tenant reports no heat, a pipe lets go on a Saturday, a door closer fails on the suite a law firm just moved into. Volume like this is not random across the portfolio. An older building throws more than a new one, and one demanding property manager generates more tickets than the other fourteen combined.

Most bids price reactive work as a flat per-door adder or fold it into the PM number, because the company has no record of how many reactive calls each property actually produced last year. So the bid is an average applied to buildings that are nowhere near average, and the heavy properties quietly carry the light ones until the contract as a whole stops making money.

Where the margin actually goes

After-hours dispatch is the first drain. An emergency call at 11 p.m. pulls a tech off rest or a subcontractor at premium rate, and an all-in contract eats the difference. Then there is the trade work the company does not self-perform: every plumbing or electrical job it subs out carries a markup the bid may not have built in.

Drive time is the quiet one. A portfolio spread across a metro means a tech spends an hour in traffic for a fifteen-minute fix, and that hour is real labor cost that no line item captured. Add the work orders that get completed but never billed because nobody was sure they were billable, and the margin that looked fine in the proposal is gone by the second quarter.

What a system changes

The fix starts with the data the operation already generates and throws away: every work order, tagged to its property, its trade, whether it was PM or reactive, and what it cost to close. Once a year of that exists, the next bid is priced on cost-to-serve per building instead of a portfolio average, and the renewal conversation comes with a number that reflects which properties actually cost what.

We built the work-order routing layer for a facilities operator running fifteen properties, and the same record that routes a ticket to the right trade also becomes the pricing history. The owner can see the three buildings running at a loss before the renewal, and either price them correctly or let them go on purpose instead of by accident.

Before you build it

Two things have to be real first. Work orders captured per property with enough tagging to separate PM from reactive, and the willingness to price a renewal on what a building actually costs rather than what keeps it cheapest to win. A pricing model is only as good as the history under it, and most maintenance companies have that history scattered across a dispatch inbox and a tech's memory.

Map one quarter to start. Pull every work order, tag each to a property and a type, and total the real hours and subcontractor cost per building. That alone, before any software, usually shows two or three properties that have been losing money the whole contract. Build against the gap that is costing you the most.

More notes
Jun 2026·9 min
How facilities management companies win new maintenance contracts
A facilities company keeps fifteen buildings running and still cannot reliably add the sixteenth, because the people who deliver the service are not the ones chasing the next portfolio. Here is where facilities business development leaks.
Read →
Jun 2026·8 min
Field service quoting: the estimate that leaves days after the tech does
A tech diagnoses the repair on-site, then the quote waits days while someone prices it, and the urgent customer calls the next company. Here is where field service quoting leaks.
Read →
Jun 2026·8 min
The staffing agency that grew on referrals and then stopped growing
An agency fills every req its clients send and still cannot add a new logo, because the people who could sell are buried in the people they place. Here is where staffing business development leaks.
Read →
Jun 2026·8 min
Why commercial cleaning accounts churn in month four
An account that paid on time and never escalated cancels in one email. The misses were small and nobody tracked them, so the first warning was the last one. Here is where janitorial retention leaks.
Read →
Jun 2026·9 min
The staffing margin: set once in the bid, eroded all year
An agency wins a placement on a bill rate set by gut, then watches the spread shrink through overtime, missed rate increases, and hours that never get billed. Here is where staffing margin leaks.
Read →
Jun 2026·9 min
Proving the clean: commercial cleaning QA before the client complains
Clients judge a cleaning vendor on the one thing they notice, not the forty things that went right. Here is where quality control breaks down and what a system catches before the client does.
Read →
Jun 2026·9 min
The commercial cleaning pipeline: where new accounts leak before the bid
Most janitorial owners prospect in the gaps between running the business, so the pipeline leaks at follow-up. Here is where the accounts go and what holds them.
Read →
Jun 2026·8 min
Why commercial landscaping companies lose track of job costs, and what it takes to see margin per contract
Crew hours sit in the timesheet app. Material costs sit in the bookkeeping ledger. Equipment hours sit on a log in the truck. None of them connect to the contract number, so the margin story is always three months old.
Read →
Jun 2026·8 min
How staffing agencies close payroll when the client timesheet and the worker's record disagree
The worker's hours sit in one place. The client's signed timesheet sits in another. Until both agree, neither payroll nor the invoice can close.
Read →
Jun 2026·9 min
How to audit a commercial cleaning operation for workflow gaps
The quoting log, the payroll close, and the prospect pipeline each signal a different kind of operational drag. Here is what to look for in each.
Read →
Jun 2026·8 min
How janitorial operators price contracts (and where the number goes wrong)
The math closes in an afternoon. The inputs are the hard part. Here is where underbidding starts and how to make the pricing logic repeatable.
Read →
Jun 2026·8 min
Why the RFP response is already late before anyone starts writing
BD found the opportunity. The deadline is in ten days. Most of that window goes to locating the right answers and confirming they are still current, before a word gets written.
Read →
Jun 2026·8 min
Where field service hours disappear before payroll runs
Workers clocked in. The shift happened. By Friday the coordinator is cross-referencing three sources and calling supervisors because the numbers do not add up.
Read →
Jun 2026·9 min
The commercial cleaning bid: why it still takes three days
The walkthrough takes 45 minutes. Getting a number to the prospect takes three days. Here is where the time goes.
Read →
May 2026·11 min
How to audit a services business for automation
A practical way to find the workflow bottlenecks worth fixing before anyone starts building with AI.
Read →
Mar 2026·8 min
Why we ship two projects, not five
How we score 30 ideas down to the two that move revenue this quarter.
Read →
Feb 2026·12 min
What we hand off when we leave
A runbook your team uses without us. Here is what it covers and how we test it before we go.
Read →
Jan 2026·15 min
Six engagements, one pattern
Where $1M to $50M services businesses lose revenue, and the fix that held.
Read →