Bid Detail - Estimate: Estimating sheet¶
| Stage | Building |
|---|---|
| Status | Partial |
| Design status | Approved |
| Spec status | In review |
| Estimate | L |
| Confidence | Medium |
| Linear | PIN-47 ↗ PIN-197 ↗ |
| Linear status | Done |
| Cycle | C14 |
| Design | Design ↗ |
| Linear epic | Bid Intake & Pipeline |
| Module | Bids ↗ |
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).