Cost Analysis & Contracting

In-House or Contract: How to Actually Cost the Maintenance Porter Decision

CIC-SC Editorial Team··~8 minutes read

The Bottom Line

Most boards run this decision by putting a technician's salary next to a vendor's quote. At Magnolia those two numbers are $56,160 and $55,080, and the comparison says "contract." The real numbers are $124,822 and $149,202, and they say the opposite. Never compare a salary to a quote. Compare everything you would stop paying to everything you would start paying, then add what you gave up either way. The decision turns on one number almost no board computes: the break-even work-order volume. For Magnolia it is about 580 work orders a year.

Never compare a salary to a quote

The error is almost universal, and it is structural rather than careless. A board asks two questions — what would a maintenance technician cost, and what does the porter vendor charge — gets two numbers back, and puts them side by side. At Magnolia Recreational HOA the technician's wage would be $56,160 a year. The porter service quotes $4,590 a month, or $55,080 a year. The contract wins by $1,080, the board votes, and the file closes.

Magnolia Recreational HOA is a composite illustration built for the FOAM series. The community, its vendors, and its financial institutions are fictional; the structures and the arithmetic are real.

Cost accounting has had a name for this failure for decades. It is the make-or-buy analysis, and the discipline it imposes is that you may only compare avoidable costs on one side to incremental costs on the other — everything the decision actually changes, and nothing it does not. A wage is not the cost of an employee. A quote is not the cost of a contract. The wage omits every dollar of employer overhead that arrives with the person, and the quote omits everything the scope of work does not cover, which at Magnolia is most of the work.

The common error. A $56,160 salary against a $55,080 quote is not a cost comparison. It is two unrelated numbers wearing the same units. The salary is a fraction of what the employee costs; the quote is a fraction of what the contract costs. Getting the sign of the answer right by accident is still getting it wrong.

The assumptions, stated plainly

Every figure below is derived from a small, explicit assumption set, and the set is more important than any single number in it. A model whose assumptions are stated can be argued with. A model whose assumptions are buried cannot, which is why vendors prefer them buried.

AssumptionValueBasis
Total work orders per year72060/month across two pools, courts, playgrounds, amenity center, lakes, trails, 1,200 lots
Requiring a licensed trade regardless180 (25%)Electrical, HVAC, pool equipment, structural — contracted under either option, so excluded from the comparison
In scope for this decision540Routine repairs, upkeep, amenity turnarounds, light irrigation, minor plumbing
Split of the 540324 batchable / 216 same-day60% can wait for a scheduled visit; 40% cannot
Technician wage$27.00/hr × 2,080 hrsTexas metro, experienced generalist
General manager's hour, fully loaded$58The loaded cost of an onsite management hour, used throughout this series
Handyman call-out rate$95/hr, 2-hr minimumPlus $65 trip charge, $30 same-day premium
In-house cost escalation3.5%/yrWage, benefit, and fuel drift
Contract escalation5.0%/yrTrade labor reprices harder than wages, and vendors reprice annually

Work-order volume is held constant at 540 on both sides for all five years. That is a deliberate choice, and it is deliberately conservative against the in-house option — a technician who walks the property every day catches failures earlier and generates fewer work orders over time. We are leaving that benefit out of this model on purpose, so that nobody can accuse the arithmetic of being rigged. It is worth roughly $103,000 over five years, and a companion article puts it back in.

What the position actually costs

The fully loaded cost of the technician is $124,822 a year, or 2.2 times the wage. Every layer below is a real cash outflow or a real hour, and every one of them exists because the position exists.

LayerAnnualBasis
Base wage$56,160$27.00/hr × 2,080 hrs
Payroll taxes$5,050FICA at 7.65% ($4,296) plus federal and state unemployment
Workers' compensation$2,530≈4.5% of wage at a maintenance classification
Health contribution$5,400$450/month
Vehicle (truck + utility cart)$8,000$28,000 truck and $12,000 cart, amortized over five years
Fuel, vehicle insurance, upkeep$3,600$300/month
Tools, uniforms, consumables$2,400$200/month replacement
Training and certifications$1,800Pool operator, backflow, safety
Phone, tablet, work-order seat$1,200$100/month
Added liability coverage$1,400Rider on the association's package
Parts and materials$20,520540 work orders × $38, bought at cost
General manager's time$16,762208 hrs supervision + 81 hrs work-order administration, at $58
Fully loaded annual cost$124,822
One-time Year 1 startup$6,000Tool-up, cart outfitting, uniforms, onboarding
$0 $40k $80k $120k $56,160 What the board compares $124,822 What it actually costs Manager time — $16,762 Parts and materials — $20,520 Vehicle, tools, training — $17,000 Taxes, comp, benefits — $14,380 Base wage — $56,160
Figure 1. The wage is 45% of what the position costs. The other 55% is real, recurring, and invisible in the number the board was given.

