← All resources

Pricing

How to Price a Commercial Construction Project

How commercial contractors price a job: scope, takeoff, loaded unit rates, overhead and fee, proposal terms, and tracking wins versus losses.

10 min read · Published August 16, 2026

Pricing a commercial construction project is part cost model, part risk judgment, and part communication. The number has to cover real work, reflect schedule and site conditions, and still stand next to competitors who may be using different assumptions about what is included.

The workflow below is written for GCs, specialty subs, and in-house estimators bidding negotiated tenant improvement or hard-bid commercial work. It is not a residential $/SF shortcut, and it is not a takeoff tutorial. How that commercial book differs from a house quote is in commercial vs residential construction estimating. Quantities still come from STACK, Bluebeam, or whatever you already use to measure drawings. Pricing is what you do after the tape is honest.

A through-line runs the whole article: an illustrative 4,200 SF office tenant improvement — vacant second-floor suite, Class B building, standard shift, GC self-performing interiors, electrical and HVAC bought or quoted. Every dollar that looks like a cost is a 2026 U.S. mid-market example. It is not RSMeans. It is not a real client. The hang-and-finish gypsum build-up is not repeated here; that table lives in how to build a commercial unit rate library. The 3/4" EMT build-up lives in how unit rate estimating works.

1. Clarify scope before you open a spreadsheet

Read drawings, specs, and addenda together. List what you will price, what is allowance, and what is by others. Ambiguity at this stage is margin leakage after award — not a documentation problem.

On the 4,200 SF suite, the set is architectural, electrical, mechanical, and a reflected ceiling plan. Before anyone measures, three conflicts are already visible:

  • Existing above-ceiling MEP is not as-built. Relocations could be nothing, or a week of premium time.
  • The door schedule shows a standard commercial hardware set; the spec names a heavier one.
  • The RCP notes ACT tile as "owner furnished"; the finish schedule does not.

Issue RFIs. Do not guess in a cell.

  • RFI-01 (existing conditions): who owns undocumented MEP moves above the ceiling? Until answered, carry a contingency and an exclusion, not a silent bump in the drywall rate.
  • RFI-02 (hardware): confirm the specified set. The door rate is EA of door+frame+hardware. The cheaper schedule is a different rate, not a discount.
  • RFI-03 (ACT): if tile is OFCI, the ACT rate is grid, labor, and tile handling only. Do not "split the difference" on a full tile+grid number.

Also confirm, in writing:

  • Bid form requirements — lump sum on the signature page, unit prices, alternates, bonds.
  • Schedule — four-week vacant build vs after-hours in an occupied floor. Labor efficiency is not the same.
  • Long-lead items — doors, light fixtures, HVAC gear — that need allowances or escalation language.
  • Who supplies fixtures, whether demo includes anything beyond standard partition removal, and whether finishes are allowance or fixed selection.

If the invite is silent, your proposal exclusions have to be loud. That is cheaper than discovering the gap in a kickoff meeting.

2. Build a quantity takeoff tied to units

Takeoff quantities should map to how you install and buy — not only how the architect counts. Group work by assembly or trade, use consistent units, and cross-check major quantities against similar suites you have already built. Takeoff is the measured list — not the estimate and not the proposal. The three-document split is in takeoff vs estimate vs proposal.

This is not takeoff software. Measure in STACK, Bluebeam, or your current tool. Then map those quantities to named rates. Keep the unit identical on both sides of that handoff. If Bluebeam is measuring wall SF by face, the gypsum rate is per face. If someone takes off partition LF and converts with a height factor, write the conversion down.

Illustrative takeoff on the 4,200 SF suite (openings deducted where that is the shop rule):

Measured itemQuantityUnitNotes
Hang+finish 5/8" Type X, walls ≤10', both faces4,200SFLevel 4, 20ga studs by interiors
20ga studs and track2,100SF of wallPartition area, not suite area
ACT 2x2, grid labor; tile OFCI3,800SFExisting grid reuse where the RCP allows
Paint, walls, L4-ready4,200SFPaint by interiors; hang/finish already Level 4
Door+frame+hardware, 3070 HM8EASpec hardware, not the cheaper schedule
3/4" EMT, exposed, ≤10' AFF1,850LFRaceway only; wire and boxes separate
Duplex / data devices64EADevice, ring, plate; not the homerun
2x4 LED lay-in48EAFixture and install; controls separate if spec'd
HVAC adjust1LSSub quote — not unit-rated in this example
Demo / patch1LSStandard partition demo; no abatement

Electrical and low-voltage shops can electrical estimating software for repeat unit-rate work to keep raceway, device, and lighting rates in one library.

