SMW-420 · Lesson 7 of 12 · 19 min
Estimating material, equipment and overhead
With the quantities measured and the labour estimated, Halima Noor still had more than half of the Eastgate estimate to build: the material Keelson would buy, the equipment it would use, the job costs that are not labour or material, the company overhead every job must carry, the allowance for risk, and the profit. Then the whole estimate had to be turned into a price on Northpoint Mechanical's bid form by the deadline on bid day. This lesson follows that process to the moment Halima submitted the bid, with Kai Ferreira handling the material pricing and the bid-day spreadsheet.
Material pricing
Material is priced from the take-off quantities and current supplier quotations. The largest single item at Eastgate is galvanized coil and sheet for the rectangular duct, followed by strip coil for the spiral machine, stainless sheet for the isolation and laboratory exhaust, and purchased items: fire and smoke dampers, volume dampers, access doors, flexible connectors, round fittings, sealant, tape, fasteners, hanger rod, strap, anchors and seismic bracing kits. Halima asks at least two suppliers for each major item and records the quotation number, the date, the validity period and any conditions, such as whether the price includes delivery or is held only for thirty days.
Steel prices move, sometimes sharply, and a hospital job may not buy most of its metal until a year after bid day. Halima deals with that in three ways. She asks suppliers for a price held for a stated period or tied to a published index. She includes an escalation allowance for metal bought later, based on the expected purchase dates. And, where the bid documents allow it, she qualifies the bid so that large changes in steel price after a stated date are adjusted. Each choice is a business decision about who carries the risk, and the bid must say clearly which one Keelson has made.
| Material item | Basis of quantity | Pricing source |
|---|---|---|
| Galvanized coil and sheet | Take-off weight plus waste | Mill or service centre quotation, escalation allowance |
| Spiral strip coil | Spiral length converted to weight | Coil supplier quotation |
| Stainless sheet | Take-off weight plus waste | Service centre quotation |
| Fire and smoke dampers | Count by size and type | Manufacturer's representative quotation |
| Accessories and fittings | Count by type and size | Supplier quotations and catalogue |
| Sealant, tape, fasteners | Percentage of duct weight or count | Shop records and supplier prices |
| Hangers, anchors, bracing | Hanger take-off | Supplier quotation |
Waste and yield
Not every kilogram or pound of coil bought ends up in the building. Straight duct cut on the coil line wastes little, but fittings cut on the plasma table leave skeletons of scrap between the parts, and the last part of every coil and every sheet is offcut. Keelson's records show the yield, the share of purchased metal that ends up in finished duct, for each kind of work. The estimate divides the take-off weight by the expected yield to find the weight to buy. Lessons 8 and 9 show how nesting and coil planning raise the yield; the estimator uses the shop's actual yield, not the best the software has ever achieved.
# Material cost of galvanized metal with yield and escalation (illustrative)
straight_mass = 12100 # take-off weight of straight duct, kg
fitting_mass = 6500 # take-off weight of fittings, kg
yield_straight, yield_fittings = 0.96, 0.80
buy = straight_mass / yield_straight + fitting_mass / yield_fittings
price_now = 2.40 # dollars per kg
escalation = 0.06 # expected increase by the purchase date
cost = buy * price_now * (1 + escalation)
print(f"metal to buy {buy:,.0f} kg (take-off {straight_mass + fitting_mass:,} kg)")
print(f"metal cost with escalation {cost:,.0f} dollars")metal to buy 20,729 kg (take-off 18,600 kg) metal cost with escalation 52,735 dollars
Equipment and job costs
Equipment is priced separately from labour. Keelson owns its shop machinery, and the cost of using it is recovered through a shop rate or an equipment charge per hour of machine time, but field equipment is often rented: scissor lifts and boom lifts, material hoists if the general contractor does not supply one, duct jacks, welding machines for the stainless exhaust, and job-site storage containers. Halima prices rented equipment by the expected rental duration from the schedule, plus delivery, pickup, fuel and damage waiver. A lift sitting idle on site for a month because the floor is not ready still costs money, so the schedule matters.
Job costs, sometimes called general conditions or field indirect costs, are the costs of running this particular job: trucking from the shop to the site, the site trailer or shared office space, small tools and consumables, safety supplies, temporary protection of finished duct, cleaning and capping of duct ends for the hospital's infection-control requirements, permits that belong to the trade, testing such as duct leakage tests in SMW-310, submittal printing, travel and parking. They are often modest individually but add up on a long hospital job.
Overhead, contingency and profit
Company overhead is the cost of running Keelson as a business: the office, the estimating department, accounting, insurance, vehicles that are not charged to jobs, software, the owner's salary and the cost of bidding jobs that Keelson does not win. Overhead is recovered by adding a percentage to the direct cost of each job, set from the company's annual budget and expected volume. If the shop wins less work than it expected, the same overhead is spread over fewer jobs, and the percentage it should have charged was too low.
Contingency is an allowance for risks that are real but uncertain, such as the steel price, the productivity at the existing hospital connection or the chance that coordination adds fittings. A good contingency is tied to specific risks rather than a round number added at the end, so that Halima can explain it and, if she must cut the price, cut it knowingly. Profit is what the company earns for taking the job's risk and investing its people and capital. Markup on a bid is usually applied as overhead and profit on top of direct cost, and the percentages vary with the market, the size of the job and how much the shop wants the work.
# Building the bid from direct costs (illustrative, dollars)
direct = {"labour": 1460000, "material": 880000, "equipment": 145000, "job costs": 118000}
cost = sum(direct.values())
contingency = 0.03 * cost
overhead = 0.11 * (cost + contingency)
profit = 0.06 * (cost + contingency + overhead)
subtotal = cost + contingency + overhead + profit
bond = 0.009 * subtotal
price = subtotal + bond
for k, v in direct.items():
print(f"{k:12s} {v:12,.0f}")
for k, v in (("contingency", contingency), ("overhead", overhead), ("profit", profit), ("bond", bond)):
print(f"{k:12s} {v:12,.0f}")
print(f"{'bid price':12s} {price:12,.0f}")labour 1,460,000 material 880,000 equipment 145,000 job costs 118,000 contingency 78,090 overhead 294,920 profit 178,561 bond 28,391 bid price 3,182,962
Bonds, insurance and contract terms
Many hospital jobs require subcontractors to provide a bid bond with the bid and, if they win, a performance bond and a labour and material payment bond. A surety company issues the bonds after assessing Keelson's financial strength and record, and charges a premium that is usually a small percentage of the contract value, with the rate depending on the contractor and the size of the work. The premium is a cost of the job and belongs in the estimate. Insurance requirements, such as the general liability limits and the wrap-up or project insurance arrangements, also affect cost, and Halima reads them in the bid documents rather than assuming last year's job applies.
Contract terms change the price too. In Canada the subcontract is often based on a standard form, such as the Canadian Construction Association's stipulated price subcontract, or on the mechanical contractor's own form, with holdback rules set by the provincial legislation: in Nova Scotia, the Builders' Lien Act requires the owner and contractors to hold back a percentage of payments until the lien period passes. Holding back part of every payment for months has a financing cost. Payment terms, liquidated damages for delay, warranty periods and the change order markup allowed are all read before pricing, because each carries cost or risk.
Bid day
The last day of a bid is compressed and stressful. Supplier and sub-trade quotations arrive in the final hours; addenda must be acknowledged; the bid form must be completed exactly as instructed, including separate prices, alternates and unit prices if they are requested; and the bid must reach Northpoint Mechanical before the deadline. Halima's team prepares the estimate days before, so that bid day is only about updating late prices and making the final decision on markup. A spreadsheet on bid day has a single summary sheet where each late quotation updates one cell, and a list of items still waiting for a price.
Owners and general contractors publish the rules for calling and awarding bids. Many Canadian public owners follow guidance such as the CCDC 23 guide to calling bids and awarding construction contracts, and some regions run a bid depository through the local construction association, where trade bids are filed by a set time before the general contractors' close. Canadian tender law, starting with the Supreme Court's Ron Engineering decision, treats a compliant bid as forming a contract to keep the bid open and to be evaluated fairly, so a bid with a serious error usually cannot simply be withdrawn after the close. Halima therefore checks the bid form twice before it goes.
# Bid-day update: late quotations replace estimated allowances
estimate = {"fire and smoke dampers": 196000, "spiral strip coil": 41000, "stainless sheet": 64000}
quotes = {"fire and smoke dampers": 183500, "stainless sheet": 67200}
change = 0
for item, allowance in estimate.items():
q = quotes.get(item)
if q is None:
print(f"{item:24s} still waiting, carry allowance {allowance:,}")
else:
change += q - allowance
print(f"{item:24s} quote {q:,} vs allowance {allowance:,} change {q - allowance:+,}")
print(f"net change to direct cost: {change:+,} dollars")fire and smoke dampers quote 183,500 vs allowance 196,000 change -12,500 spiral strip coil still waiting, carry allowance 41,000 stainless sheet quote 67,200 vs allowance 64,000 change +3,200 net change to direct cost: -9,300 dollars
Qualifications and after the bid
A bid is not only a number. Keelson attaches a short, clear list of qualifications: the scope sheet's inclusions and exclusions, the basis of the steel price, the assumed schedule and number of mobilizations, and any assumptions about hoisting, laydown and working hours. Qualifications must be stated in a way the bid documents allow; a bid that is heavily qualified may be treated as non-compliant. After the close, Halima keeps a bid result record: the prices of other bidders if they are known, the winning price, and her notes on where her estimate was high or low. Those records feed the next estimate and the labour units.
Halima's estimating work is a short version of what the construction management program covers in depth in its estimating and bidding courses. For a trade contractor the principles are the same, with one difference: the sheet metal shop also has to manage its own factory, so the estimate is also a plan for the shop's workload. Winning Eastgate meant reserving a large share of the coil line and plasma table for over a year, which affected every other job in the shop.
Worked problem
Checking the markup arithmetic
Direct costs are 2,603,000 dollars. Contingency is 3 percent of direct cost, overhead is 11 percent of cost plus contingency, profit is 6 percent of the total before profit, and the bond premium is 0.9 percent of the subtotal. What is the bid price?
Show solution
- Contingency: 2,603,000 × 0.03 = 78,090.
- Overhead: (2,603,000 + 78,090) × 0.11 = 294,920.
- Profit: (2,681,090 + 294,920) × 0.06 = 178,561.
- Subtotal 3,154,571; bond 28,391; bid price about 3,182,962 dollars.
Answer: The code above gives the same price. Writing out the arithmetic once by hand is a good check on any bid spreadsheet.
Common mistakes
MistakePricing metal from today's price for a purchase a year away.
InsteadUse held prices, an escalation allowance or a clear steel price qualification.
MistakeUsing the best nesting yield the software ever achieved.
InsteadUse the shop's actual yield records for each kind of work.
MistakeAdding contingency as a round number at the end.
InsteadTie contingency to specific, named risks.
MistakeIgnoring holdback or retainage and payment terms.
InsteadRead the contract terms and include the financing and risk costs.
MistakeLeaving all quotations to the last hour of bid day.
InsteadPrepare the estimate days ahead and keep a list of items waiting for prices.
Summary and key terms
- Material is priced from take-off quantities and dated supplier quotations, with waste and escalation allowed for.
- Yield records turn take-off weights into purchase weights.
- Equipment and job costs are priced from the schedule and the site conditions.
- Overhead, risk-based contingency, profit and bond premiums are added to direct cost.
- Contract terms such as holdback or retainage, payment and damages affect price.
- Bid day is about late prices and the markup decision; qualifications and bid records complete the process.
- Yield
- The share of purchased metal that ends up in finished duct.
- Escalation
- An allowance for prices rising between bid day and purchase.
- Job costs
- Costs of running a particular job other than direct labour and material.
- Overhead
- The cost of running the business, recovered as a percentage on each job.
- Contingency
- An allowance for specific uncertain risks.
- Bid bond
- A surety guarantee that the bidder will sign the contract and provide the required bonds if awarded.
Practice problems
Work each problem on paper first, then reveal the answer to check.
The take-off is 10,000 kg of fittings and the yield is 80 percent. How much metal must be bought?
Show answer
10,000 / 0.80 = 12,500 kg.
Why should contingency be tied to specific risks?
Show answer
So it can be explained and, if the price must be cut, cut knowingly.
What is a bid bond for?
Show answer
To guarantee the bidder will sign the contract and provide the required bonds if its bid is accepted.
Why does holdback or retainage cost the contractor money?
Show answer
Part of each payment is withheld for months, so the contractor finances that amount.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.