The line that boards resist is the last one. The general manager's hours are already paid for inside the $6,000 monthly management fee, so supervising a technician appears to be free. It is not. An hour the general manager spends reviewing work orders is an hour she does not spend on collections, on the budget, or on holding the landscape vendor to its scope — and those are the activities with the highest return in the building. Manager attention is the scarcest resource an association has. Spending it is a cost whether or not anyone invoices for it.

What the contract actually costs

The contract costs $149,202 a year, and only $55,080 of that is the quote. The rest is what the scope of work does not cover.

LayerAnnualBasis
Porter service contract (the quote)$55,080324 batchable work orders on a scheduled route, ≈$170 each
Same-day call-outs$70,632216 × $327 ($65 trip + 2-hr minimum at $95 + $30 same-day + $42 parts)
Vendor invoices$125,712
General manager's coordination time$23,4900.75 hr per work order × 540 = 405 hrs, at $58
Fully loaded annual cost$149,202$276.30 per in-scope work order

The three-quarters of an hour per work order is where boards flinch, and it is the most defensible number in the table. It covers sourcing a vendor, scheduling the visit, granting gate access, meeting the truck, verifying the work was done, matching the invoice to the work order, disputing the line the vendor added, and calling twice because nobody came on Thursday. Four hundred and five hours is ten working weeks of the general manager's year, spent moving other people's trucks around.

These are what we call silent costs: recurring, predictable expenses that the contract does not name, the budget does not carry, and the general ledger files somewhere else. They are not surprises. A trip charge is not a surprise. A two-hour minimum on a twenty-minute repair is not a surprise. They are the vendor's business model, and they are perfectly legitimate — the association's error is not that it pays them but that it does not count them.

Five years, both columns

Over five years the contract costs $824,435 and the in-house position costs $675,354. The difference is $149,082 — about $124 per lot, or $25 a lot a year.

In-house, fully loaded Contracted, fully loaded $0 $60k $120k $180k $131k $149k Year 1 $129k $157k Year 2 $134k $164k Year 3 $138k $173k Year 4 $143k $181k Year 5
Figure 2. The gap widens every year, because the contract escalates at 5% and the payroll stack at 3.5%. Year 1's $18,380 difference becomes $38,120 by Year 5.
In-house, cumulative Contracted, cumulative $0 $200k $400k $600k $800k $675,354 $824,435 Year 1 Year 2 Year 3 Year 4 Year 5
Figure 3. There is no crossover in time. At Magnolia's volume the in-house option is cheaper from Year 1 — even carrying the $6,000 startup cost — and the lines diverge. The crossover in this decision is not a year. It is a volume.

That last point deserves emphasis, because boards go looking for a payback year and there isn't one. The in-house option does not "pay back" a large upfront investment; it substitutes a mostly fixed cost structure for a mostly variable one. Whether that trade is cheaper depends almost entirely on how much work there is to do — and not at all on how long you wait.

The number your board actually needs: break-even volume

Strip both options down to their structure and the whole decision fits on one line each. In-house costs $99,604 a year no matter what, plus $46.70 for every work order. The contract costs nothing at all if nobody calls, and $276.30 every time somebody does. Set them equal and solve.

In-house Contracted $0 $50k $100k $150k $200k Break-even: 434 Magnolia runs 540 200 300 400 500 600 700 In-scope work orders per year
Figure 4. The two options cost the same — about $119,900 — at roughly 434 in-scope work orders a year, which is about 580 work orders in total. Below that line, contract. Above it, hire. Magnolia is 24% above the line.

Below about 580 total work orders a year, contract. Above it, hire. That single sentence is worth more to a board than the entire five-year model, because it converts an argument about philosophy into a question the manager can answer from the work-order log in twenty minutes.

It also shows how much the answer depends on the volume assumption, and boards should test it before they act. If Magnolia's true in-scope volume is 400 rather than 540, the contract wins and the hire is a mistake. If the volume sits near the break-even line, something else happens that is worth knowing: the escalation differential takes over. At exactly 434 work orders the contract is cheaper in Year 1 by about $6,000, but the in-house option is cheaper in every year after that, and cumulatively the in-house option overtakes the contract during Year 4. Near the line, patience favors hiring. Far below it, nothing does.

