Most cleaning operators pick subcontractors one contract at a time. A big office job comes in, you scramble, you call whoever answered fastest, and you hand them the keys. Do that fifteen times and you don't have a subcontractor strategy — you have a pile of independent gambles that happen to share your logo on the site.
The problem surfaces later. One sub is cheap but generates twice the complaints. Another does spotless work but charges enough to erase your margin on maintenance jobs. A third is reliable but only covers one zone, so you're paying premium rates for coverage across town. Nobody planned it that way. It just accumulated.
This post is about the decision layer above individual jobs — the matrix that tells you how much work each subcontractor tier should get, based on cost-per-job thresholds, trial length, QA frequency, and when you hold payment. And critically, how those individual decisions roll up into a portfolio mix that doesn't quietly destroy your margin or your reputation.
Why your subcontractor mix drifts without you noticing
Each decision feels rational in isolation. A client needs coverage Thursday, your best crew is booked, so you use whoever's available. Fine. But you never go back and ask whether that "whoever" should be getting 8% of your monthly volume or 30%.
What shows up across cleaning portfolios is that the mix skews toward whoever is easiest to reach, not whoever produces the best cost-quality outcome. The subs who pick up fast and say yes to everything end up with disproportionate volume — and those are frequently the ones with the loosest standards, because they're saying yes to three other companies at the same time.
There's a second drift: cost creep on the top end. Your premium sub does great work, so you keep giving them the sensitive accounts — medical, high-end retail, anything with a picky facilities manager. Over a year, their share of your total spend climbs to something like 40% while they're covering maybe 20% of your jobs. You're paying a quality premium on work that didn't need it.
The fix isn't to fire anyone. It's to build a rule set that decides how much volume each sub earns, and to review that mix as a portfolio instead of one contract at a time.
The four levers you actually control
You don't control how good a subcontractor is. You control four things, and every one of them shifts your mix:
Stop losing bookings in operational chaos.
Wipyly helps you manage, confirm, and optimize every cleaning appointment efficiently.
- Centralized booking management
- Automated client notifications
- Staff scheduling & route optimization
No credit card required
-
Cost-per-job thresholds — the ceiling you'll pay per job type before a sub gets throttled or repriced.
-
Trial length — how long a new sub runs under heavy scrutiny before they earn steady volume.
-
QA frequency — how often you inspect, which scales inversely with proven reliability.
-
Payment hold rules — how long you hold a portion of payment against QA results and client sign-off.
The mistake most operators make is treating these as unrelated admin settings. They're not. They're the dials that determine which subs grow, which shrink, and which cost you money in ways that never show up on an invoice. A sub with a great cost-per-job number but a QA failure rate that forces weekly re-inspections isn't cheap — the inspection labor eats the savings.
If you haven't built the front-end of this yet — vetting, documentation, payment controls — the subcontractor onboarding, QA and payment-control workflow covers the intake side. This post assumes that's in place and focuses on the ongoing allocation decision.
Cost-per-job thresholds: set the ceiling by job type, not by sub
The instinct is to negotiate a rate with each sub and stick with it. The better move is to set a cost-per-job ceiling per job type across your whole portfolio, then see which subs fit under it.
Say maintenance office cleans in your core zone need to stay under roughly $95 per visit to hold your target margin. Deep cleans and post-construction fall in a different band — maybe $180–$260 depending on square footage. Medical or regulated sites carry a premium band because of QA overhead and liability, so you accept a higher ceiling there.
| Job type | Target cost ceiling | QA frequency (proven sub) | Payment hold |
|---|---|---|---|
| Core maintenance | ~$85–$95 | Every 6th visit | 10% for 7 days |
| Deep / post-construction | ~$180–$260 | Every job | 20% until client sign-off |
| Regulated (medical, food) | Premium band | Every job + photo evidence | 25% until sign-off |
| Fringe-zone coverage | Ceiling +15% | Every 4th visit | 10% for 7 days |
A sub who's under your ceiling on paper but keeps generating change orders and callbacks is not under your ceiling in reality. Track the all-in cost — base rate plus rework plus inspection time — not the quoted rate. That single reframe changes which subs actually look profitable.
Trial length: don't graduate subs on gut feel
New subcontractors need a trial period, everyone agrees on that. What almost nobody does is define when the trial ends and what graduating actually earns them.
A useful default is a trial measured in jobs, not weeks. Time-based trials are gameable — a sub can coast for four weeks on two easy jobs. A job-count trial with a QA pass threshold is harder to fake. Something like 8–10 completed jobs, no more than one QA failure, no client escalations — before they move from trial volume to steady volume.
During the trial, volume is capped. Give a promising new sub 2–3 jobs a week, never a full route, never a sensitive account. This limits your exposure if they turn out unreliable and gives you a clean sample to judge them on.
The pattern worth watching: subs who perform beautifully on their first two trial jobs and then slip around jobs six through eight. That slip is the real signal — it usually means the early jobs got their best crew and the later ones got whoever was free. A trial that ends after three jobs misses this entirely. Job count matters more than the calendar.
QA frequency should scale inversely with trust
Inspecting every job forever is expensive — every QA visit is a manager's time and a drive. But under-inspecting a new or shaky sub is how you find out about a problem from an angry client instead of from your own process.
-
Trial subs every job, with photo evidence.
-
Newly graduated (first ~20 steady jobs) every 3rd job.
-
Proven, low-defect subs every 6th job on maintenance, still every job on regulated sites.
-
Any sub after a QA failure snap back to every-job inspection until they rebuild a clean streak.
That last rule is the one people skip. A sub earns reduced inspection frequency by performing — and loses it the moment they fail. This creates a natural incentive without a single awkward conversation. The sub who wants fewer inspectors showing up learns exactly how to make that happen.
The connection between QA results, coaching, and pay is worth building deliberately rather than leaving informal — the field performance system that links QA, RCA, coaching and pay walks through how those pieces reinforce each other, which is exactly what makes reduced-frequency QA safe to grant in the first place.
Payment holds: your cheapest quality-control tool
A payment hold is a portion of a sub's payment you retain until QA passes or the client signs off. It's probably the most under-used lever in the whole mix, likely because it feels confrontational. It shouldn't. Framed correctly — "we release the hold within 7 days of a clean QA" — it's just how the relationship works, and good subs don't blink at it.
The hold percentage should track the risk of the job. Maintenance cleans in a familiar zone? A 10% hold released in a week is plenty. Deep cleans and regulated sites where a miss is expensive and reputationally damaging? Hold 20–25% until the client signs off, not just until your internal QA passes.
Payment holds also change sub behavior faster than any conversation. A sub who knows 20% is sitting on the deep-clean job until the client is happy will make sure the client is happy. And when you look at your portfolio, the subs who complain hardest about reasonable holds are often the ones you were about to have a QA problem with anyway. The hold tends to flush that out early.
Release holds on time; if your release process is slow, good subs leave and you get stuck with those who tolerate late payment.
One practical note: hold rules only work if you actually release on time. If your release process is chaotic and slow, good subs leave and you're left with the ones who tolerate getting paid late — the worst possible selection effect. The discipline has to run both directions.
Rolling it up: the portfolio-level view
Individual sub decisions are the easy part. The real skill is looking at the whole mix and asking whether it's balanced. Three portfolio-level questions worth running regularly:
Concentration. What percentage of your volume runs through your top two subs? If it's north of 50%, you have a coverage risk — one of them quitting or slipping takes a big chunk of your delivery with it. A healthier mix spreads core volume across three or four proven subs so no single failure is catastrophic.
Cost distribution. What share of your total sub spend goes to your premium tier, and does that match the share of jobs that genuinely need premium quality? When premium spend badly outruns premium job share, you're overpaying for quality on work a mid-tier sub could handle fine.
Coverage gaps. Are there zones or job types where you have exactly one sub? A single point of failure in a fringe zone means you'll accept whatever rate that sub names the day they realize you have no alternative.
Here's a simple visual to guide a quarterly portfolio review and the reallocation decisions that follow.
Review these three every quarter and adjust allocation — not contracts, just volume. Give more maintenance work to the proven mid-tier sub under your cost ceiling. Pull sensitive-site volume back toward the premium sub. Recruit a second sub in the single-coverage zone before you're forced to.
A real scenario
A commercial cleaning operator running around 60 active accounts had drifted into leaning on one sub for roughly 45% of monthly job volume. That sub was reliable, but their maintenance rate had crept to about $108 a visit — well above the $95 ceiling — because nobody had reviewed it in over a year.
They ran a mix review. Kept the premium sub on regulated and sensitive accounts where the rate was justified, but shifted roughly a third of the plain maintenance volume to a graduated mid-tier sub at $86 with a clean QA record. Added a job-count trial for a new sub in the one zone with single coverage, and tightened payment holds on deep cleans from a vague "we'll pay when we pay" to a flat 20% held until client sign-off.
Over the next couple of quarters, blended maintenance cost dropped somewhere in the range of $9–12 per visit on the shifted work, and callback rates on deep cleans fell because the payment hold changed how carefully those jobs got finished. Nothing dramatic in any single month. The mix just stopped quietly leaking.
When this is worth doing — and when it isn't
Do this when you're running enough subcontracted volume that the mix has real money in it — roughly a dozen or more subcontracted jobs a week across multiple subs. Below that, you can manage the relationships in your head and a formal matrix is overkill.
Skip the heavy version if you subcontract only occasionally for overflow. In that case, just keep a simple cost ceiling and a payment hold on anything sensitive. A quarterly portfolio review for four jobs a month isn't worth the time.
Be careful if you're tempted to over-optimize on cost. The cheapest mix on paper is usually not the cheapest mix once rework, inspections, and lost clients are counted. The whole point of tying cost thresholds to QA frequency and payment holds is that they force you to see the real cost, not the quoted one.
The checklist
Before your next allocation decision, run through this:
-
[ ] Is this sub under the cost ceiling for this specific job type and zone?
-
[ ] For a new sub, are they still inside their job-count trial, and is volume capped accordingly?
-
[ ] Does the QA frequency match this sub's current proven-reliability tier?
-
[ ] Has any recent QA failure reset them to every-job inspection?
-
[ ] Is the payment hold set by job risk, and do I have a clean 7-day release process?
-
[ ] At the portfolio level
is any single sub above ~50% of my volume?
-
[ ] Does my premium-spend share match my premium-job share?
-
[ ] Is there any zone or job type with only one sub covering it?
The point of the whole system is that subcontractor mix stops being something that happens to you and becomes something you actually steer. You decide who grows based on cost-per-job reality, how much scrutiny each sub has earned, and where your money is holding quality versus just buying peace of mind. Run this quarterly, and that pile of independent gambles turns into a mix you actually chose.
The point of the whole system is that subcontractor mix stops being something that happens to you and becomes something you actually steer. You decide who grows based on cost-per-job reality, how much scrutiny each sub has earned, and where your money is holding quality versus just buying peace of mind. Run this quarterly, and that pile of independent gambles turns into a mix you actually chose.
Ready to simplify your cleaning operations?
Join 1,000+ cleaning businesses using Wipyly to save time, reduce scheduling conflicts, and enhance client satisfaction.