---
name: "construction_quantity_takeoff"
description: "Quantity takeoff for construction jobs: reading a drawing set and a model export line by line, measuring counts, lengths, areas, and volumes into a bill of quantities, applying waste and lap factors as separate visible steps, and running a second pass check count on the big ticket items before the bid goes out. Tool neutral, covers drawing only and model based takeoff. Use when someone needs a takeoff, a material takeoff, a bill of quantities, a BOQ, quantity surveying for a bid, or a check on quantities extracted from a BIM model or a CSV model export."
---

# Construction Quantity Takeoff

## Purpose

A quantity takeoff is the measured list behind every bid, order and budget. Get it wrong and every price built on it is wrong by the same amount, in the same direction, with no later step able to fix it.

This skill produces a bill of quantities a second person can check: every line measured net in place, every lap and waste allowance shown as its own step, every line tied to the drawing, schedule or model view it came from, and the big lines measured twice by different routes before the bid goes out.

It is tool neutral. It works with paper drawings, PDF sets, a spreadsheet, or a model export from any BIM tool. It does not require Tekla, Revit, or any other named product, and it treats a model export as a claim to be verified, never as the answer.

Use the files that ship with this skill:

- `references/formulas-and-factors.md`: units, formulas, rebar weights, earthwork conversions, and how to derive a waste allowance honestly
- `references/boq-worksheet.md`: the bill format, columns, cover note and summary rules
- `references/verification-count.md`: the second pass method, what counts as a different route, tolerances and sign off
- `examples/worked-takeoff.md`: one small slab and footing package measured end to end, with every number reproducible
- `examples/example-boq.csv`: that package as a finished bill, passing the checker
- `templates/boq-template.csv`: the blank bill to start from
- `bin/takeoff_calc.py`: calculator for concrete, footings, columns, rebar grids, earthwork, fill, board feet, sheet goods and net areas
- `bin/verify_boq.py`: checker that flags missing sources, gross math errors, duplicates, and big ticket lines with no check count

## Workflow

### 1. Set up the job before measuring anything

Collect the full set: drawings with revision dates, specifications, schedules, addenda, the geotechnical report where earthwork is in scope, and the model export where one exists. A takeoff started from a partial set is a partial takeoff, and the missing sheets are where the missed money usually sits.

Decide and write down, on the worksheet cover note:

- The classification for the bill: MasterFormat divisions for a trade bid bill, or UniFormat elements for an early elemental bill. One system per bill
- The measurement rules the contract calls for, for example RICS NRM2 on a bill prepared for tender under that standard
- The unit for each kind of work, matched to how it will be priced and ordered
- Which parts come from drawings, which from schedules, and which from the model

### 2. Run the sheet completion check first

List every drawing and every schedule, and mark each one measured, checked with nothing to measure, or not received. Read the specification table of contents against the bill divisions. A section with no bill line is measured inside another line, priced by others, or missed. Write which one, per section. Full method in `references/verification-count.md`.

Do this before measuring, not after. It takes minutes at the start and finds the class of error that arithmetic checks never find: a sheet nobody opened.

### 3. Measure net in place, line by line

Work in a fixed order, division by division or element by element, and finish one area before starting the next. For each line record the description, the unit, the net quantity, and the source reference in the same pass. A quantity written down without its source is a quantity that will have to be measured again at check time.

Measure by kind:

- Counts: discrete items, doors, windows, fixtures, piles, equipment. Count from plans, then hold the count against the schedule for the same items
- Lengths: pipe, conduit, footings, curb, trim. Measure run by run, and add vertical drops, risers and connections that a plan view hides
- Areas: gross area first, then deduct openings one by one, each listed. Sloped surfaces measure on the slope
- Volumes: length by width by depth, with thickness converted before multiplying. Concrete in cubic yards, earthwork labelled bank, loose or compacted on every line
- Weights: length by weight per unit length for rebar and steel, using the weights in the formulas reference

Use `bin/takeoff_calc.py` for the arithmetic on concrete, footings, columns, rebar grids, earthwork, fill, board feet, sheet goods and areas. The calculator prints net, additions and gross separately, which is the shape the worksheet needs.

### 4. Handle the model export as a claim, not a source

Where quantities come from a model or a model export CSV:

