Millwork looks straightforward on a bid. It's not. Every millwork package carries a set of gaps that repeat job after job: hardware allowances that don't reflect the actual spec, finish carpentry work that two subs think they're not doing, and installation responsibilities written so vaguely that someone eats the cost at the end.
On luxury ICI and high-end commercial work, these gaps are getting larger. Owners are specifying better hardware. Millwork packages are more complex. And subs are faster to clarify what they're not including. As one Estimating Manager at a Canadian ICI GC put it: "We have less subs who just kind of a gentleman's agreement… they've become more quick to clarify that we're not including that one piece of scope."
This post breaks down where millwork scope gaps actually live, what drives them, and how to close them before bid day.
Millwork sits at the intersection of three separate trades: the millwork fabricator, the finish carpentry sub, and sometimes the hardware supplier. Each has a defined scope. The problem is that the GC's bid documents rarely assign every task clearly. What's left unassigned gets disputed.
According to the Scope Gap Playbook — built from interviews with 200+ GCs — the patterns that generate disputes in specialty trades like millwork follow a consistent profile: vague incorporation language, assumed responsibility, and allowances that don't match the spec.
A $200K wood-flooring scope gap on a luxury condo project is a real example from GC interviews. Finish-grade flooring, installation, and finishing were assumed to be covered by three different subs — none of whom included it fully. The GC absorbed the gap. That's the millwork problem in miniature, applied to a different finish trade.
Hardware allowances are one of the most consistently mishandled line items in a millwork package. The allowance gets set early — often at design development — and never gets updated to reflect the actual hardware schedule.
By the time you're at buyout, three things have usually happened:
The result is a change order conversation that neither side wants — and that the GC often loses, because the contract language supports the sub's position.
Hardware specified as an allowance means the owner can change the selection without a scope change. The GC is responsible for any cost above the allowance. Hardware specified as a lump sum is a fixed scope item — upgrades generate change orders.
Most millwork subs know this distinction. Many GC estimators still write hardware as a lump sum when the spec says allowance, or vice versa. That mismatch shows up at turnover.
The fix is not complicated. It requires three things before buyout:
This is exactly the kind of specific document reference habit described in the Scope Gap Playbook's chapter on subcontract language. Vague incorporation — "as per plans and specs" — is the #1 cited anti-pattern in GC scope disputes. Hardware allowances written without a Division 08 reference are a textbook example.
Finish carpentry and millwork fabrication are separate trades. But on most projects, the line between them is blurry enough that both subs leave items uncovered.
The most common overlap zones:
The hollow metal door frame issue shows up consistently on commercial interiors projects. The millwork sub builds the cabinet or millwork surround. The finish carpentry sub installs trim. Neither includes the HM frame. The GC writes a PO to a door-and-frame supplier who doesn't have installation in their scope either. The frame sits in staging.
Wall blocking is specified in the architectural drawings for a reason. Cabinet loads, wall-mounted millwork, and heavy countertops all need backing. But blocking requires coordination across at least two trades: the framing sub (who installs it before drywall) and the millwork sub (who specifies where it needs to go).
When the millwork submittal isn't approved before framing is complete, the blocking coordination never happens. Either the blocking gets installed in the wrong locations or it gets skipped entirely. The millwork sub then arrives on site to an unblocked wall and generates an RFI. If the project is already drywalled, you're cutting and patching.
The Scope Agent flags this kind of drawing-to-spec conflict when it reads the full project set — architectural drawings, millwork schedules, and Division 06 specs together. It identifies where blocking callouts exist in the drawings but no corresponding scope assignment exists in the sub scopes.
The overlap problem is a coordination problem. It doesn't get solved by the subs — it gets solved by whoever assigns scope before buyout. That's pre-construction.
The Scope Gap Playbook frames it directly: "Pre-con is working in the scope sheet world and project management is working in the scopes of work." The Director of Pre-Construction who said that was describing exactly this kind of gap — items that look assigned in the scope sheet but haven't been explicitly handed to a trade in a subcontract.
On millwork, the fix is a scope assignment matrix before you issue subcontracts. List every contested item. Assign it explicitly. Don't assume the millwork sub and finish carpentry sub will figure it out.
Millwork fabricators often price delivery to site as a separate line item. Installation — meaning securing cabinets, setting countertops, hanging doors — is a separate cost. And "setting" specialty millwork items like reception desks or feature walls can be a third cost, often excluded entirely.
When the GC's scope of work for the millwork sub says "supply and install," the sub's inclusions may read:
That exclusion on feature millwork is the gap. On a luxury hotel lobby or a high-end condo amenity floor, the feature millwork is the expensive part. If no one owns that installation scope, the GC does — by default.
Millwork installation depends on MEP rough-in being complete in the right locations. Cabinet soffits need lighting rough-in above them. Under-cabinet lighting needs a circuit stub. Appliance locations in millwork need electrical and plumbing coordination.
When the millwork sub arrives and the MEP rough-in is in the wrong location — or not there — the sub stops. The GC gets an RFI and a potential delay claim. The MEP sub claims they roughed in per the drawings. The millwork sub claims the drawings didn't show the final cabinet layout. Both are often right.
This is a GC preconstruction coordination issue, not a field issue. The millwork submittal approval, MEP coordination drawings, and installation sequence need to be resolved before the first cabinet goes in the truck.
Millwork is fabricated to dimensions from drawings. Buildings are rarely built to drawing dimensions exactly. When the millwork arrives and the walls aren't plumb or the slab isn't level, someone absorbs the scribing, shimming, and refabrication cost.
Most millwork subcontracts address this — but many GC-issued scope of work documents don't. If the GC's scope sheet says "supply and install per drawings" without addressing field verification, the sub will argue that out-of-tolerance conditions are an extra. Have that conversation before you sign the subcontract.
Hardware allowances don't just create scope gaps on the way in — they create accounting problems on the way out. When the project closes and the owner's hardware selections exceeded the allowance, someone has to reconcile the difference. If the subcontract doesn't define who holds the allowance and how unused allowance is returned, you'll spend three weeks in a back-and-forth with the sub's project accountant.
The right language is specific: the allowance is held by the GC, purchases are made against the allowance with receipts, and any unused balance is credited back to the owner. Any overage above the allowance is a change order to the owner. That's clean.
What most subcontracts actually say is something like "hardware allowance: $X,000 per door." That number gets absorbed into the millwork sub's contract value, and when the hardware costs more, the sub comes back with a change order. The GC didn't hold the allowance. Now it's a dispute.
The Risk Review tool flags exactly this kind of contract language issue. It reads your subcontract against the spec and surfaces allowance clauses that aren't structured for clean reconciliation — before you execute the subcontract.
The Eight Habits framework from the Scope Gap Playbook applies directly to millwork. Here's what matters most for this trade:
Pull the millwork schedules, elevations, and details before you touch a template. The drawing set tells you what's actually specified. Boilerplate scope sheets tell you what was specified on a different project.
Every millwork scope item should reference a drawing number, spec section, or schedule. "Millwork per architectural drawings" is not a scope of work. "Cabinet work per A-Series elevations, Division 06 35 00, and hardware schedule H-01" is.
State in both the framing scope and the millwork scope who is responsible for blocking. Don't leave it implied. If the millwork sub is responsible for identifying blocking locations, say so — and set a deadline tied to the framing schedule.
Is the allowance held by the GC or absorbed into the sub's contract? What happens to unused balance? What's the change order process for overages? Answer all three in the subcontract before you execute it.
The pre-issue scope review is one of the Eight Habits for a reason. Before the millwork scope goes out, have a second set of eyes check for gaps against the drawings and spec. Scope Agent does this in under 60 minutes — reading the full drawing set, millwork schedules, and Division 06 spec simultaneously, and flagging items that appear in the drawings but are unassigned in the scope.
Millwork disputes frequently involve "readily inferable" language. The GC's contract with the owner includes a clause requiring the GC to perform all work reasonably inferable from the documents — even if not explicitly shown. That clause gets pushed down to the millwork sub in turn.
On a luxury project, what's "readily inferable" for millwork can be a very expensive question. A $300K lead-lined glass omission in a hospital imaging suite — documented in GC interviews — was absorbed by the GC under exactly this language. The same logic applies to millwork: feature items that are clearly part of the design intent but not explicitly dimensioned or specified in the Division 06 spec become the GC's problem when they're not assigned to anyone.
The answer is to close the inference gap before bid day. Identify every millwork item visible in the architectural renderings, elevations, and interior design documents. If it's not in the spec, get a clarification from the design team before bids are due. If you can't get a clarification, write an explicit exclusion in your bid and your subcontract.
For more on how GCs are structuring scope packages to close these gaps, see the scope of work template and the Scope Gap Playbook.
Millwork disputes don't always generate six-figure change orders in isolation. They generate friction: RFIs, delay claims, back-charges, and owner complaints about fit and finish. On a luxury project, a finish carpentry dispute that delays final walkthrough can cost more in liquidated damages and retention holdback than the original scope gap.
The 2024 Arcadis Global Construction Disputes Report put the average North America construction dispute value at $60.1M. Millwork disputes don't get there alone. But they contribute to a dispute environment where "errors and omissions in contract documents" repeatedly ranks as the leading cause of disputes in North America. Vague hardware allowances and unassigned finish carpentry scope are errors and omissions — they just don't get categorized that way until someone files a claim.
Closing these gaps before bid day is not extra work. It's the work. And it's the work that general contractors with the best margins do consistently — not occasionally.
If your team is managing multiple millwork-heavy pursuits and wants a faster way to catch these gaps before buyout, see how Scope Agent works on a real project set.
Hardware allowances that don't reflect the actual hardware schedule, wall blocking not assigned to any trade, hollow metal door frame installation left uncovered, and feature millwork installation excluded by the fabricator. These four items repeat on nearly every millwork-heavy commercial project.
It depends on what the subcontracts say — which is the problem. Framing subs typically install blocking but need the millwork submittal to know locations. The millwork sub can't submit until they have a contract. If the sequence and responsibility aren't written into both scopes before work starts, blocking gets missed or installed in the wrong location.
The allowance should be held by the GC, not absorbed into the sub's contract value. Purchases are made against the allowance with receipts submitted to the GC. Unused balance is credited to the owner. Any overage above the allowance is a formal change order to the owner. Document this in the subcontract before execution.
Less than you think. Many millwork fabricators define "install" as standard cabinet installation only — not feature millwork setting, hardware installation, or site-condition remediation. Always ask the sub to list their exclusions explicitly before you finalize the scope. "Supply and install per drawings" is not specific enough to hold up when something is missing.
Start with the drawings — elevations, millwork schedules, and interior design documents — before touching any template. Assign every contested item (blocking, hardware installation, hollow metal frames) explicitly in both the millwork and finish carpentry scopes. Use a pre-issue review to check the scope against the full drawing set before it goes out. Scope Agent automates that cross-check in under 60 minutes.
Readily inferable clauses require GCs — and often subs — to perform work that's clearly part of the design intent, even if not explicitly specified. On luxury millwork packages, this can mean expensive feature items that are visible in renderings but missing from the spec become the GC's responsibility. Identify these items before bid day and get design-team clarifications or write explicit exclusions.
Yes — if the tool reads the full project set. Millwork gaps often appear between the architectural drawings and the Division 06 spec, or between the millwork schedule and the hardware schedule. A tool that reads only the spec misses drawing-level callouts. Scope Agent ingests drawings, specs, and schedules together and flags conflicts and unassigned items across all three sources, with citations to the exact document and section.
Scope Agent reads your drawings, millwork schedules, and Division 06 specs together and flags unassigned items in under 60 minutes.
See Scope AgentMore Articles