---
title: LFCS Pricing Checklist — every bid must pass this before submission
type: standard
status: live
created: 2026-05-04
created_by: claude-code-coo (codifying lessons from AB-Test-Tracker Rounds 1 + 2 on 2626 Mack Civil bid)
related:
  - "[[lfcs-standards/folder-spec]]"
  - "[[lfcs-standards/element-taxonomy]]"
  - "[[lfcs-standards/rate-card]]"
  - "[[Operations/skills/lfcs-bid-prep-doc/SKILL]]"
  - "[[Operations/skills/lfcs-boq-parse/SKILL]]"
  - "[[_Brain/AB-Test-Tracker]]"
purpose: Mandatory pre-flight checklist for every LFCS bid. Whether the pricer is Cowork, claude-code-coo, Huss, Liam, or anyone else — same checklist. Every miss on this checklist has cost LFCS money on a previous bid.
---

# LFCS Pricing Checklist

**Read top-to-bottom before submitting any quote to a head contractor or end client.** Each item is here because a previous bid missed it. Skipping = leaving money on the table OR pricing yourself out.

Source documents — pin in your editor before pricing:

- `lfcs-standards/rate-card.md` (dayworks labour rates)
- Latest `LFCS Rate Card V<latest>.pdf` from Drive `LF Construction Services PTY Ltd / Rate Card / ` (currently V1.7 dated 2026-04-15)
- `Operations/Rates/FRP Rates Development.xlsx` (productivity baseline)
- `lfcs-standards/folder-spec.md` (where each output goes in the job folder)
- `lfcs-standards/element-taxonomy.md` (canonical element vocab — never reinvent)
- `lfcs-standards/pricing-history/` (what we charged for similar items on past jobs)

## Phase 0 — Pre-Pricing Exclusion Grill (MANDATORY before any pricing)

**Don't assume. Don't infer from RFQ literal text alone. ASK Rocky/Huss/Liam every question below before pricing starts.** RFQ §1+§3 reading missed Rocky's company convention on 2626 (FRP-install-only); 5 revisions and 4 A/B rounds later, this grill captures what should have been asked at minute one.

Agent runs through this list interactively at session start. **Skill `lfcs-bid-prep-doc` aborts pricing if any answer is "TBC" / "I don't know" / unanswered.** Rocky's call wins over any RFQ literal reading.

### Q1 — Supply boundaries (per major material)

For each, the question is "LFCS supply or head contractor supply?":

- [ ] **Concrete (N25 ready-mix + delivery):** default TfNSW dayworks → head contractor (their TfNSW Register supplier).
- [ ] **Reinforcement (N12, ACRS-certified):** default TfNSW dayworks → head contractor.
- [ ] **Sand bedding material:** default → head contractor.
- [ ] **Backfill select fill (R11 Type SO + general fill):** default → head contractor.
- [ ] **Pit fixtures — grate + frame (R0220-04):** default TfNSW dayworks → head contractor. RFQ §8 wording can be misleading.
- [ ] **Pit fixtures — lintel (R0220-03):** default → head contractor.
- [ ] **Step irons (galv AS 1657):** default → head contractor.
- [ ] **ERSED materials (silt fence, sediment trap, geofabric):** default → head contractor.
- [ ] **Pipe (new + existing connections):** default → head contractor.
- [ ] **Formwork ply + props + acrows:** default → LFCS (formwork is the only material LFCS routinely supplies on FRP-install-only jobs).
- [ ] **Bituthene + curing compound (R11 4.5.3 + R53 2.6):** default → head contractor (typically with concrete crew chain).
- [ ] **Grout / hydrophilic seal (pipe penetrations):** default → LFCS (small + tied to pipe pen install which is LFCS labour).
- [ ] **Diamond saw + consumables (DN900 break-back):** default → LFCS (LFCS consumables for LFCS labour).

### Q2 — Site management + plant boundaries

- [ ] **Traffic control + signage:** default → head contractor.
- [ ] **Site lighting:** default → head contractor.
- [ ] **Survey + setting out + invert level supply:** default → head contractor.
- [ ] **Disposal of spoil + demolition waste:** default → head contractor (transport to site compound).
- [ ] **Demolition of existing structure:** default TfNSW dayworks pit jobs → head contractor.
- [ ] **Machine excavation (incl. shoring + plant + operator):** default → head contractor.
- [ ] **Pavement saw-cut around pit footprint:** default → head contractor (paired with excavation).
- [ ] **Dewatering setup + monitor:** default → head contractor (site management).
- [ ] **Bypass pumping / temporary flow diversion:** default → variation if required (not allowed for in either base scope).
- [ ] **Concrete pump / crane bucket:** default → head contractor (with their concrete supply chain).
- [ ] **Excavator hire + operator:** default → head contractor.
- [ ] **Backfill placement + compaction:** default → head contractor.
- [ ] **Sand bedding placement + compaction:** default → head contractor (paired with bedding material supply).