Sanity checks before you price: 1,850 LF of 3/4" EMT on 4,200 SF is about 0.44 LF per SF of suite — plausible for a modest power-and-data TI, suspicious if it were 0.15 or 1.2. Eight doors on a small suite is a cut-up office, not an open floor. 4,200 SF of gypsum on a 4,200 SF suite means you are counting wall faces, not floor area; that is expected, and it is why suite-$/SF is a terrible first number.

When an addendum lands, change the quantity in takeoff and re-extend. Do not "add 10% for the IDF" on a lump line.

3. Apply unit rates and loaded costs

Multiply quantities by unit rates that already include labor burden, materials, and known equipment for that condition. For one-off items, build a mini-estimate inline, then save it as a reusable rate only if the scope will repeat.

Validate labor productivity against recent crews and this site, not a national average. Update material from current quotes. Add mobilization, permits, and supervision as line items or as loaded overhead — pick one home, and say which.

On this suite, two rates are already built in the other guides. Use them as extensions; do not rebuild the tables.

  • Hang and finish 5/8" Type X, Level 4, interior walls ≤10' on 20ga studs: $2.54/SF direct (illustrative). See the library post. 4,200 × $2.54 = $10,668.
  • 3/4" EMT, exposed, ≤10' AFF, commercial TI: $10.36/LF direct (illustrative). See how unit rate estimating works. 1,850 × $10.36 = $19,166. The published 3/4" EMT, exposed unit is at 3/4" EMT, exposed — do not mix those packets.

The rest of the stack below is also illustrative 2026 U.S. mid-market. These unit prices are not worked examples. They exist so the overhead and fee math has a denominator.

LineQtyUnitDirect rateExtension
Hang+finish 5/8" Type X, L4, ≤10'4,200SF$2.54$10,668
20ga studs and track2,100SF wall$3.85$8,085
ACT 2x2, grid labor; tile OFCI3,800SF$4.15$15,770
Paint, walls4,200SF$0.92$3,864
Door+frame+hw, 3070 HM, spec set8EA$1,480$11,840
3/4" EMT, exposed ≤10' AFF1,850LF$10.36$19,166
Duplex / data devices64EA$88$5,632
2x4 LED lay-in48EA$215$10,320
HVAC adjust (sub quote)1LS$28,400$28,400
Demo / patch1LS$7,200$7,200
General conditions, 4 weeks4WK$4,100$16,400
Direct subtotal$137,345

This is an interiors-plus-electrical-plus-HVAC-adjust package, not a turnkey TI. Flooring, millwork, plumbing, fire alarm, and permits sit in allowances or by others. Do not compare $137,345 ÷ 4,200 SF ($32.70/SF direct) to a published full-TI $/SF.

Document the assumptions you will need if the client negotiates: vacant, standard shift, tile OFCI, spec hardware, HVAC as a quoted lump, existing MEP moves excluded pending RFI-01.

4. Add overhead, fee, and contingency deliberately

Overhead recovers home-office cost. Fee is profit. Contingency covers unknown risk on this job. Some companies load overhead into each unit rate; others apply it once at the proposal level. Either works if it is consistent. Mixing them is how interiors get taxed twice.

On this example, keep library rates direct. Apply markup on the proposal, matching how overhead and markup work in the product. The full stack — and why a public unit rate leaf shows 10% then 10% without contingency — is in overhead, fee, and contingency on commercial bids.

  • Overhead: 12% of direct = $16,481
  • Direct + overhead = $153,826
  • Fee: 8% of (direct + overhead) = $12,306
  • Contingency: 3% of direct, tagged to RFI-01 existing above-ceiling MEP = $4,120
  • Proposal total: $170,252

That is about $40.54 per SF of suite for this defined package. Contingency is not a hidden bump inside the $2.54 gypsum rate or the $10.36 EMT rate. If RFI-01 comes back "owner owns unforeseen MEP moves," drop the $4,120 and keep the exclusion. If it comes back "GC owns it, no as-builts," 3% may be light — put a stated allowance on the proposal instead of padding every LF.

Illustrative 4,200 square foot office TI proposal build-up: $137,345 direct, $16,481 overhead, $12,306 fee, $4,120 contingency, $170,252 total.
Illustrative interiors plus electrical plus HVAC adjust. $40.54 per SF of suite for this defined package, not a turnkey TI $/SF.

On competitive bids, do not cut fee first without knowing which line is already thin. A win/loss log that says "lost on price" is useless if HVAC was the outlier and Type X was fine.

When lump sum is still right

