Skip to content

Bid Detail - Estimate: Estimating sheet

StageBuilding
StatusPartial
Design statusApproved
Spec statusIn review
EstimateL
ConfidenceMedium
LinearPIN-47 ↗ PIN-197 ↗
Linear statusDone
CycleC14
DesignDesign ↗
Linear epicBid Intake & Pipeline
ModuleBids ↗

Route: /bids/:bidId?tab=estimate

Scope

Core Estimate grid on Bid Detail: CSI-coded scope lines organized into sections (Equipment / Accessories / Labor + custom), each with multiple vendor-quote columns, a cut% discount, and a computed BUY. A single read-only Budget column auto-populates from Equipment Schedule and Takeoff pushes (manual entry always wins), with a source-attribution badge per cell. Role-gated summary footer rolls up job cost, markup, and profit. (Source: PIN-47, PIN-197.)

Acceptance criteria

  • 4-level hierarchy: sections → scope lines → sub-lines → vendor quotes; 4 vendor columns by default (min 1, max 10, +/- to adjust)
  • CSI code field per scope line, searchable from the Division 23 (HVAC) library
  • Cut% column per scope line; BUY = BID × (1 − Cut%), calculated
  • Budget column auto-fills from Equipment Schedule (equipment lines) or Takeoff subtotal (labor/trade lines) by CSI/section match; manual entry always overrides, with a "Manual" badge
  • Source-attribution badge on every Budget cell (Equipment Schedule / Takeoff / Manual / AI-historical)
  • Auto-calculated row, section, and grand totals
  • Summary footer: Row 1 (all users) job cost → markup % (editable) → contract price; Row 2 (role-gated) gross profit → insurance % → overhead % → net profit
  • Inline editing (click to edit, Tab between cells); empty state prompts "add your first row"

Conor's comments

Sighlt UI & UX changes. Needs testing & sign off after 8/19

Notes

Works as of this week; read-only PM can trigger failing write (PIN-770); needs soak

Open question for Conor

Estimate summary (Conor, 2026-08-27 call): the sheet has a role-gated summary footer today (Row 1 job cost, markup, contract; Row 2 finance-only gross profit, insurance, overhead, net profit). Conor was still designing a summary tab at the bottom. Confirm: keep the footer as-is, or add a separate summary tab, and if so what it shows. UI otherwise locked; the blue/gradient restyle is non-blocking (Mateo, in code).