The Flat Glass module (/app/flat-glass) is a separate operating rhythm from the auto-tint dashboard, built for architectural and commercial window-film work. It only shows up in the sidebar if your shop has FLAT_GLASS in its verticals. The dashboard gives you a pipeline view — outstanding bid value, awarded value awaiting kick-off, active project count, and COIs expiring soon — plus quick links into bids, projects, buildings, and a few standalone tools.
The flow: buildings, bids, projects
The intended order is building first, then bid, then project. A building is the glass surface record (name, city/state, floor count, building type, total glass sqft) that you quote against. There's no dedicated "new building" form yet — the Buildings page's own comments say it's a stub link, and in practice buildings get created inline from the bid builder, not from a standalone screen.
Bids move through DRAFT, SUBMITTED, UNDER_REVIEW, AWARDED, DECLINED, EXPIRED, or CONVERTED. The full Bids list lets you filter by status with a row of status pills — the dashboard doesn't have that filter, it just shows the latest 10 bids across all statuses, with an "All bids" link through to the filtered list. There's no direct way to spin up a project by hand — the empty states on both the dashboard and the Projects list say it plainly: "Award a bid to spin one up." Projects then run through PLANNED, MOBILIZING, IN_PROGRESS, QC_PUNCH, COMPLETE, ON_HOLD, or CANCELED, with a percent-complete bar and a small green "COI" badge on any row that has a certificate PDF on file.
COI tracker: the gotcha to know
The COI tracker sorts every non-terminal project (anything not COMPLETE or CANCELED) into three buckets: Missing (no COI PDF uploaded), Expiring soon, and Active. The bucketing logic has no floor on the "expiring" side — a project whose COI expired weeks or months ago still lands in "Expiring soon," not some separate "expired" bucket, because the check is simply "expiration date is less than 30 days from now," with no lower bound. So a COI that lapsed 90 days ago shows up in the same bucket as one expiring next week.
Watch for a related inconsistency: the dashboard's "COIs expiring" KPI tile uses a tighter ±30-day window (it only counts expirations between 30 days ago and 30 days out), so a COI that expired more than a month back won't show in that dashboard number even though it will still appear in the full COI tracker's "Expiring soon" bucket. Treat the dedicated COI tracker page, not the dashboard tile, as the source of truth, and don't assume "0 expiring" on the dashboard means every COI is current.
Energy estimator
The estimator (/app/flat-glass/estimator) is a sales tool, not a project record. Plug in glass square footage, a film from the catalog, a DOE/IECC climate zone, your utility rate, and install cost per sqft, and it returns annual kWh and dollars saved, CO2 avoided, and payback years. It also runs a thermal-shock compatibility check against your existing glass type (single/double/triple-pane, laminated, etc.) and whether the exposure is south- or west-facing, flagging LOW/MODERATE/HIGH risk so a rep doesn't sell a film/glass combination that could crack under thermal load. The methodology footnote is explicit that the savings numbers are conservative estimates from climate-zone baselines and a 3.2 COP assumption — useful for a sales conversation, but not a substitute for a full ASHRAE 90.1 energy model.