Where the textbook stops being useful

The make-or-buy framework has one step that does not survive the trip into an association, and it is worth naming because consultants lean on it. In a factory, choosing to buy frees up floor space and machine hours that were being used to make the part, and those can be redeployed to something that earns. That forgone alternative use is an opportunity cost, and it gets charged against the "make" column — which is frequently what tips a textbook problem toward "buy."

An association has nothing to redeploy. Contract the porter work out and you free a maintenance shed, a parking space, and a storage cage. None of them will ever earn a dollar, because the declaration does not permit it and no one would rent them anyway. So the opportunity-cost charge on the in-house side is close to zero here, where in the textbook cases it can be substantial.

The mirror of that is also true, and it points the other way. In a factory the equipment and the space already exist, so the make option gets to lean on capacity the firm has already paid for, and its incremental cost looks small. Magnolia owns no truck, no tools, and no technician. Every dollar in the in-house column is a new dollar. There is no spare capacity to absorb, which is the real adjustment, and it tilts the arithmetic toward buying relative to Garrison's examples. The net of the two adjustments is that the freed-capacity step does almost no work in an association, and the comparison collapses to what it should have been all along: cash out, and manager hours consumed.

On manager hours the model is unambiguous. The contract consumes 405 of the general manager's hours a year; the in-house position consumes 289. Hiring gives the general manager back 116 hours — about three working weeks — and that is the one genuinely redeployable resource in the building.

What the arithmetic cannot price

Three things sit outside the model and the board must weigh them anyway. The first is response time. A same-day call-out at Magnolia means a truck arrives within eight hours if the vendor is not busy, and within two days if it is; an onsite technician means the broken pool gate is fixed before the afternoon swim lesson. The model prices the repair identically. Residents do not experience it identically.

The second is quality control. A vendor is accountable to its scope of work. An employee is accountable to the association. Those are different relationships, and the second one is easier to correct and harder to escape. The third is the resident experience of being known — a technician who recognizes a homeowner and the homeowner's fence is worth something in a community where the board's hardest job is not spending money but keeping the peace.

What to ask your manager. How many work orders did we close last year, how many of them required a licensed trade, and how many hours a week do you spend scheduling, meeting, verifying, and chasing vendors? Those three answers are the entire input set for this model. If nobody can produce them, the association has been making this decision on a feeling.

What to do with this

  1. Pull three years of the work-order log and count. Total closed work orders, and the share that required a licensed trade. That gives you the in-scope volume, which is the variable the whole decision turns on.
  2. Ask the general manager to log coordination hours for one month. Not an estimate — a log. Multiply by twelve, multiply by the hourly value of a manager hour, and put the number in the model where it belongs.
  3. Build both columns to the same standard. Every avoidable cost on one side; every incremental cost on the other. If a line appears on one side and not the other, be able to say why.
  4. Compute your own break-even volume. Fixed in-house cost divided by the difference between the contracted rate per work order and the in-house variable rate per work order. Compare it to your actual count.
  5. Re-run it at 80% of your work-order volume. If the answer flips, the decision is not robust and you should say so out loud in the minutes.
  6. Take the employment questions to counsel and the insurance broker before you take the arithmetic to a vote. Wage-and-hour classification, workers' compensation, and employment-practices coverage are not board judgment calls.
  7. Read the companion piece on fixed-cost risk before you vote. This model says hire. It is not the whole argument.

Sources and further reading.

  • Garrison, Noreen & Brewer, Managerial Accounting, 16th ed. (McGraw-Hill, 2018), ch. 12 — make-or-buy analysis and the discipline of comparing avoidable to incremental costs; ch. 1 — opportunity cost and the distinction between committed and discretionary fixed costs.
  • Garrison, Noreen & Brewer, ch. 6 — "omission of costs," the mechanism by which a real expense belonging to one function is reported against another, which is why a contract can look cheaper than it is.
  • Quiry, Dallocchio, Le Fur & Salvi, Corporate Finance: Theory and Practice, 4th ed. (Wiley, 2014), ch. 50 — a predictable, statistically regular loss is a cost rather than a risk, and belongs in the budget as a line.

Notice: CICSC provides educational resources, governance standards, and practical advisory support. CICSC does not provide legal advice, accounting advice, tax advice, engineering advice, insurance advice, or reserve study services. Board members and associations should consult qualified professionals for matters requiring professional judgment or legal interpretation.