| Unit | Installed | Life (Yr) | Next Forecast | Est. Cost |
|---|
| Incl. | Building | Roof Sqft | Material | Last Replaced | Next Forecast | Est. Cost |
|---|
The short version. This page is the easy part. A map and some tables — hopefully helpful and friendly to use — are the visible tip of the system, not the system. What makes this succeed is underneath: a robust, secure backend that ingests data from the systems LMH already runs — Yardi extracts, county records, plain spreadsheets — and exports it back out in the formats people actually work in: CSV, Excel, JSON, and whatever a lender's analyst asks for.
Every number traces to a source, and every row says how much to trust it (verified / logged / inferred / flagged). Get the data layer right and any number of useful pages can sit on top of it. Get it wrong and no interface can save it. The sections below explain how this page works; the backend, security, and import/export sections explain the part that matters most.
Map + roof plan are one object. Hover a footprint to identify it; click to open its drill-down. Click a row in the Roof Plan table to fly to the building. Uncheck a row to exclude it from every total.
Sidebars. Right sidebar (R): layers — utility origins, boundary, legend. Left sidebar (L): filters and the model — community roof standard and per-class life/cost assumptions. Both start open; click the edge strips or use the keys to collapse them. Below the map, three matching collapsibles: Building Drill-Down, Roof Plan (B toggles it), and Capital Outlook. Keys work when you're not typing.
Forecasts. Auto-populate from the previous install (assessor build year where the county publishes one) plus the standard life; set a year or material per building to override.
Utilities. Six services drawn as origin stories from public documents — provider, direction, and sources in each popup. Gas stays corridor-level: precise pipeline locations are federally restricted and deliberately not shown.
Data honesty. Footprints and parcels: SanGIS, logged. Everything editable or synthetic: inferred. Nothing presents as verified. In hover tooltips, an asterisk after a build year means the year is synthetic, not assessor-published.
The backend. The pretty page stores nothing canonical. Geometry and assessor data come from county services via seeded, re-runnable scripts in the private repo; every generated file is reproducible from source. The system of record will be a Supabase Postgres (schema already written: communities → buildings → units → assets with a load-bearing data_confidence column and a capital-vs-lease view) — deliberately held until client discovery answers the systems questions, so integration is designed around reality.
Security & backup. Today: private git repository (full history = point-in-time backup), unlisted URL, no client data on the page — everything visible is public-record or synthetic. At Supabase go-live: row-level security, encrypted at rest, automated daily backups with point-in-time recovery, and keys never shipped to the browser beyond a publishable client key.
In and out. Export: Roof Plan CSV and Capital Outlook CSV (open directly in Excel) plus the edits JSON — every export carries its confidence column. Import: one-time Yardi extracts (properties, units, fixed assets, work orders; join key = property code) and vendor feeds land in server-side staging tables with confidence assigned at load — dated, re-runnable file drops, never a live interface.
How this was built. Building footprints pulled from SanGIS/SANDAG's authoritative Building_Outlines (645 buildings, replacing 88 from OpenStreetMap). County parcels joined by centroid to attach assessor build years (204 real years; tax-exempt military parcels carry none — kept honest, never filled). The community boundary is the actual Santo/Canyon View parcels, which is why neighboring homes are excluded. Asset inventory and laterals are seeded synthetic demonstrations. Utility origins were researched from public documents only — city budgets, CPUC filings, published wire-center records — each with sources and confidence in its popup. Every number traces to a script, a source, or a labeled assumption.
25 years of work-order history is an actuarial table. It already says how long water heaters, HVAC, carpet, and paint actually last here — no clipboard tour required. The locked position: forecast-first, census-opportunistic.
So: inventory only lumpy building-level assets (roofs, HVAC, boilers) at project level; carry appliances as a rate. The drill-down shows what census-grade data would look like — every row there is synthetic and marked inferred.
One QR code per unit on the electrical panel. Every tech visit scans it; whatever they touch gets logged against the right unit. The census assembles itself as a by-product of normal maintenance — logged confidence, at no census cost.
Toggle the utility layers: each arrow shows where a service physically comes from, per public documents (see the sources note in the repo). Select a building to see the responsibility split — solid is the utility's side, dashed is owner capex. The demarcation point decides whose capital plan a failing lateral lands in.