Takeoff¶
| Status | Shipped |
|---|---|
| Linear | PIN-143 ↗ PIN-144 ↗ PIN-258 ↗ PIN-295 ↗ |
| Module | Takeoff Engine ↗ |
Walk a bid PDF through the takeoff viewer — calibrate scale, mark up measurements with the right system / spec, push to Estimate with a Material Calculator that converts duct area to LBS and pipe runs to hanger counts. Provenance survives every hop: takeoff row → PDF page deep-link → Estimate scope line.
Prerequisites¶
- Role: logged in as Estimator, Chief Estimator, Owner, or Admin
- Bid state: bid in status
Estimating(or later — e.g. submitted, awarded) - Test data:
drawings/E25-1474 ME IFB.pdffrom the test-app-files Drive folder. Download to your machine before starting — you'll drag-drop it into folder 06 Takeoff. - Permissions cached? If your
accountpermissionslocalStorage is stale, takeoff RPCs may 403. Force relogin to refresh.
1. Open a bid and load a takeoff PDF¶
Bids in the left nav → click any bid.
Open the Documents tab.
Documents are organized into 10 numbered folders stacked top-to-bottom (01 Bid Documents, 02 Drawings & Revisions, …, 06 Takeoff, 07 Estimate, …). Above the folders is the RFP workflow (Approve File Structure → Select RFP Documents → Review Bid List → Send RFP) — you don't need to approve the structure to use the viewer.
Expand 06 Takeoff. Either drag a PDF into the panel, or click an existing file (use + Subfolder / Upload controls inside the folder).
Click the PDF row to open the preview pane, then click Open takeoff viewer.
2. Calibrate the page scale¶
You only need to do this once per page (and per addendum re-upload).
Click Calibrate in the toolbar.
Click the two endpoints of a known dimension on the drawing (e.g., a printed dimension line, or a column grid).
Enter the real-world distance (e.g., 20 ft).
Confirm. The Scale chip in the toolbar — at the right end of the second row — changes from Scale: not set (gray) to Scale: 20 ft = measured (yellow until verified, green after).
If a scale already exists, the viewer shows it and offers Verify instead — click two known points to spot-check that nothing has drifted. A successful Verify flips the chip to green.
3. Measure / mark up the drawing¶
The measurement cluster on the toolbar has six icon-only buttons, in this order:
| Icon | Tool | Use for |
|---|---|---|
| Select | Click an existing markup to edit, move, or delete it | |
| ruler | Linear | Straight segments — pipe runs, single-line measurements |
| curve | Polyline | Multi-segment runs that bend |
| hexagon | Area | Free-form polygon areas (irregular zones) |
| square | Rect Area | Rectangular areas |
# hash |
Count | Stamp equipment count (diffusers, VAVs, etc.) |
Hover any button to see its name. The active tool is highlighted blue.
Other useful controls in the same cluster:
- System selector (dropdown right of the tool buttons) — pick the trade/system (Supply Ductwork, CHW Piping, Equipment, Air Devices, Electrical, …). 17 options total; each system gets its own color so the drawing reads at a glance.
- Count group — only shown when the Count tool is active; lets you keep parallel tallies (e.g., 2×2 vs 4×4 diffusers).
- Undo / Redo — the curl-arrow buttons, or
Cmd+Z/Cmd+Shift+Z. Server-confirmed, so undo survives page reloads. - Delete — select a markup, then the red trash icon (in the toolbar or in the side panel on hover).
- VIEW toggle (right end of the toolbar) — recolor existing markups by System, by Trade, or by review Status.
Every markup is auto-saved to the bid and appears in the side-panel list with its measured value already converted to feet / square feet / count.
4. Review markups¶
The right-hand side panel has two tabs: Markups (N) (per-page list) and Summary (rollups).
In the Markups list, click any row to open a Selected markup detail panel that slides up at the bottom of the side panel. The detail panel is where review status lives — three buttons:
- Pending (default — fresh markup)
- Confirmed (checked off by an estimator)
- Flagged (something looks wrong, needs another pass)
The active status is highlighted. From the same detail panel you can edit the label, the system, or delete the markup.
Switch the toolbar's VIEW → Status to turn the drawing into a heat-map of what's been reviewed.
5. See takeoff items in the bid¶
Close the viewer (back arrow, top-left) → Estimate tab. Inside Estimate there are six sub-tabs: Estimate · Equipment Schedule · Takeoff · Award · Alternates · Clarifications. Open Takeoff.
The Takeoff grid shows every markup as a row with columns:
System · Description · Size · Material · Spec · Qty · Unit · Rate · Budget · LBS · Source · Status
- Source column carries a pill of the form
<filename>.pdf p.<N>. Click it — it deep-links back to that PDF page in the viewer with the markup highlighted. - Status column shows the push state — Synced / Not Pushed / Differs. (This is separate from the markup review status from §4.)
Above the grid: filter chips All · Not Pushed · Differs · Synced, search field, CSV export, and Manage Specs (N). You can also add takeoff rows manually here — useful for items that aren't on the PDF (schedule-sourced equipment, etc.).
6. Material Calculator — turn takeoff into pounds and hangers¶
For ductwork, piping, and hangers the Spec column is enabled. This is where the Material Calculator runs.
Click Manage Specs (top-right of the Takeoff sub-tab) — opens the Manage TakeoffSpec Library modal.
+ Add spec: pick a discipline in the form (Pipe, Duct, Hanger) and fill in its material properties (e.g., piping 2" Sch 40 black steel welded; or 24×12 SMACNA-20ga ductwork at 1″wg). The library is per-bid.
Copy from bid — if you've built a library on a previous bid, pull it in with one click.
Close the library. In the Spec column on a takeoff row, pick the spec you just added.
The row recomputes — what you get depends on the spec discipline:
- Duct spec → row's Unit auto-switches to LBS and computed weight appears (straight + fittings, totaled).
- Pipe spec → row stays as LF and the calculator computes hanger count (piping doesn't get a weight; hangers do).
Trades the calculator doesn't model (e.g., generic equipment) show a tooltip: "Material Calculator doesn't compute weight for this trade — enter quantities manually." Leave Spec empty for those.
7. Push to Estimate¶
When the takeoff grid is ready:
- Push to Estimate on a section header pushes only that section. Push All to Estimate (top of the grid) pushes everything that's Not Pushed or Differs.
- Ductwork rows with a spec land in the Estimate as Unit = LBS with computed weight. Piping rows land as LF with hanger counts as a sub-line. Plain measurement rows land as LF / SF / each.
- Provenance is preserved — Estimate scope lines link back to the originating takeoff row, which deep-links back to the originating PDF page. The audit log captures every push.
- The filter chips above the grid (All / Not Pushed / Differs / Synced) help you focus on what still needs pushing.
8. Standalone Material Calculator preview¶
For a quick play with the spec library on its own, open from the bid URL:
/bids/<bid-id>/material-calculator-preview
The page used to be the workbench and used to validate spec definitions before they integrate fully into the takeoff grid. Layout:
- Left: Spec Palette — Copy from bid / + Add spec / list of specs.
- Right: LBS Calculator (preview) — populates after you click a spec on the left.
The right side adapts to what you selected:
- Duct spec selected → input is Measured area (SF), button is Compute weight. Output: lbs/SF, Straight LBS, Fitting LBS (incl % allowance), Total LBS, and a source chip showing which gauge factor was used.
- Pipe spec selected → input is Measured length (LF), button is Compute hangers. The page notes "Pipe takes off in linear feet — weight is a ductwork concept, so there's no LBS for a piping spec. Hanger count is shown below."
Useful for sanity-checking that a spec's material properties produce the right per-unit weight before you assign it on real takeoff rows.
Verification Checklist¶
- Drag-drop PDF into 06 Takeoff → file appears without reload; click → Open takeoff viewer works
- Calibrate (2 points + distance) → Scale chip flips from gray to yellow/green; state persists across refresh
- Any measurement tool (Linear / Area / Count) produces a markup → markup appears in the side-panel list and auto-saves (survives
Cmd+Shift+R) - Every markup appears as a row in Estimate → Takeoff sub-tab; Source pill (
<file>.pdf p.<N>) deep-links back into the viewer on the correct page with the markup highlighted - Duct spec in Material Calculator → row flips to LBS with computed weight; Pipe spec → stays as LF with a hanger sub-line
- Push to Estimate → row Status flips to Synced; row appears in the Estimate sub-tab as a scope line with a provenance link back to the takeoff row
- Switch to a different bid and back → the original bid's markups are intact (no cross-bid leakage)
Known Issues / Current Gaps¶
Related docs¶
- Handoff Scope — Equipment + selected vendors snapshot at award time; pulls from estimate which is downstream of takeoff
- Bid → Project Conversion — Award flow that freezes the takeoff state into project cost codes
Updating this walkthrough
Run the full flow yourself end-to-end. If it passes, bump last_verified: in the frontmatter to today's date. If any step fails, fix the doc or the code in the same PR — drift is the enemy.