Each card below is a design MJ has signed off on. They are frozen here so ongoing mockup work cannot disturb them, and so the whole set can be shared or wired in as a batch. QuickBooks-write pieces stay greyed until Seth's architecture review comes back.
The QuickBooks-style project estimate: hidden cost + markup drive the customer rate, an inline Live snapshot guards the 30% margin floor, sections with subtotals, unit of measure, and a client/job header. Locked format: D (compact power grid) with the internal cost/markup columns shaded and hidden from the client.
The estimate's lifecycle after the builder: mark ready → internal approve → send to the client (they accept online, price only) → it converts to a project. Live activity trail, and a Check pricing vs history pop-out (greyed, coming soon) at the approval gate. QuickBooks sync stays greyed until Seth.
The payoff: a plain verdict on whether you're holding the margin you quoted, an inline snapshot, and a drillable per-phase matrix - est cost, labor (time clock), a shaded From QuickBooks column (bills + POs), projected, variance and margin. Click any phase to see the entries behind it, badged by source.
Luis's field-ops flow: the crew's week lands with the entries needing a look flagged and surfaced at the top (overtime, off-site, over-budget, edited), the clean ones pre-selected to approve in one pass, and a two-stage close (crew submits → Luis approves → office posts to payroll + job cost). Approved time feeds the labor column of Job Cost.
The field side - what the crew carries. Geofenced clock in / out (off-site prompts a reason and flags it), breaks, switch job mid-shift, edit your time (a submitted day re-flags for review), a lead can clock in the whole crew, daily log + photos, materials & receipts (receipts become QuickBooks bills), tasks, and offline hold + sync. Produces the time, geofence and materials the desktop mockups consume.
The tenant-config surface behind the whole sprint: margin floor, labor markup, who approves and who closes the week, the smart-flag thresholds, pay cadence, internal buckets, cost codes, per-person rates and point-in-time geo - seeded with S16's answers but editable, so it scales past S16. A category workspace with a live What this affects rail. QuickBooks account mapping and the full rate card stay greyed until Seth.
The office/desk capture surface - the desk counterpart to Crew Mobile. A live clock plus the weekly crew timesheet (per-day hours, totals, submit status), and expand a name to edit their hours as a job/phase by day matrix - the QuickBooks weekly-timesheet shape, days lined up across. Flagged cells show amber; Submit week hands the sheets to Smart Approvals (M4).
The finance/ops command center for the week, in the full console shell: a plain "start here" that names the one thing to chase, a semantic stat bar, needs-attention cards, a labor vs estimate by phase chart (the overrun that drives the margin gap), and the tables as depth. Every number drills, with a subordinated SOC 2 approval-evidence trail. On-brand red / orange / blue.
The cross-project home the estimate builder (M1) and approval (M2) open from: every estimate across jobs as a filterable list or a stage board (draft → ready → approved → sent → accepted → project), an inline snapshot, and the 30% margin floor flagged on the ones that miss it. Click any row for a full-screen preview - the same estimate grid as the builder, dark section rows footing to a customer total - then jump into the builder or the approval flow.
The rate card behind the labor math, from the Taylor 6th billing-rates model: every rate holder carries bare cost → burdened cost → bill rate, and the gap is labor profit per hour. Grouped by Design (1099), field crews (blended) and field (per person); each row expands to its burden breakdown (taxes / insurance / benefits) with overtime and rate history, and edits are effective-dated. Flags any rate below the 30% margin floor. Feeds the estimate labor lines (M1) + the job-cost labor column (M3).
The remaining slices depend on the RippleCore / QuickBooks boundary - waiting on Seth's architecture notes before we mock the estimate + TimeActivity sync and the QBO projections.
node _serve.mjs 4322 · then open http://localhost:4322/