Most job cost reports lie by accident, because the team built a cost code list and called it a WBS. A WBS is the scope you will hand over, a CBS is where dollars land. Keep them separate, then link them on purpose, and you can see percent complete, committed cost, and cost-to-complete in the same weekly rhythm. You’ll leave with a simple 4-level setup and a mapping method where one WBS work package can drive multiple CBS codes and billing lines without breaking your reporting.
In this article
WBS, what it is
A Work Breakdown Structure (WBS) is the scope tree for a job, broken into deliverables you can hand over. It is not a cost breakdown, and it is not a schedule. It answers one question: what does the Owner receive?
Think of a move-out checklist for an apartment. The checklist says "kitchen cleaned, drywall patched, keys returned." It's not your credit card statement showing what you spent at Home Depot, and it's not your calendar showing what you did on Tuesday. A WBS works the same way. Every box in the tree is a thing you can point at and say "done" or "not done."
- Work Breakdown Structure (WBS)
- A deliverable-based hierarchy that breaks total project scope into smaller and smaller pieces, organized by what you will hand over to the Owner.
- Deliverable
- A finished result the Owner can inspect, use, or sign off, like "slab on grade poured," "storefront installed and weathertight," or "RTU set, started, and turning over."
- Level
- A tier in the WBS hierarchy. Level 1 is the whole project. Each level below gets more specific until you reach control-ready chunks.
- Work package
- The lowest WBS level you plan and control. This is where you assign a responsible party, estimate cost and duration, and measure percent complete without a debate.
Worked example: 3,200 sq ft dental clinic fit-out, $680k
Start at the top and ask "what does the Owner get?" three times, going one level deeper each round.
Level 1 is always the project itself: Dental Clinic Fit-Out.
Level 2 lists the major deliverables the Owner will inspect at Substantial Completion. For this job, five make sense:
- Demolition & Site Prep
- Mechanical / Plumbing
- Electrical & Low Voltage
- Interior Build-Out
- Finishes & Closeout
Level 3 breaks each Level 2 deliverable into work packages, each small enough to assign to one sub and measure weekly. Here is the full tree for two of those deliverables:
| Level 2 Deliverable | Level 3 Work Package | Responsible Sub | Est. Cost |
|---|---|---|---|
| Interior Build-Out | Metal stud framing, 14 walls (420 LF) | Drywall sub | $38k |
| Drywall hang & finish, Level 4 | Drywall sub | $27k | |
| Millwork & cabinetry install, 6 operatories | Millwork sub | $62k | |
| Electrical & Low Voltage | Panel upgrade & branch circuits, 200A | Electrical sub | $41k |
| Dental chair rough-in, 6 locations | Electrical sub | $18k | |
| Data/AV cabling & terminations | Low-voltage sub | $14k |
Notice every work package is something a PM can walk the floor and confirm: "are those 6 chair rough-ins energized and tested, yes or no?" If the answer requires a percentage guess, the package is too big. Split it.
The three-question test for any work package
- Can one crew or sub own it completely? If two trades share a package, you'll argue over percent complete at every pay app.
- Can you measure it in a single site visit? "Drywall hang, Level 4 finish, all 14 walls" on a 3,200 sq ft job passes. On a 40,000 sq ft job, it doesn't. Break it by zone or floor.
- Does it map to a line on your Schedule of Values? If you can't bill against it, you'll track scope in one system and money in another. That gap is where margin disappears.
Bad WBS structure shows up as hidden scope leakage. A $2.4M, 16-week retail shell that drifts just 2% off plan burns $48k in margin, and you usually don't see it until pay apps and closeout start arguing about what was "included."
WBS vs CBS, fast
WBS is how you break down what you're building. CBS is how you catch where every dollar lands. You keep them separate by linking them, not mixing them.
Think of cooking dinner. The recipe is the WBS. The grocery receipt is the CBS. You can finish "install grid ceiling in Suite 210", but you can't finish "delivery fee" or "sales tax".
- WBS (Work Breakdown Structure)
- A scope tree of deliverables you can assign, schedule, and mark complete. Example: "Level 2 fit-out" → "Partitions" → "Frame and board Suite 210".
- CBS (Cost Breakdown Structure)
- Your cost code structure, built to sort spending into consistent buckets by trade and cost type (labor, material, equipment, subcontract, overhead) so job cost reports roll up the same way on every project.
- Cost code
- A single CBS line where costs post. Many contractors base trade codes on CSI MasterFormat divisions, then add a cost type suffix: concrete labor vs concrete material.
- Mapping
- The link between a WBS work package and one or more CBS cost codes. Progress sits in the WBS, dollars stay organized in the CBS.
One WBS activity can drive costs to multiple CBS codes, and that's the whole point. "Pour slab on grade, Building A" (WBS) will hit concrete labor, concrete material, concrete pump, rebar subcontract, and layout labor (CBS). If you force those CBS buckets into the WBS, you lose clean progress tracking and clean cost tracking at the same time.
Mixing WBS and CBS blows up reporting fastest on indirects. General liability, builder's risk, permits, payroll taxes, site office rental, and dumpsters support the job but don't have measurable physical completion. They belong in CBS overhead codes. Posting them into "Framing" or "Drywall" makes the work look over budget when the trade is fine.
Classify these 10 items: WBS or CBS?
Run each item through the test above. Write your answer, then check against the key below.
- Frame and board partitions, Suite 310
- Drywall material
- Install VAV boxes, Level 4 mechanical room
- Builder's risk insurance
- Electrical labor
- Rough-in plumbing, Building B restrooms
- Dumpster rental
- Set structural steel, Bay 3
- Crane mobilization
- Commission fire alarm system, Building A
Answer key (click to reveal)
| # | Item | Classification | Why |
|---|---|---|---|
| 1 | Frame and board partitions, Suite 310 | WBS | Location-specific deliverable. You can walk the Owner to Suite 310 and show finished walls. |
| 2 | Drywall material | CBS | Cost type bucket. It tells you what you spent on, not what you built. |
| 3 | Install VAV boxes, Level 4 mechanical room | WBS | A specific scope package tied to a location and a trade. You can inspect and mark it complete. |
| 4 | Builder's risk insurance | CBS | Project-wide indirect cost. No physical deliverable to hand over. |
| 5 | Electrical labor | CBS | A cost type within a trade division. It tracks dollars, not completion of a deliverable. |
| 6 | Rough-in plumbing, Building B restrooms | WBS | Defined scope at a defined location. Inspectable, schedulable, completable. |
| 7 | Dumpster rental | CBS | Jobsite overhead. It supports the project but produces nothing you can hand over. |
| 8 | Set structural steel, Bay 3 | WBS | Physical deliverable at a named location. The ironworkers finish it, the inspector signs off. |
| 9 | Crane mobilization | CBS | Equipment cost that serves multiple WBS activities. No standalone deliverable. |
| 10 | Commission fire alarm system, Building A | WBS | A defined milestone deliverable. You test it, document it, and close it out. |
Scoring: 9-10 correct, you've got it. 7-8, revisit the indirects (items 4, 7, 9), those trip up most teams. Below 7, re-read the glossary above and run the "walk the Owner to it" test again on each item you missed.
On a $2.4M, 20-week tenant fit-out, misposting $120k of insurance, permits, and jobsite overhead into interior build-out work packages can create a phantom "10% overrun" by week 6, even when labor productivity is on plan. The PM then pressures subs, delays approvals, and reworks the schedule, burning about two weeks of momentum fixing a coding problem, not a field problem. Getting the WBS-to-CBS mapping right at project setup prevents that entirely.
US cost flow basics
Every dollar on a US construction project follows the same path: bid, budget, commitments, actuals, progress measurement, pay app, retainage, cash receipt. Miss a step and money leaks. The trick is knowing exactly where WBS and CBS plug into that chain.
The eight-step money flow, start to finish
Here is the path a dollar takes on a $6.2M school addition GC'd under an AIA A101 contract, from bid day to bank deposit.
- Bid. You price the job at $6.2M. Your estimate is built from quantity takeoffs, sub quotes, material pricing, labor production rates, and your markup. At this stage the numbers live in an estimating format, not yet organized for job cost tracking.
- Budget. You win the job and convert the estimate into a job cost budget. Every budget line gets a CBS code. Example: CBS 03-300-L (concrete placing labor) gets a budget of $184,000. CBS 03-300-M (concrete material) gets $227,000. The full budget equals the contract value minus your fee, plus allocated indirect costs.
- Commitments. You buy out the job. You execute a $411,000 subcontract for structural concrete and issue a $38,000 PO for rebar. Each commitment posts against a CBS code. Now CBS 03-300-S (concrete subcontract) shows $411,000 committed, $0 actual. Your total committed cost across all codes tells you the gap between buyout and budget, your buy-out gain or loss.
- Actuals. Invoices arrive, timesheets post, equipment charges hit. The concrete sub submits a $97,000 application for their first month. Once approved, that $97,000 moves from committed-only to actual cost under CBS 03-300-S.
- Progress measurement. Your PM and superintendent assess percent complete against the WBS. WBS element "Slab-on-grade, Building A" is 40% complete. That single WBS element touches CBS codes 03-300-L, 03-300-M, 03-300-S, and 03-300-E (equipment/pump). Forty percent earned on one deliverable explains movement across four cost codes at once.
- Pay app. You prepare your AIA G702/G703. The SOV line "Cast-in-place concrete" carries a scheduled value of $620,000. You bill 40% of it: $248,000. That SOV line was built from three WBS elements (slab-on-grade, grade beams, foundation walls), so the 40% reflects a weighted roll-up of their individual percent-complete figures.
- Retainage. The owner withholds 10%. Of your $248,000 billed, $24,800 stays in retainage. You receive a payment certificate for $223,200. That retainage sits on your balance sheet as an asset you can't touch until Substantial Completion and closeout, sometimes 6 to 14 months later.
- Cash receipt. The owner pays within the contract's payment terms, typically 30 days from pay app submission under AIA A201. Your $223,200 lands in the bank roughly 45 days after the work was done. Meanwhile, you paid your concrete sub 7 days after their invoice. That gap is your cash float risk.
How WBS maps to CBS maps to SOV: a concrete example
| WBS element | CBS codes it touches | SOV line it bills through |
|---|---|---|
| Slab-on-grade, Bldg A | 03-300-L ($184k labor), 03-300-M ($227k material), 03-300-S ($411k sub), 03-300-E ($18k pump) | Line 6: Cast-in-place concrete, $620,000 |
| Grade beams | 03-300-L, 03-300-M, 03-300-S | |
| Foundation walls | 03-300-L, 03-300-M, 03-300-S |
WBS tells you what you built. CBS tells you what it cost. SOV tells you what you billed. Three views of the same dollar. Progress lives on the WBS side. Cost lives on the CBS side. Billing lives on the SOV side. The mapping between them is what lets you answer, in the same meeting, "are we earning enough to cover what we're spending?"
- WBS (Work Breakdown Structure)
- Your deliverable breakdown of the work, organized the way the job gets built. "Concrete" then "Slab-on-grade, Bldg A."
- CBS (Cost Breakdown Structure)
- Your cost code structure where every dollar posts, typically by trade and cost type. Example: 03-300-L = concrete placing labor.
- Schedule of Values (SOV)
- The owner-facing billing line list used on AIA G702/G703 pay apps. It must total the contract value.
- Committed cost
- Money you've legally agreed to spend, like executed subcontracts and issued purchase orders, before invoices hit.
Build a 4-level WBS
A GC has a 10,000 sq ft single-story retail shell in suburban Texas. The stipulated-sum contract is $1,847,600 under AIA A101, with an 18-week schedule to Substantial Completion. The owner wants a warm shell with MEP rough-in complete, ready for a tenant fit-out.
Build the 4 levels, from “season” to “drills”
Level 1 is the whole job. Level 2 is major deliverables you can hand to a superintendent. Level 3 is systems you can schedule and inspect. Level 4 is the work package a foreman can own, measure, and sign off.
| WBS code | Level | Name | How you measure it on site |
|---|---|---|---|
| 1.0 | 1 | Retail shell, 10,000 sq ft | Substantial Completion milestone |
| 1.1 | 2 | Sitework | Area and inspections passed |
| 1.1.1 | 3 | Earthwork | Pad grade and compaction tests |
| 1.1.1.1 | 4 | Strip, grade, and compact building pad | Compaction report and as-built grades |
| 1.1.2 | 3 | Utilities | Pressure tests and backfill complete |
| 1.1.2.1 | 4 | Install underground storm and sanitary | Test reports and trench backfill signed off |
| 1.2 | 2 | Foundations and slab | Pour sequence complete |
| 1.2.1 | 3 | Footings | LF poured, inspections passed |
| 1.2.1.1 | 4 | Excavate and pour strip footings | Concrete tickets and inspection card |
| 1.2.2 | 3 | Slab on grade | CY placed and test breaks logged |
| 1.2.2.1 | 4 | Form, reinforce, and place 6-inch slab | Concrete tickets, cylinders, and pour log |
| 1.3 | 2 | Shell (structure and envelope) | Dried-in milestone |
| 1.3.1 | 3 | Steel frame | Tons erected, bolt/torque log |
| 1.3.1.1 | 4 | Erect structural steel columns and joists | Erection release and bolt log |
| 1.3.2 | 3 | Envelope | Weather-tight inspections |
| 1.3.2.1 | 4 | Install wall panels and storefront glazing | Water test and punch walk |
| 1.4 | 2 | MEP rough-in | Rough inspections passed |
| 1.4.1 | 3 | Electrical | Rough-in inspection and energization plan |
| 1.4.1.1 | 4 | Run conduit, pull wire, and set panels | Inspection sign-off and panel schedules |
| 1.4.2 | 3 | Mechanical and plumbing | Startup checklist ready |
| 1.4.2.1 | 4 | Set RTUs and install primary ductwork | Rigging plan complete and duct inspection |
| 1.5 | 2 | Finishes and exterior | Area-based completion |
| 1.5.1 | 3 | Roofing | Dried-in and warranty submittals |
| 1.5.1.1 | 4 | Install TPO membrane and flashings | Manufacturer inspection and photo log |
| 1.5.2 | 3 | Paving | Square yards placed and striping complete |
| 1.5.2.1 | 4 | Pave parking and stripe accessible stalls | As-built layout and inspection sign-off |
| 1.6 | 2 | Closeout | Turnover accepted |
| 1.6.1 | 3 | Punch List | Open items count trending to zero |
| 1.6.1.1 | 4 | Walk, document, and close Punch List items | 0 open life-safety items |
| 1.6.2 | 3 | Turnover | Owner acceptance of O&M package |
| 1.6.2.1 | 4 | Submit O&M manuals, warranties, and as-builts | Turnover checklist signed |
Walkthrough, put real numbers against one Level 4 work package
Work package 1.2.2.1 is “Form, reinforce, and place 6-inch slab”. A 10,000 sq ft slab at 6 inches is about 186 CY of concrete. Rebar is roughly 60,000 lb, about 30 short tons.
- Define the measurable quantities. Concrete is 186 CY. Poly is 10,500 sq ft (includes 5% waste). Edge forms are 400 LF. Rebar is 60,000 lb.
- Price each input like a foreman will buy it. Poly and forms come to $4,260. Rebar supply is $38,460, tying labor is $7,580. Concrete placement is 186 CY at $269.90/CY, which is $50,201. Cure, saw-cuts, and protection is $3,145.
- Total the work package budget. $4,260 + $38,460 + $7,580 + $50,201 + $3,145 = $103,646. That becomes your planned value for 1.2.2.1 on your Schedule of Values (SOV).
- Split the cost into CBS codes without splitting the WBS. The same 1.2.2.1 progress update can drive multiple cost buckets: concrete material $41,870, pump and placing equipment $8,331, rebar material $38,460, rebar labor $7,580, formwork and sundries $7,405.
- Make percent complete earned, not guessed. If 124 CY is placed and finished, you earn 124/186 = 66.7% of $103,646, which is $69,097. If the cost report shows $78,540 spent to date on those CBS codes, you’ve burned $9,443 more than you earned, and you see it mid-pour, not at the end of the month.
Takeaway
A 4-level WBS stays clean because it tracks scope, not accounting. The non-obvious win is one-to-many control: one work package like “place the slab” can earn $69,097 of value while costs hit five different CBS codes, so progress and cost stay tied together even when invoices and timecards come in messy.
CBS code starter kit
A CBS code is the label you put on every dollar so budget, committed cost, and actual cost land in the same buckets every time.
Think of a library call number. The book title is your WBS activity, like “Pour slab on grade.” The call number is your CBS code, so every library shelves and totals the same book the same way.
- CBS (Cost Breakdown Structure)
- Your company’s standard list of cost buckets used for budget, commitments (POs and subcontracts), and actual job cost.
- WBS (Work Breakdown Structure)
- Your scope breakdown, used by operations to plan and track what gets built, like “Level 2 drywall” or “Main electrical rough-in.”
- Cost type segment
- The part of the CBS code that tells you what kind of spend it is. A simple set is L (labor), M (material), E (equipment), S (subcontract), O (overhead).
- Trade segment (CSI MasterFormat)
- The CSI number that anchors the code to a trade category, like 03 30 00 for cast-in-place concrete.
This matters because one WBS activity drives multiple CBS codes, and that’s how you find the real leak. On a $1.2M retail shell, a “Slab on grade” WBS package might total $95k, but splitting it into 03 30 00-L ($38k), 03 30 00-M ($49k), and 03 30 00-E ($8k) tells you whether the overrun came from crew hours, ready-mix, or the pump truck.
A CBS code format your field and accounting will both stick to
Use two segments by default, then add location only if the field will code it right. More segments buys you more miscoding, which kills job cost trust.
- Segment 1, trade spine: CSI MasterFormat six-digit codes, like 03 30 00.
- Segment 2, cost type: L, M, E, S, O.
- Segment 3, location (optional): AREA1, FL02, BLDG-A.
Example format: 03 30 00-L-AREA1, cast-in-place concrete labor in Area 1.
10 sample CBS codes you can adopt as a company standard
| CBS code | What it captures |
|---|---|
| 01 50 00-O | Temporary facilities and controls overhead, trailers, toilets, temp power. |
| 02 41 00-S | Select demolition subcontract. |
| 03 20 00-M | Reinforcing steel material, rebar, chairs, tie wire. |
| 03 20 00-S | Rebar install subcontract (if bought out). |
| 03 30 00-M | Concrete material, ready-mix and admixtures. |
| 03 30 00-L | Concrete labor, placing, finishing, curing. |
| 03 30 00-E | Concrete equipment, pump truck and small plant rentals. |
| 05 12 00-S | Structural steel subcontract, fabricate and erect package. |
| 09 29 00-L | Drywall labor, hang, tape, finish. |
| 23 00 00-S | HVAC subcontract (single mechanical buyout). |
One WBS, many CBS
You’re the GC on a $2.4M single-story retail shell, 10,000 sq ft, 22-week schedule under AIA A201. Your WBS has one Level 4 deliverable, “4.3.1 Install HVAC System”, and you’re updating the Schedule of Values (SOV) in week 6. That one WBS line drives four separate CBS cost codes in job cost.
Build the one-to-many map
WBS tells you what you’re delivering. CBS tells you where the dollars land, split by cost type. The control move is tagging every cost line to both.
| WBS work package (deliverable) | CBS code | Posting document | Budget |
|---|---|---|---|
| 4.3.1 Install HVAC System | 23 30 00-M (material) | Purchase orders | $62,800 |
| 4.3.1 Install HVAC System | 23 30 00-L (labor) | Timecards | $71,200 |
| 4.3.1 Install HVAC System | 23 30 00-E (equipment) | Equipment invoices | $4,900 |
| 4.3.1 Install HVAC System | 23 30 00-S (subcontract) | Sub pay apps | $48,500 |
| WBS 4.3.1 total | Roll-up of all CBS above | $187,400 |
Walk the numbers through, step by step
- Post each cost to the WBS and the CBS. A $38,650 ductwork PO posts to WBS 4.3.1 and CBS 23 30 00-M. A $11,640 weekly timecard batch posts to WBS 4.3.1 and CBS 23 30 00-L. Same deliverable, different buckets.
- Update the forecast by CBS, not by gut feel. Ductwork supplier requotes after buyout and your material forecast moves from $62,800 to $69,700, a -$6,900 variance on 23 30 00-M.
- Keep labor honest by isolating it. Sheet metal and pipefitting labor finishes on the original plan at $71,200. That’s $0 variance on 23 30 00-L, so you stop blaming field productivity for a material problem.
- Let small wins show up. The scissor lift is needed for 2.5 weeks, not 3, so equipment lands at $4,100 against a $4,900 budget. That’s +$800 on 23 30 00-E.
- Separate a scope change from performance. The controls subcontractor submits a $5,200 Change Order for added thermostats and wiring, so 23 30 00-S moves from $48,500 to $53,700. That $5,200 is an owner-billable change discussion, not a “fix the crew” discussion.
| CBS code | Budget | Forecast final | Variance |
|---|---|---|---|
| 23 30 00-M (material) | $62,800 | $69,700 | -$6,900 |
| 23 30 00-L (labor) | $71,200 | $71,200 | $0 |
| 23 30 00-E (equipment) | $4,900 | $4,100 | +$800 |
| 23 30 00-S (subcontract) | $48,500 | $53,700 | -$5,200 |
| WBS 4.3.1 total | $187,400 | $198,700 | -$11,300 |
Takeaway
The non-obvious win is actionability. The WBS roll-up tells you “HVAC is $11,300 over”, but the one-to-many CBS split tells you which $11,300 you fight (the $5,200 Change Order) and which $11,300 you fix in procurement and estimating (the $6,900 material move). In Archdesk, this works cleanly because each PO, invoice, timecard, and sub pay app is coded to both the WBS work package and the CBS cost code, so the roll-up and the why update the same week the money hits.
Link WBS to SOV
This worksheet forces a clean link between your WBS work packages and the owner-facing Schedule of Values (SOV). You will fill the blanks, calculate retainage held, then flag two billing risks that cause pay apps to get cut or held on AIA jobs.
Rules that keep you out of billing arguments
- SOV lines must add up to the exact contract value. No rounding, no "misc." plug.
- Every SOV line must tie to at least one WBS deliverable you can see on site.
- Every SOV line needs a measurement rule that an architect can certify without a debate. Good rules name a unit (square feet, cubic yards, zones, linear feet) and a verification method (inspection report, delivery ticket, photo log).
- One WBS package can feed multiple SOV lines, but you need a stop rule that prevents overbilling partial scope.
- Don't relabel SOV lines mid-job to hide a scope shift. If scope changes, route a Change Order under AIA A201-2017.
- Retainage comes off every line you bill, typically 5% to 10%. A "fully complete" line still pays short until final payment. To calculate retainage held on any line: multiply the line value by the retainage percentage. Example: 10% retainage on a $260,000 line = $260,000 × 0.10 = $26,000. That $26,000 stays in the owner's hands until Substantial Completion and final closeout conditions are met.
How to write a measurement rule that survives an architect's red pen
A measurement rule answers three questions: (1) what unit are you counting, (2) what document proves the count, and (3) when is the line 100% complete? If your rule misses any of the three, the architect will pencil-whip your percentage complete down to whatever feels safe, usually 10-15 points below what you billed.
Take SOV-02, Sitework. The scope is strip topsoil, rough grade to subgrade elevation, and trench for utilities. A weak rule says "percent complete per PM estimate." A strong rule says: "Progress measured by completed area in square feet against the grading plan. Surveyor's cut/fill report confirms subgrade elevation. Line is 100% when final grade survey is accepted and utility trenches pass inspection." That rule gives the architect a document to check, not an opinion to argue.
SOV-06, Roofing and Waterproofing, is the same idea. The scope is membrane, flashing, and penetration sealing on roughly 10,000 sq ft of roof deck. A strong rule: "Progress measured by installed square feet of roof membrane against the roof plan. Manufacturer's warranty inspection confirms proper lap widths and flashing details. Line is 100% when the roof passes a 48-hour flood test or electronic leak detection and the warranty letter is issued."
Worksheet: Map 8 WBS work packages to 10 SOV lines (Retail shell, 10,000 sq ft, $2,400,000)
Restaurant bill test: the items add up, and everyone agrees what each line covers before anyone pays.
| SOV line | Owner billing description | Line value | WBS work package(s) | How progress will be measured (observable) | Ret. % | Retainage held |
|---|---|---|---|---|---|---|
| SOV-01 | General Conditions | $180,000 | WP-1 Mobilize and set up site logistics (temp fence, trailer, dumpsters) | Monthly pro-rata over the approved schedule, backed by daily reports and staffing plan | 5% | $180,000 × 0.05 = $9,000 |
| SOV-02 | Sitework | $220,000 | WP-2 Sitework complete (strip, rough grade, trenching) | [Fill in. Use the pattern: unit counted + verification document + 100%-complete trigger. Example answer: "Completed area in sq ft against grading plan. Surveyor's cut/fill report confirms subgrade elevation. 100% when final grade survey accepted and utility trenches pass inspection."] | 10% | $220,000 × 0.10 = $22,000 |
| SOV-03 | Concrete Foundations | $260,000 | WP-3 Foundations complete (footings, stem walls) | Inspections passed, concrete tickets match placed quantities | 10% | $260,000 × 0.10 = $26,000 |
| SOV-04 | Slab on Grade | $310,000 | WP-4 Slab on grade placed and cured (6-inch slab) | Installed cubic yards placed (186 CY target) and test breaks logged | 5% | $310,000 × 0.05 = $15,500 |
| SOV-05 | Structural Steel | $280,000 | WP-5 Building shell dried-in (steel, roof, exterior skin) | Tons erected and bolt-up complete, with inspection sign-off | 10% | $280,000 × 0.10 = $28,000 |
| SOV-06 | Roofing and Waterproofing | $190,000 | WP-5 Building shell dried-in (steel, roof, exterior skin) | [Fill in. Use the pattern: unit counted + verification document + 100%-complete trigger. Example answer: "Installed sq ft of roof membrane against roof plan. Manufacturer's warranty inspector confirms lap widths and flashing. 100% when 48-hour flood test passes and warranty letter is issued."] | 10% | $190,000 × 0.10 = $19,000 |
| SOV-07 | Exterior Walls and Openings | $260,000 | WP-5 Building shell dried-in (steel, roof, exterior skin) | Linear feet and openings installed against approved submittals | 10% | $260,000 × 0.10 = $26,000 |
| SOV-08 | MEP Rough-In | $360,000 | WP-6 MEP rough-in complete (in-wall and above-ceiling) | Zones released for close-in with rough inspections passed | 10% | $360,000 × 0.10 = $36,000 |
| SOV-09 | Interior Finishes | $250,000 | WP-7 Interior build-out complete (framing, drywall, ceilings, paint) | Area-by-area turnover, tied to room/area sign-off and punch list counts trending down | 10% | $250,000 × 0.10 = $25,000 |
| SOV-10 | Closeout and Commissioning | $90,000 | WP-8 Closeout complete (testing, O&M manuals, as-builts) | Owner training done, O&M manuals submitted, Substantial Completion achieved | 5% | $90,000 × 0.05 = $4,500 |
Total retainage held across all 10 lines: $211,000. That is 8.8% of the $2,400,000 contract value. On a 16-week schedule, that cash sits with the owner for four to six months after Substantial Completion on a typical AIA G702/G703 pay app structure. If your company is carrying $211k in retainage on one job while running three others, your working capital model needs to account for roughly $600k-$800k in retainage float across the portfolio.
Flag two billing risks hiding in your mapping
- Risk 1: front-loaded General Conditions. SOV-01 is $180,000 on a 16-week job, so the pro-rata billing is $11,250/week. If you bill $45,000 in Month 1 (four weeks), that is 25% of the line while physical progress across the other nine lines might only be 8-10%. The architect sees a gap between dollars billed and work in place, and the pay app gets cut. Fix: tie General Conditions billing strictly to the approved schedule duration. If the schedule says 16 weeks, bill 1/16th per week, no acceleration.
- Risk 2: one WBS package drives three SOV lines. WP-5 feeds SOV-05, SOV-06, and SOV-07, totaling $730,000. If steel is up (SOV-05 at 100%) but the roof is not watertight (SOV-06 at 40%), the shell is not "dried-in." Without a stop rule, project teams bill SOV-05 at 100% and push SOV-06 and SOV-07 aggressively. Then the architect's site walk shows water still getting in, and they slash all three lines in the same pay app. Fix: define explicit milestones for each of the three lines so they bill independently. Steel erection is steel erection. Roof is roof. Never let "dried-in" be the single trigger for $730,000 across three lines.
Reading the result: You're ready to submit an SOV when (1) the 10 line values total $2,400,000, (2) every line has a three-part measurement rule (unit, verification document, completion trigger), (3) you can explain how WP-5 progress splits across SOV-05/06/07 without billing dried-in early, and (4) you know your total retainage exposure is $211,000 and have planned the cash float. In Archdesk, each SOV line links directly to committed costs from subcontractor valuations and PO spend, so your cost-value reconciliation updates in real time as you process pay apps. That means the gap between billed revenue and actual cost-to-complete on lines like SOV-05/06/07 shows up the week it opens, not when the architect rejects the application.
Mapping challenge dataset
Try this: You are the GC on a 10,000 sq ft single-story retail shell. You bill the Owner using an AIA Schedule of Values (SOV). Build one mapping table that ties each WBS work package (what you build) to (1) the right SOV billing line (how you get paid) and (2) at least two CBS codes from the list below (where costs land). Split at least labor plus material where the work has both. One CBS code in the available list is wrong on purpose. Find it and fix it. Then flag which SOV lines sit outside the WBS scope entirely.
| WBS work packages (Level 4) | SOV billing lines (8) | CBS codes available (12) |
|---|---|---|
|
|
|
Use the rule: WBS is deliverables and work packages. CBS is where dollars land by trade and cost type. SOV is how you bill the Owner. Expect a one-to-many mapping from one WBS work package to multiple CBS codes, especially on self-performed work like the slab.
Keep your first four WBS levels consistent across retail shells so you can compare production and cost. Only the lower detail changes job to job.
Show the worked solution
Step 1: Set the control rule. Keep WBS Levels 1 to 4 consistent across projects. Example: L1 Project, L2 Site and structure / Envelope / MEP / Closeout, L3 Systems, L4 Work packages (the six rows here). This lets you compare "slab $/sq ft" across three stores without arguing about structure.
Step 2: Map WBS to SOV (billing). Each WBS work package maps to one SOV line in this dataset. That is normal when the Owner's SOV is broad.
- WP-1 Slab on grade → SOV-A Concrete foundations and slab, $184,000
- WP-2 Structural steel frame → SOV-B Structural steel, $210,000
- WP-3 Exterior wall framing and sheathing → SOV-C Exterior envelope, framing, $97,000
- WP-4 Roofing and waterproofing → SOV-D Roofing, $68,000
- WP-5 Electrical rough-in → SOV-E Electrical, $115,000
- WP-6 Storefront glazing → SOV-F Storefront and glazing, $86,000
Step 3: Map WBS to CBS (cost), minimum two CBS codes per WBS row. Self-performed work splits across labor, material, and equipment. Bought-out work pairs a subcontract code with the GC's own inspection, layout, or prep labor code that supports the sub's scope.
| WBS work package | SOV line | CBS codes (2+) |
|---|---|---|
| WP-1 Slab on grade | SOV-A | 03 30 00-M, 03 20 00-M, 03 30 00-L, 03 30 00-E |
| WP-2 Structural steel frame | SOV-B | 05 12 00-S, 05 12 00-L |
| WP-3 Exterior wall framing and sheathing | SOV-C | 06 10 00-M, 06 10 00-L |
| WP-4 Roofing and waterproofing | SOV-D | 07 50 00-S, 07 50 00-L |
| WP-5 Electrical rough-in | SOV-E | 16 05 00-L, 16 05 00-M |
| WP-6 Storefront glazing | SOV-F | 08 44 00-S, 08 44 00-L |
Why subcontracted work still gets two codes. Most people drop a sub's scope into one lump-sum CBS line and call it done. That hides the GC's own cost to support that sub. Steel erection inspection labor (05 12 00-L), roofing prep labor (07 50 00-L), and storefront layout labor (08 44 00-L) are real GC hours. On a $210k steel package, your superintendent might burn $6k-$8k just coordinating crane picks and inspecting connections. If that labor hides inside general conditions, your next bid underprices the steel scope by the same amount.
Step 4: Flag the lines outside WBS scope. SOV-G General conditions ($72,000) and SOV-H Final clean and punch list ($18,000) don't map to any of the six WBS work packages. They are overhead and closeout. Keep them in their own SOV billing lines and their own CBS overhead codes, but don't stuff them into a scope work package. Mixing them in destroys your unit-rate benchmarks. If you roll PM time into the slab package, your "slab $/sq ft" is inflated, and your next bid overprices the concrete and underprices the prelims.
Step 5: Find and fix the planted wrong code. 02 41 13-L Demo labor does not belong on this new-build shell. There is no demolition in the scope. Remove it from the job cost list. If any posted hours were miscoded there (common when crews re-use cost codes from a previous job), reclass them to the correct code the same week they hit. Slab prep labor, for example, belongs in 03 30 00-L.
What most people get wrong: they force a one-to-one match. The slab is one WBS work package, but it drives four CBS codes: concrete material, rebar material, placing labor, and pump rental. Blend those into one bucket and you can't explain why WP-1 is over budget until the job is already bleeding. On the other side, they give subcontracted scopes only one CBS code and lose visibility of their own support hours, which run 3%-5% of the sub's package value on a typical retail shell.
Build your starter pack
Your WBS only controls profit when each work package maps cleanly to the Schedule of Values (SOV) you bill and the CBS cost codes you book actuals to. This section gives you three things you can copy straight into your next kickoff: a starter 4-level WBS, a CBS code list, and a filled mapping table linking WBS to SOV to CBS.
Starter 4-level WBS: 14 packages
This example is a $6.8M ground-up commercial office, two stories, structural steel, slab on grade. Adjust for your scope, but keep the four levels: project, phase, discipline, and work package.
| Level 1 | Level 2 | Level 3 | Level 4 – Work Package | WBS Code |
|---|---|---|---|---|
| Office Bldg A | Sitework | Earthwork | Mass grading & cut/fill | 1.1.1.1 |
| Utilities | Underground storm & sanitary | 1.1.2.1 | ||
| Paving | Asphalt lot & curb | 1.1.3.1 | ||
| Structure | Foundations | Spread footings & grade beams | 1.2.1.1 | |
| Concrete | Slab on grade, Bldg A | 1.2.2.1 | ||
| Structural steel | Erect steel frame & deck | 1.2.3.1 | ||
| Concrete | Elevated slab, 2nd floor | 1.2.4.1 | ||
| Envelope | Ext. walls | Metal panel cladding | 1.3.1.1 | |
| Glazing | Curtain wall & storefronts | 1.3.2.1 | ||
| Roofing | TPO roof system | 1.3.3.1 | ||
| Interior | Framing | Metal stud & drywall | 1.4.1.1 | |
| Finishes | Flooring, paint, ACT ceilings | 1.4.2.1 | ||
| Specialties | Toilet accessories & signage | 1.4.3.1 | ||
| MEP | Mechanical | HVAC rough-in & trim | 1.5.1.1 |
CBS code list
Two segments: MasterFormat division (trade) plus cost type. Five cost types cover everything: L (labor), M (material), E (equipment), S (subcontract), O (overhead/general conditions).
| CBS Code | Description |
|---|---|
| 01 50 00-E | General conditions – equipment (pumps, hoists, temp power) |
| 01 50 00-O | General conditions – overhead (insurance, supervision, dumpsters) |
| 02 20 00-S | Earthwork – subcontract |
| 03 20 00-M | Rebar – material |
| 03 30 00-L | Cast-in-place concrete – labor |
| 03 30 00-M | Ready-mix concrete – material |
| 05 12 00-S | Structural steel – subcontract |
| 07 54 00-S | TPO roofing – subcontract |
| 08 44 00-S | Curtain wall – subcontract |
| 09 29 00-S | Drywall – subcontract |
| 09 65 00-M | Flooring – material |
| 09 91 00-L | Painting – labor |
| 23 00 00-S | HVAC – subcontract |
WBS-to-SOV-to-CBS mapping table
Each row links one work package to the owner-facing SOV line and every CBS code where cost lands. The slab-on-grade row maps to four CBS codes, proving the "one WBS, many CBS" pattern works.
| WBS Code | Work Package | SOV Line | SOV Value | CBS Codes (linked) |
|---|---|---|---|---|
| 1.1.1.1 | Mass grading & cut/fill | Line 2 – Sitework | $310k | 02 20 00-S |
| 1.2.1.1 | Spread footings & grade beams | Line 3 – Foundations | $420k | 03 30 00-L, 03 30 00-M, 03 20 00-M |
| 1.2.2.1 | Slab on grade, Bldg A | Line 4 – Concrete (SOG) | $385k | 03 30 00-L, 03 30 00-M, 03 20 00-M, 01 50 00-E |
| 1.2.3.1 | Erect steel frame & deck | Line 5 – Structural steel | $1,180k | 05 12 00-S |
| 1.3.1.1 | Metal panel cladding | Line 7 – Exterior walls | $540k | 07 42 00-S |
| 1.3.2.1 | Curtain wall & storefronts | Line 8 – Glazing | $620k | 08 44 00-S |
| 1.4.1.1 | Metal stud & drywall | Line 10 – Drywall | $290k | 09 29 00-S |
| 1.5.1.1 | HVAC rough-in & trim | Line 12 – Mechanical | $780k | 23 00 00-S, 01 50 00-E |
Notice that SOV lines are often coarser than WBS packages. That's fine. Two WBS packages can feed one SOV line. Just never let one WBS package split across two SOV lines, or you'll double-count earned value.
Kickoff checklist
- Confirm every WBS work package has exactly one owner (superintendent or foreman), not shared.
- Lock your overhead rule on day one: insurance, taxes, supervision, temp power, and dumpsters stay in CBS overhead codes (01 50 00-O), never buried inside scope packages where they get "earned" by accident.
- Set a weekly update rhythm: every Tuesday by 2pm, collect three numbers per work package: percent complete, committed cost (subcontracts and POs), and cost-to-date (invoices and sub pay apps).
- Route every Change Order through the structure before it hits job cost. Name the WBS package, update the SOV line, add or revise CBS codes. A $45k MEP change that skips this step pollutes your original-scope cost history permanently.
- Attach one proof document to each work package for progress discipline: daily report, inspection sign-off, delivery ticket, or punch list closeout.
What to learn next
- Cost-to-complete (ETC) forecasting, weekly ETC built from committed cost and cost-to-date shows a blown buyout early enough to fix it with scope, sequence, or procurement decisions.
- Earned Value Management (EVM) basics, once WBS percent complete is clean, you read cost and schedule performance together instead of arguing about "how far along" a trade is.
- AIA pay apps and SOV governance, the SOV drives cash and retainage timing. A messy SOV forces bad workarounds in cost coding for the rest of the job.
Clean structure beats heroics. It keeps field, PMs, and accounting talking about the same work in the same week. In Archdesk, the CVR view ties cost-to-date, committed cost, and forecast final account back to this same WBS-and-CBS mapping as POs and subcontractor pay apps land, so a $120k gap between earned value and actual cost shows up while you can still negotiate a backcharge, rebid a package, or cut scope rather than eat it at closeout.
Frequently Asked Questions
What is a Work Breakdown Structure (WBS) in construction and how is it different from a schedule?
A WBS is a scope tree that breaks a project into deliverables the owner can physically receive or inspect. It answers "what gets built," not "when it gets built" or "what it costs." A 4-level WBS on a $1.8M retail shell might have 14 work packages, each one a handoff-ready piece of work like "pour slab on grade" or "install HVAC system." The schedule sequences those packages in time, but the WBS defines them.
What is the difference between WBS and CBS on a construction project?
WBS breaks down what you're building. CBS (Cost Breakdown Structure) breaks down where every dollar lands. Think of a recipe versus a grocery receipt. You keep them separate but linked so one WBS activity like "install grid ceiling in Suite 210" can drive costs across multiple CBS codes such as labor, materials, and equipment rental.
How does one WBS activity connect to multiple CBS cost codes?
A single WBS work package like "Install HVAC System" on a $2.4M retail shell can drive four or more CBS codes: mechanical labor, ductwork materials, equipment rental, and subcontract costs. You build a mapping table that ties each WBS line to every CBS code where dollars will land. This one-to-many link is what lets you track real cost against earned scope, not just against a budget line.
How do I link my WBS to the AIA Schedule of Values for billing?
Each WBS work package maps to one SOV billing line, and your SOV lines must add up to the exact contract value with no rounding or miscellaneous plugs. On an AIA A101 contract, every SOV line needs a matching WBS deliverable the owner can verify on site. If an SOV line doesn't tie to a WBS package, your pay app is likely to get cut or held.
How many levels should a construction WBS have?
Four levels work well for most GC-led projects up to about $5M. Level 1 is the whole job. Level 2 is major deliverables like "Structure" or "Building Envelope." Level 3 is work areas or systems. Level 4 is the work package you actually assign, cost, and bill against. Going beyond four levels on a straightforward project adds admin without improving cost control.
What is the most common mistake contractors make when setting up a WBS?
Mixing scope with cost categories. If your WBS includes lines like "delivery fees" or "general conditions overhead," you've turned it into a cost breakdown and lost the ability to measure physical progress. Every WBS line should be something an owner or superintendent can walk the site and verify, like "install storefront glazing," not something that only shows up on an invoice.
How does the WBS-to-CBS mapping affect my job cost reporting?
A clean mapping lets you compare earned value on a deliverable against actual costs across all related CBS codes every week. On an 18-week retail shell, tracking cost-to-complete at the work package level catches overruns 3 to 5 weeks earlier than tracking against lump-sum budget lines. Without the mapping, your job cost report tells you what you spent but not whether the spending matches real progress.
Do I need separate WBS and CBS structures if I'm a specialty subcontractor?
Yes. Your WBS covers the deliverables in your subcontract scope, like "rough-in mechanical for zones 1 through 4." Your CBS tracks where dollars land: trade labor, fittings, sheet metal, equipment. Keeping them separate lets you split labor plus material on any work package. That split is what tells you whether a CBS code is bleeding margin or whether the whole deliverable is the problem.