### Q3 — QA + admin boundaries

- [ ] **Engineer Certificate of Conformity (R11 4.4.2 Hold Point):** default TfNSW dayworks → head contractor (their QA chain). LFCS may carry sub-PQP only.
- [ ] **Project Quality Plan (PQP):** LFCS sub-PQP rolls into head contractor's PQP, or LFCS submits direct?
- [ ] **SWMS for night works:** LFCS prepares own SWMS (always, AS 4801) — not optional, but check who reviews/signs.
- [ ] **CCTV inspection (R11 5.2):** default → head contractor / specialist subby.
- [ ] **Hold Point + Witness Point notifications:** LFCS Site Sup notifies head contractor; head contractor notifies TfNSW SO.
- [ ] **Daywork docket sign-off chain:** confirm signatories (head contractor Site Sup + TfNSW SO + LFCS Site Sup).

### Q4 — Programme boundaries

- [ ] **Hours of work confirmed?** (e.g. night-only Sun-Thu 19:00-05:00 per RFQ Construction Programme).
- [ ] **Midnight crossing loading applies?** (Yes if any shift extends past 24:00 — Rate Card V1.7 +8 hr day rate per person per shift.)
- [ ] **RFI 36-style contractor acceptance signed?** Pre-condition to commencement — flag in Terms section if pending.
- [ ] **AfC drawings supplied?** Or pricing carries assumption clause (R0220 standard) + variation if AfC differs.
- [ ] **TfNSW Register concrete supplier confirmed?** If not, +5 working days project-assessment lead time per R53 2.4.3.
- [ ] **Adverse weather standdown handling:** dayworks variation per Rate Card V1.7 minimum 8-hr call-out.

### Q5 — Productivity calibration

- [ ] **Closest analogue past job?** (e.g. FRP Rates Development "TCE Liv Stormwater pits" sheet for pit work). Pull labour hours from there as baseline.
- [ ] **Scope simplicity adjustment:** for FRP-install-only with no supply chain coordination, drop productivity ~20% from baseline.
- [ ] **Live service / restricted access adjustment:** if working around live pipes / live road / live electrical, slow productivity ~30-50% on affected activities (e.g. mass concrete around DN900).
- [ ] **Crew availability for night shifts:** confirm trade + supervisor coverage for the programme.

### Q6 — Commercial posture

- [ ] **Defensible-for-variations OR competitive-for-award?** Rocky's call. Defensible = Rate Card V1.7 client-facing rates ($85 day / $140 night) + 15% redundancy. Competitive = internal cost basis ($72-$58/hr) + 18% margin built in.
- [ ] **Margin / redundancy %:** default 15% on subtotal per Rocky's standard. Confirm if this job is different.
- [ ] **Materials markup:** default +10% per Rate Card V1.7. Confirm if pass-through-at-cost basis is being requested.

### Q7 — Sanity check (auto-flags)

If any of these come back unexpected, escalate to Rocky before proceeding:

- [ ] **Total bid > $100K** for a single small pit → likely scope-bloat; review.
- [ ] **Total bid < $20K** for a TfNSW night-works pit with full supply → likely missed midnight loading or productivity too lean.
- [ ] **No midnight crossing loading line item** on a night-only job → missed Rate Card V1.7 clause.
- [ ] **No defensive exclusions Block B** → tender too thin commercially.
- [ ] **Reo qty back-calculated from drawings** instead of read from BoQ → re-do quantity take-off.
- [ ] **More than 2 LFCS-supplied major materials on a TfNSW dayworks pit job** → likely missed FRP-install-only convention.

### Output of Phase 0

Agent writes a **Pre-Pricing Grill Record** to `{job_folder}/02 - Scope and Pricing/02b - BOQ and Rate Schedules/Pre-Pricing-Grill-{date}.md` capturing every Q + answer, signed off by Rocky (or whoever was grilled). This becomes the source of truth for scope assumptions in the Tender Summary Dimensions & Assumptions sheet.

