/projects answers the strategic morning question every project executive asks: "what's hot per project right now? Where's the cost impact across our active jobs? Which job is pulling resources?"
Sister to /spec-sections but pivoted by project reference instead of CSI MasterFormat section. Each tracker (RFI / submittal / change order) carries a free-text `projectRef` field captured by the extractor (the project number printed on the form header — "24-1234" or "Spring Hill Tower"). This page joins them all by that anchor.
**Per row, you see:**
- **Project** — display form preserved from the source document. Trailing whitespace is normalized so "24-1234" and "24-1234 " merge into one row. - **RFIs (open / total)** — open from /rfi-tracker. Overdue RFIs (past dueAt) tint red; open-but-not-yet-due tint ochre. - **Submittals (under-review / total)** — under-review from /submittal-tracker. Same red/ochre tinting; red for any past their required-by date. - **COs (pending / executed / rejected)** — from /change-order-tracker. Pending = pending + PCO; executed = signed; rejected = declined. Red on the pending count when any PCO is older than 14 days. - **Executed cost** — sum of executed CO cost impact for the project. Signed cents formatted as dollars; red for additive, emerald for credits / savings. - **Pipeline cost** — same for pending + PCO COs. - **Schedule days (exec / pipe)** — cumulative schedule impact in days. Real projects accumulate weeks of additive schedule from change orders; this column answers "is this job behind because of executed change orders OR pending unresolved scope?"
**Top-line stats** above the table: project count, total open RFIs, total open submittals, total pending COs, project-wide executed cost impact. A second line surfaces project-wide pipeline cost impact when non-zero.
**Sort order**: hottest project first by total open work units across the three artifact types. Projects with no open work but historical executed COs surface near the bottom for cost reference.
**Why this matters.** Each tracker (/rfi-tracker, /submittal-tracker, /change-order-tracker) is the daily-action view for one artifact type, project-agnostic. /spec-sections is the cross-artifact spec-by-spec view. /projects is the cross-artifact, cross-project executive view — one screen per active job, sortable by where the work is. Useful for a project executive running a Monday or weekly portfolio review.
**No project schema or migration.** The page is a pure read-side aggregation over the three existing projection tables. Always live with the source trackers.
**Click a row to drill in.** Each project name is a link to /projects/<ref> — a per-project view with sectioned open RFIs, under-review submittals, pending change orders, recently executed COs, and a unified timeline mixing all three artifact types. The drill-in also has "Filtered tracker →" buttons that jump to /rfi-tracker, /submittal-tracker, and /change-order-tracker pre-filtered to the project (those pages also accept ?projectRef=<ref> directly).
**Project metadata (optional enrichment).** The drill-in renders a header card with owner / contract value / target completion / status / notes when metadata is set. Click **Edit project** (or **Add project metadata** when none exists yet) to fill in the form. The rollup at /projects works without any metadata; this just enriches the per-project view. Useful for capturing the project owner / PM contact, the contract value, the target substantial-completion date, and free-text notes (contract form, lender, etc.) that don't fit on individual artifacts. Operators can also create metadata BEFORE any docs land — visit /projects/<your-projectRef> directly and the metadata form opens in "add" mode.