1. Audit before extracting: are elements modelled to the level the takeoff needs, are there duplicates, are materials and classifications assigned, are levels and zones defined
2. Map each element type to a bill division or element, and write the mapping down. An unmapped type is a silent omission
3. Extract counts, lengths, areas, volumes and weights per the mapping
4. List what the model does not contain and measure it from drawings or carry it as a named allowance. Models routinely omit temporary works, scaffolding, excavation support, laps, waste, and small fittings, and some fittings carry no length at all
5. Check net against gross quantities where the export offers both, and check openings handling on walls and slabs. A model that deducts an opening in one view and keeps it in another double counts or under counts by the size of the opening

Model quantities then enter the same worksheet, with the model view and filter as the source reference, and go through the same check count as drawing quantities.

### 5. Add laps, then waste, as visible steps

Never bake allowances into a net quantity. In order:

1. Net in place quantity, as measured
2. Lap additions, computed from geometry: splice laps on rebar and long runs, seam laps on sheet goods and membrane. Lap length comes from the drawings or the engineer where they state one. Where they are silent, state the approximation used and label it approximated
3. Waste percentage for cutting, breakage, spillage or over excavation, with its source written next to it: company history, a supplier note, or a named guide range from the formulas reference

Gross = (net + laps) adjusted by the waste percentage, in the form the worksheet records. Keep the three numbers separate so a reviewer can strip the allowances off and get back to the measured work.

Earthwork is its own case. Swell and shrinkage are not waste. Convert bank to loose for haul, and compacted back to bank for fill supply, using the factors in the geotechnical report or the contract table. Name the factor and its source on the line.

### 6. Convert to order quantities last

Round up to the supplier increment at the order step only: truck increments for ready mix, whole rolls and sheets, whole stock bars, whole bundles. Record the order quantity as its own column. Never round a measured quantity, and never let an order quantity flow back into the bill as if it were a measurement.

### 7. Run the verification count on the big ticket items

Run `bin/verify_boq.py` on the finished worksheet. It fails the bill when a line has no source, when gross math does not match net and waste, when a description repeats inside a division, or when a big ticket line has no check quantity.

Big ticket means 25 percent or more of the total for its division and unit group. Each flagged line gets measured again by a different route: a schedule against a plan count, a coverage check against a volume, a hand measure of a model element from the 2D drawings, a second earthwork method. Tolerances and reconciliation rules are in `references/verification-count.md`. The short version: counts must agree exactly, measured quantities must agree within 2 percent or be reconciled by finding the cause, and an unreconciled difference is carried at the larger quantity and named on the cover note.

### 8. Close the bill

Finish with the summary by division and unit, the big ticket list, every assumed factor, the open questions tied to item numbers, and the provisional allowances with what would close each one. Add the sign off block: measured by and date, checked by and date, and any open discrepancies carried into the bid.

## Output Contract

Every takeoff delivered with this skill includes:

- The bill of quantities as a CSV or spreadsheet in the worksheet format, one row per item, with division, description, unit, net quantity, waste percentage, gross quantity, source reference, and a check quantity on every big ticket line
- A cover note stating the drawing list and revisions measured, the classification and measurement rules used, what the model did not contain, every assumed factor with its source, and the exclusions
- The verification result: the checker output, the big ticket items and how each was checked, and any unresolved difference with the quantity carried for it
- Order quantities, clearly separated from measured quantities, where the job asked for them

Quantities only. This skill does not price work. Rates, labor, equipment and markup belong to the estimate that consumes the bill, and mixing them into the takeoff hides quantity errors behind price noise.

## Operating Rules

1. Net in place first, always. Waste, laps and rounding are separate, visible steps. A single blended number cannot be checked and does not ship.
2. Every line carries a source reference. No source, no line.
3. Every factual factor comes from a document on the job or a named published source. Lap lengths from the drawings or the engineer, swell and shrinkage from the geotechnical report or the contract table, rebar weights from the standard bar table. Where a guide range is used as a starting point, the worksheet says so.
4. No invented waste percentages. For materials with no published universal figure, derive the allowance from the cutting or lap layout and record the derivation, or carry the net quantity with the allowance marked provisional.
5. A model export is a claim. Audit it, map it, list what it omits, and check its big elements against the drawings before any of its numbers enter the bill.
6. Counts agree exactly or the difference gets found. Measured quantities agree within 2 percent or get reconciled by cause. Averaging two disagreeing counts is forbidden.
7. Earthwork lines always say bank, loose or compacted. An unlabeled cubic yard is an error, even when the number is right.
8. One classification system per bill. Mixing MasterFormat and UniFormat in one bill without a cross reference column double counts work.
9. Style: plain and direct language in the bill, the cover note and every summary. No em dashes. Descriptions a stranger could price.