Unit rates are the default on repeat commercial scopes. Lump sum still belongs on the page in a few cases:

  • A sub quote you do not break down. HVAC on this suite stays one LS line because the GC is not running a mechanical unit-rate library. Do not fake VAV unit rates from a PDF total.
  • A one-off assembly. A custom reception desk used once is an EA mini-estimate, not a library rate, until you have installed it twice.
  • A bid form that only accepts a lump on the signature page. Internally you can still extend units. The owner-facing total can be one number. Publish unit prices only when the form asks for them.
  • A genuine allowance where the work is not measurable yet (finish selection not made, existing conditions sealed). Call it an allowance. Do not call it a unit rate.

The failure mode is using lump sum because the library was empty, then defending that number on a change order. After award, price the change from the same unit rates that won the job.

5. Write scope and payment terms clients can approve

Numbers without clear scope create change orders and disputes. Pair line items with scope language, inclusions and exclusions, and payment terms that match how you actually bill.

On the 4,200 SF suite, the proposal should repeat what the rates already know:

  • Gypsum is hang and finish to Level 4, walls ≤10', studs separate, paint separate, ceilings separate.
  • EMT is 3/4" exposed raceway ≤10' AFF; conductors, boxes, and devices are other lines.
  • ACT tile is owner furnished; grid and labor are in the number.
  • Hardware is the specified commercial set.
  • HVAC is the quoted adjust; it is not a full mechanical redesign.
  • Unforeseen above-ceiling MEP relocation is excluded or covered by the stated contingency/allowance — one of those, not both, and not silence.

Payment terms for a short vacant TI often look like: deposit or first progress on mobilization, monthly progress against a schedule of values, retainage (10% to 5% at substantial is common), and a validity period (30 days is typical while steel, gypsum, and fixtures are moving). Write the terms you will actually invoice. A net-90 surprise after a 4-week job is how a "win" becomes a cash problem.

Construction proposal software should let you send an online review link, capture accept or decline, and keep a PDF record so pricing and agreement stay linked. Do not leave acceptance in an email thread that the PM cannot find.

6. Review internally before send

A second set of eyes is cheaper than a public addendum.

On this package, the review is specific:

  • Quantities and extensions. 4,200 × $2.54 and 1,850 × $10.36 are arithmetic; the risk is a missed homerun or double-counted wall faces. Recheck the takeoff units against the rate names.
  • Benchmark. Last three vacant-suite interiors-plus-MEP-adjust packages, same scope definition, ran an illustrative $36–$48/SF of suite. $40.54 sits in the band. A $22/SF total would mean missing trades; $70/SF would mean you accidentally loaded a turnkey TI against this thin package.
  • Bid form. If the invite asked for unit prices on gypsum and EMT, export those lines as client-facing unit prices (direct plus the stated OH/fee method). Do not send the internal wage rows.
  • Alternates. After-hours occupied, Level 5 in the conference room, or owner-supplied vs contractor-supplied fixtures — each is a quantity and a rate, not a round-number "add $8,000."
  • Validity, exclusions, and RFI status. Unanswered RFI-01 must appear as exclusion, allowance, or contingency. It cannot appear as hope.
  • Double-load check. Direct rates in the library, OH and fee on the proposal, once. See the FAQ if the shop is still mixing methods.

If a junior estimator cannot explain why EMT is $19,166 without calling the person who built the rate, the includes are still in someone's head. Fix that before send.

7. Track outcomes and refine

After bid day, record win, loss, or no-decision, with whatever competitor intel you actually have. Feed that back into rates and markup. Pricing is a loop. The shops that improve treat every proposal as data, not as a PDF that dies in a folder.

On the 4,200 SF suite, suppose the job is lost. "Lost on price" is not a finding. Split the outcome:

  • HVAC sub quote was $6,000 above the number that won. That is a vendor problem, not a gypsum-rate problem. Do not "update all rates 3%."
  • EMT at $10.36/LF was in family with the winner's published unit prices. Leave it. Version it when stick or wages move, not because this bid lost.
  • You included spec hardware; the competitor priced the door schedule. That is an RFI-02 failure if you never asked, or a scope win if you did and the owner later pays the difference on a change order they should have caught at bid.

Log the rate versions you used, not only the total. The test is the same one the library article uses: which proposals used the $2.54 Type X rate, and which used the next version after a wage bump? If that is a scavenger hunt through email, you do not have a pricing system. You have files.

Unit rate estimating software is the place that loop can live: library, proposal, response, change order, and history, without rebuilding the EMT math for every invite. Takeoff stays where it is.

Unit Rate AI maintains a private unit-rate library and turns it into client-ready proposals. Keep labor, material, and markup in one place, apply overhead and fee the way your shop recovers cost, and send a branded link. See pricing if you want to run this sequence on the next TI.

Apply this in UnitRate.ai

Unit rate library, construction proposal software, and win-rate analytics — start free and upgrade when you need unlimited proposals.