If any answer is missing, the agent loops back and re-asks until all are answered. **No pricing starts until grill is complete + signed.**

## Phase 1 — Source intake (READ EVERYTHING)

- [ ] **RFQ scope email** read in full. Extract: scope of works, programme/hours-of-work, payment basis, exclusions, key assumptions, attached files list. **Do not start pricing until the RFQ scope email is in the vault.**
- [ ] **All attached BoQ files** opened. If a BoQ exists from the head contractor, it is the authoritative quantity source — trust it over drawing back-calculation.
- [ ] **All RFI files** read. Look for unsigned acceptance signatures (these are pre-conditions to commencement and must be flagged in submission Terms section).
- [ ] **All drawings** read. Note: pit fixtures (grates, step irons, lintels, etc.) — the RFQ scope email is the source of truth for who supplies what, not the drawing notes.
- [ ] **All specifications** read. For TfNSW jobs, count Hold Points + Witness Points per spec — these drive QA admin labour estimates.
- [ ] **Failed downloads escalated immediately to Rocky.** Never proceed with a known data gap. The 2026-05-04 2626 Mack Civil RFQ ZIP failed `gws drive files get` (returned 0 bytes twice) — that miss put $11K of night-works premium at risk in the v1 bid. Manual web download fallback exists and must be used.

## Phase 2 — Programme + payment basis

- [ ] **Hours of work?** Extracted from RFQ scope email (Construction Programme section, NOT drawings). Day / Night / Weekend / Mixed. If night-only, Rate Card V1.7 night tier applies ($140/hr trade, $150/hr supervisor).
- [ ] **Midnight crossing loading?** Per Rate Card V1.7: *"Night Shifts extending past midnight will incur an extra 8 hours at day shift rate."* For any shift crossing midnight (e.g. 19:00–05:00 typical TfNSW night work), this loading applies **per person per shift**. Calculate: `shifts × people × 8 × $85` for trade, `shifts × people × 8 × $95` for supervisor. **Easy to miss — the 2026-05-04 2626 bid initially missed $9,080 here.**
- [ ] **Payment basis?** Lump Sum / Schedule of Rates / Dayworks T+M / Hybrid. For dayworks (especially TfNSW SO-instructed jobs per RFI response), present BOTH a Lump Sum AND a Schedule of Rates option in the tender — dayworks variations bill at the per-hour rate, so the client QS needs to see your per-hour basis.
- [ ] **Daywork docket discipline confirmed in Terms section** of the tender — daily docket signed by head-contractor site supervisor + end-client SO at end of each shift. *Unsigned dockets = unpaid* per LFCS standard practice.
- [ ] **Minimum call-out** per Rate Card V1.7 noted (8 hrs per working day — protects against half-shift cancellations).

## Phase 3 — Scope reconciliation

- [ ] **Mirror the RFQ scope of works section verbatim** into your line items. Do not paraphrase. If the RFQ says "Construction of base slab, walls, and top slab" — that's three line items minimum.
- [ ] **Default to FRP-INSTALL-ONLY scope on TfNSW dayworks pit jobs** unless RFQ explicitly puts material supply in LFCS scope AND Rocky/Liam confirms. Rocky's company convention: at this scale of work (single pit, one-off), all major supplies (concrete, reo, fixtures, sand bedding, backfill, ERSED) come through the head-contractor chain — better TfNSW Register concrete + ACRS reo + bulk-buy economies. LFCS supplies only formwork ply + Bituthene + curing + grout/seal + small tools + ute&tools. **2626 Round 3 verdict: my bottom-up "what's in scope" approach missed this; Cowork's top-down "what's MACK in scope" approach caught it.** Codified.
- [ ] **Calibrate productivity DOWN ~20% from FRP Rates Development baseline when scope = FRP-install-only.** Less coordination overhead, faster supply chain, simpler programme. Reflected in lower labour-hour estimates per activity.
- [ ] **Pit fixtures (grate, step irons, lintel) supply scope check:** for TfNSW dayworks → Mack supplies. For commercial concrete subbie work → LFCS supplies if RFQ §8 names "all pit fixtures" without supply-side exclusion. Confirm explicitly.
- [ ] **Reo qty: trust the BoQ over drawing back-calculation.** BoQ has detailed splits per element (base / walls / top); drawings show patterns and notes that don't translate cleanly to weight without per-element area calcs. If both exist, BoQ wins.
- [ ] **N12 spacing: RFQ Key Assumptions section may override drawing callout.** 2626 example: drawing showed N12@200, RFQ said "N12 bars at 150mm centres" — RFQ wins.
- [ ] **Concrete supply: assume LFCS unless RFQ Resources block excludes it.** RFQ Resources usually lists "concrete, reinforcement, formwork, backfill" as LFCS-supplied materials. If the head contractor controls concrete supply (common on TfNSW jobs via TfNSW Register), confirm explicitly.
- [ ] **TfNSW Register check.** If concrete is LFCS supply on a TfNSW job, the chosen ready-mix supplier must be on the TfNSW Register of Concrete Mixes. If not, +5 working days project-assessment lead time per R53 2.4.3 — flag in Sensitivity sheet.
- [ ] **ACRS-certified reo supplier** required per R53 1.4 for TfNSW jobs. Compliance assumed of supplier — flag if uncertain.
- [ ] **Pit fixtures: itemize separately.** Step irons (galv AS 1657 + AS/NZS 4680, required if pit depth >600mm per R11 4.7.4), SA grate + frame (per R0220-04, Class D galvanised), SAS lintel (per R0220-03 — usually head contractor supply on TfNSW jobs).

## Phase 4 — Quantities + dimensions

- [ ] **Pit depth** extracted from drawings, NOT assumed. Confined-space rules (AS 2865) trigger at >1.5m — significant cost adder ($5–10K standby person + atmospheric monitoring + retrieval gear). Drawing notes typically state max depth (e.g. R0220 series: "depth not to exceed 3500mm" — that's the spec ceiling, not the actual).
- [ ] **All dimensions captured in a Dimensions & Assumptions sheet** (mandatory per Phase 5 below). Each dimension: PARAMETER · VALUE / ASSUMED · SOURCE / NOTE. Mark `*` for items pending confirmation from Accepted-for-Construction (AfC) drawings.
- [ ] **Pipe penetrations counted explicitly.** New pipes IN, existing pipes OUT, existing pipes through pit body — each is a separate line item (form opening + N12 U-bar trim + watertight seal). Common miss: counting only the new inlet, missing existing outlet + existing through-pipe break-back.
- [ ] **Bedding + backfill quantities** computed from pit external footprint. Sand bedding 150mm under base. Backfill from pit external up to 50mm below ESL (or whatever RFQ specifies).
- [ ] **ERSED management priced** as a Lump Sum line — silt fence, drain inlet protection, sediment trap. Per RFQ if listed (TfNSW jobs always require).
- [ ] **Dewatering allowance** if any live pipe / wet excavation is in the work zone. Pumps + hoses + settlement tank.
- [ ] **Concrete pump / crane bucket** allowance for all pours (count: blinding + base + walls + top + haunching). Night hire premium applies.
- [ ] **Excavator + operator** for non-NDD excavation if in scope. NDD (non-destructive excavation) within 500mm of any live service.
- [ ] **Skip / disposal** check who handles. RFQ exclusions block usually states. If head contractor disposes (e.g. transports to site compound), exclude from LFCS pricing.

## Phase 5 — Output structure (mandatory format)

Every bid output is **two workbooks**, side-by-side in vault + Drive:

### Workbook A — Tender Summary (client-facing, 6 sheets)

1. **Cover** — letterhead, project / client / end-client / job no / item / reference / specs / standard drawings / programme / payment basis / contact / revision history.
2. **Option A — Lump Sum** — tabular line items (Item · Description · Qty · Unit · Unit Rate · Total · Notes). Every row priced. Subtotal → 15% redundancy → GST → Grand Total.
3. **Option B — Schedule of Rates** — Rate Card V<latest> tier table (relevant tier highlighted) + indicative man-hours by activity. For dayworks jobs this is mandatory — dayworks variations bill against this rate basis.
4. **Exclusions** — TWO blocks. **Block A** mirrors RFQ stated exclusions verbatim. **Block B** = LFCS defensive exclusions (asbestos, rock, services, RFI acceptance pending, AfC drawing changes, NATA mix lead time, adverse weather, pre-existing defects, engineering certs beyond Hold Points, cancellation premium, bypass pumping, etc).
5. **Terms** — validity (30 days), pre-conditions to commencement, hours of work, payment basis, signature.
6. **Dimensions & Assumptions** — PARAMETER · VALUE · SOURCE table covering every dimensional/spec/programme/material assumption with `*` flags for AfC-confirm items.

### Workbook B — Rate Buildup (internal QS, 5 sheets)

1. **Labour** — every activity as a row (Activity · Crew · Hours · $/hr · Subtotal · Notes / source). Use Rate Card V<latest> rates at the applicable tier (night for night jobs etc).
2. **Materials** — every item (Item · Qty · Unit · Rate · Subtotal). Materials at cost + 10% markup per Rate Card.
3. **Summary** — Labour subtotal + Materials subtotal + External (Engineer Cert etc) + Subtotal + 15% Redundancy + GST + Grand Total.
4. **Sensitivity** — quantified ±$ swings (concrete supply ±$1,100, lintel ±$1,200, confined-space activation +$5–10K, NATA mix lead time, etc).
5. **Sources & Notes** — Topic · Value · Source for every input rate (Drive IDs, doc names, dates).

### Calc Basis column on every line item

**Mandatory.** Every line in Workbook A's Option A Lump Sum sheet has a Notes column showing how the rate was derived (e.g. *"2 men × 5 hrs × $140 = $1,400 + 202kg × $2.80 + 10% = $622 ÷ 202kg"*). Lets head-contractor QS reviewers cell-check the rate. Without this, reviews come back with "how did you get $18/kg?" — wasting time. Catch from Huss's 2026-05-04 amended 2626 BoQ.

## Phase 6 — Commercial discipline

**MARGIN MODEL (locked 2026-05-08 per Rocky directive + 2630 rev 4 — supersedes prior 2026-05-07 16.5%/15%-redundancy wording):**

LFCS locked formula per orchestrator `standards/standing-context.md` §1.5 + pricer `CLAUDE.md` §1.5 (apply to all bids unless intake-gate Q-4 records a per-job override):

- [ ] **Labour:** direct → +10% contingency → +15% margin on contingency-loaded subtotal. Loaded = direct × 1.10 × 1.15 = **direct × 1.265**.
- [ ] **Materials (LFCS-purchased):** direct → +15% margin → +10% contingency on margin-loaded subtotal. Loaded = direct × 1.15 × 1.10 = **direct × 1.265**.
- [ ] Per-category sequence preserved for traceability. Do NOT collapse to a single 1.265 multiplier in working sheets. Rates baked into the customer-facing BoQ are the loaded rates (single rate per line; loadings hidden — no separate margin line visible to client per §1.5).

Per-job overrides via intake-gate Q-4: design-maturity (full IFC vs 90% Design vs 60% Concept may carry different contingency); posture (defensible-for-variations default; aggressive-to-win rare; client-specified rare third path).

Universal:
- [ ] **No double-counting** — locked formula already includes contingency + margin. Do NOT add a separate redundancy line on top of 1.265 unless intake-gate Q-4 specifically directs (rare; only for legacy-style dayworks-pit jobs where the historical practice was rate-card-hourly + 15% subtotal redundancy with no per-line baking — flagged in assumptions log if used).
- [ ] **Round line totals to nearest dollar** in the tender; round grand total to nearest $100 for clean presentation.
- [ ] **Pre-conditions to commencement listed in Terms** (e.g. RFI contractor acceptance signed, AfC drawings supplied, concrete supplier confirmed on TfNSW Register).
- [ ] **Validity 30 days from submission date.**
- [ ] **30-day rate validity clause** noted (rates may move on materials, especially concrete + reo).
- [ ] **Variation rate basis = same as submission rate** — defensible-for-variations posture default.

## Phase 7 — Distribution

- [ ] **xlsx only, never .md** when uploading to LFCS Drive. Hornsby folder is the canonical company standard. (Per `feedback_lfcs_drive_no_md.md` memory rule.)
- [ ] **Filename suffix** `_v-CC-rev{N}.xlsx` for claude-code-coo outputs, `_v-CW-rev{N}.xlsx` for Cowork outputs. Same basename so they sort beside each other in Drive folder view.
- [ ] **Drive subfolder routing:** Tender Summary → `02 - Scope & Pricing / Quotes & Estimates`. Rate Buildup + Take-Off + Pre-Pricing-Grill → `02 - Scope & Pricing / BOQ & Rate Schedules`.
- [ ] **Use `scripts/lfcs/lfcs-drive-upload.sh <vault_dir> <drive_root_id>`** to upload — bakes in correct gws CLI metadata pattern (--json body, not --params), correct mimeType per extension, auto-share with Rocky's Gmail. **Do NOT** call `gws drive files create --params '{"name":...,"parents":[...]}'` — that ignores metadata, files land in opsman My Drive root as "Untitled" + wrong mimeType (xlsx becomes unreadable). See Common Misses 2026-05-04 entry on this gotcha.
- [ ] **Auto-share with `mcloughlinmichael.r@gmail.com`** as Editor at upload time, no notification email.
- [ ] **Vault commit + push** to origin/main. Commit message format: `{agent}: {job no} pricing rev{N} — {short scope summary}`.
- [ ] **Airtable Bid + Bid Line Items + Specifications + RFIs rows** seeded via `lfcs-airtable-sync` skill (once Phase 5 of cowork-lfcs's LFCS-Operations build lands). Until then: manual seed via Airtable MCP per `_Brain/CLAUDE.md` Airtable schema cheatsheet.
- [ ] **AB-Test-Tracker row** appended for the round if running parallel to Cowork or Huss.
- [ ] **Daily note + project _Log.md one-liner** per AI Team Protocol.

## Phase 8 — Post-submission

- [ ] **Status = Submitted** on Bids row in Airtable.
- [ ] **Submitted Date** filled.
- [ ] **Win/Loss reason** filled when outcome known. Even one-line is gold for the next bid.
- [ ] **Pricing-history line** appended to `lfcs-standards/pricing-history/` (per element, per unit, per rate) for cross-bid lookup. Feeds the QS-comparison flywheel per LFCS Bid System Plan Phase 2.

## Common misses log (append as new ones emerge)

| Date | Miss | Cost | Source |
|---|---|---|---|
| 2026-05-04 | RFQ ZIP failed download (gws CLI 0 bytes twice). Proceeded without scope email + BoQ contents. Missed night-works programme constraint, bedding, backfill, ERSED, dewatering, all 4 pipe penetrations, SA grate supply, 346 kg reo. | $11K+ on initial v1 bid for 2626 | AB-Test-Tracker Round 1 verdict |
| 2026-05-04 | Midnight crossing loading missed (Rate Card V1.7 clause — extra 8 hrs day rate per person per shift for any shift extending past midnight). | $9,080 on 2626 v1 + rev2 | AB-Test-Tracker Round 2 verdict (Huss caught it) |
| 2026-05-04 | Reo qty back-calculated from drawings (150 kg) instead of read from BoQ (346 kg). | ~$1,300 on 2626 v1 | AB-Test-Tracker Round 1 |
| 2026-05-04 | SA grate assumed Mack-supply when RFQ §8 explicitly puts pit fixtures in LFCS scope. | ~$1,000 on 2626 v1 | AB-Test-Tracker Round 1 |
| 2026-05-04 | Demolition + excavation initially priced as LFCS scope per RFQ §1+§3 reading; later confirmed FRP-only is the LFCS lane (Rocky 2026-05-04 PM call). Demo + excavation = exclusions. | ~$5K reduced from rev3 | Rocky 2026-05-04 PM scope clarification |
| 2026-05-04 | Material supply (concrete + reo + grate + step irons + sand bedding + backfill + ERSED) initially priced as LFCS supply; later confirmed FRP-INSTALL-ONLY is LFCS lane on TfNSW dayworks pit jobs (Cowork 45-item exclusions list). All major supplies = head contractor (Mack Civil) chain. | ~$6K reduced from rev3 → rev4 | AB-Test-Tracker Round 3 (Cowork scope refinement) |
| 2026-05-04 | Productivity assumptions held flat at FRP Rates Development baseline despite simpler scope (FRP-install-only vs full FRP+supply). Should drop ~20% for FRP-install-only jobs on simple pit geometry due to less coordination overhead + faster supply chain. | ~$4-6K higher than Cowork's $25-30K estimate | Round 3 verdict |
| 2026-05-04 | Did NOT actively grill Rocky/Huss on scope ambiguities at session start. Inferred LFCS scope from RFQ literal text (§1+§3+§8) when company convention was different. 5 revisions to land final scope. Codified as Phase 0 — Pre-Pricing Exclusion Grill (MANDATORY before pricing) with 7 question categories covering supply, site mgmt, QA, programme, productivity, commercial posture, sanity checks. | 5 revisions × ~30 min each = ~2.5 hrs wasted on rework that one upfront grill conversation would have prevented | 2026-05-04 PM late Rocky observation |
| 2026-05-04 | **gws CLI Drive upload metadata bug.** `gws drive files create --params '{"name":..., "parents":[...], "mimeType":...}'` uploads file bytes but IGNORES all 3 metadata fields. Files land in opsman.systems@gmail.com My Drive root with name="Untitled" + auto-detected mimeType (xlsx becomes application/x-zip = unreadable in Drive UI as Excel; PDFs work because PDF magic bytes auto-detect correctly). On 2629: 7 files uploaded broken; required two-pass fix (rename + move via `files update`, then trash + re-upload xlsx via `--json` body to set correct mimeType). **Correct pattern:** `gws drive files create --upload "<path>" --json '{"name":"<n>","parents":["<id>"],"mimeType":"<mime>"}'` — metadata in `--json` (request body), NOT `--params` (URL query). Reusable helper: `scripts/lfcs/lfcs-drive-upload.sh <vault_dir> <drive_root_id>` bakes the correct pattern in. | ~30 min wasted on rediscovery + recovery on 2629; could have been zero on 2630+ if codified earlier | 2026-05-04 PM late Rocky pulled it up after Drive UI showed "Untitled" + unreadable xlsx |
| 2026-05-04 | **A/B test integrity broken.** On 2628 Vaughan Civil Mason Park BESS, Rocky said "don't go off Husse's prices, this is an A/B test" — Cowork read `FRP BoQ hus.xlsx` + Liam V1 quote PDF (Husse-priced) anyway because they were in the upload zip and got auto-routed by lfcs-project-init step 1.5. Result: derived rates may have been independent, but the FRAMEWORK (6-wk Acrow AW8 + 2× EWP + Scaffold + Manitou plant window for CW1+CW2, line-item BoQ structure, exclusions list shape) all came from Husse's work. Husse — who built the V1 — was upset that the "competitive" $542K Cowork number got benchmarked with his answer key visible. **NEW HARD RULE for future A/B tests:** when Rocky/anyone names a comparator (`don't go off X's prices`), the SOURCE files for that comparator must NOT be readable to the pricing agent during build. Either (a) hold them in a separate folder out of vault scope until v-CW is committed, or (b) run pricing in a sandbox with read-permission excluding the comparator's xlsx + any quote PDF based on it. Update lfcs-project-init step 1.5 + lfcs-bid-prep-doc Pre-flight to honour an `--ab-blind-against=<file_glob>` input that excludes those files from agent read access for the duration of the pricing build. | One A/B-test deliverable burned + colleague trust hit | 2026-05-04 PM late Rocky decision after Husse pushback |

## Skills that should enforce this checklist automatically

- `lfcs-bid-prep-doc` — must include this checklist as a Pre-flight section. Skill aborts pricing if any Phase 1 item is missing.
- `lfcs-boq-parse` — must extract programme constraints + payment basis + RFQ-stated exclusions into the boq-normalised.json header.
- `lfcs-precall-questions` — must surface scope ambiguities (e.g. "RFQ §3 says 'excavation and bedding preparation' is LFCS — confirm with QS that LFCS supplies sand and operates excavator, or that head contractor handles").
- `lfcs-airtable-sync` — must populate Bids row with Status=Draft + Margin %=15 + Pricing Basis from RFQ + the RFQ ZIP / scope email URL stored in Source xlsx URL field.
- `chat-bootstrap` — must load this checklist + AB-Test-Tracker latest verdict + recent Common Misses before any LFCS pricing session starts.

## Reading order for a new pricer (claude-code-coo, cowork-lfcs, Huss, anyone)

1. This file (`pricing-checklist.md`).
2. `_Brain/AB-Test-Tracker.md` — recent rounds + verdicts + lessons.
3. `_Brain/CLAUDE.md` — LFCS extensions including Airtable schema cheatsheet.
4. `_System/CLAUDE.md` — global AI Team Protocol (lane rules, append-only, etc).
5. The job's `00-brief.md` if it exists; otherwise scaffold via `lfcs-job-scaffold`.
6. The RFQ scope email — extract programme + scope + exclusions verbatim.
7. The BoQ if attached — read every line.
8. The drawings — note dimensions and pit fixtures (RFQ wins on supply scope).
9. The specifications — count Hold Points + Witness Points.
10. Latest Rate Card V<latest> from Drive `Rate Card / ` — confirm rates current.

Then start pricing per Phase 3 → 7 above.
