← Blueprint · Wiring map · Apps

Blueprint annex — the per-page census

Every page of the suite, one honest block each: what it is, where it links, what it reads, and the one thing worth knowing. This is the raw material behind the blueprint's census table.

v1 · 2026-08-06 · 51 pages · read-only walk, whole suite
3d action-plan blueprint brain brochure_v2 card client-file client-map designer doc exec-summary files home hub index ingest leads-commercial leads-residential library licensing-pesticide map massing new-lead orlando-exec orlando-letter orlando plan planting-guide planting-report procurement properties property-report proposal rentals report reports rev review reviews-inbox site-marks status steward sun-sweep sun3d supplier-map suppliers today tree-sources urth-report wiring-map workspace

3d.html 5.4KB SOLID

Role
Photorealistic Google 3D (Map3DElement) viewer for one measured property (?id=).
Links out
index.html; +apps.js switcher (injected on every page loading apps.js = brain, designer, library, suppliers, map, review, files, status×2, action-plan, rentals, index) and apps.js URTHActions bar → urth-report.html?id, brain.html?tab=reg.
Data
/api/aerial?coords / ?config (server hands Google key to client).
State
SOLID (linked from brain, client-file, urth-report, workspace).
Top issue
Depends on Map Tiles API toggle; fails soft with a "one toggle" message — fine.

action-plan.html 7.8KB HALF

Role
Personal checkable to-do board (seeded tasks + add/delete).
Links out
index.html; +apps.js switcher.
Data
localStorage `urth_actionplan_v1` (SEED hardcoded in page; saved on first load).
State
HALF — works, but device-local only; seeded content is a June-era snapshot (bank gate, "buy kit this week") that never updates.
Top issue
localStorage-only → phone and laptop see different lists; no other page reads it.

blueprint.html SOLID

Role
This proposal — the living improvement blueprint: census table, ranked build order R1–R8, P5-1 hero spec, this annex.
Links out
home, wiring-map, blueprint-annex.
Data
HARDCODED (a written proposal, versioned + dated).
State
SOLID — new front layer.
Top issue
Same honesty rule as wiring-map: every pass must bump the version stamp or it rots like status.html.

brain.html ~71KB SOLID

Role
The workhorse — Registry (add/edit properties), Estimate and Jobs tabs, plus inline report/brochure sections.
Links out
urth-report?id, site-marks?id, sun-sweep?id, sun3d?id, 3d?id, client-map, client-file?id, designer?id, proposal, index; +apps.js switcher.
Data
Supabase urth_properties read/write (public REST); /api/planting-plan, /api/launchpad; PRICEBOOK hardcoded in-page (labor 45/32/24 $/hr tiers, materials markup 1.9).
State
SOLID — engine half real.
Top issue
The estimate computes into the DOM and persists nowhere — close the tab and the number is gone; three schedule builders disagree on one page (buildSchedule / buildBudget / renderPlan).

brochure_v2.html 13.4KB ORPHAN LEGACY

Role
Client-facing plant/materials picker brochure; selections compose a mailto to alan@.
Links out
index.html, mailto; +apps.js switcher.
Data
window.URTH_DATA from data.js (old P01–P13 demo property IDs) + /api/aerial?plant= for photos.
State
ORPHAN + LEGACY — nothing links in; brain.html and urth-report.html now render their own inline brochure sections.
Top issue
Runs on the retired data.js P-ID system, not the LaunchPad/Supabase registry.

card.html 4.0KB ORPHAN

Role
Digital business card (?who=alan/orlando/company) with vCard download.
Links out
urthlandscaping.com (ext), tel:.
Data
HARDCODED PEOPLE object in page.
State
ORPHAN — nothing links in; the cardalan/cardorlando subdomains redirect to static .vcf files (vercel.json), bypassing this page entirely.
Top issue
Decide: wire the card subdomains here or delete; also company/alan share one phone number.

client-file.html 11.0KB SOLID

Role
Per-property client CRM card — contact, notes, proposal log, links to designer/3D/report.
Links out
index.html, 3d.html?id, designer.html?id, urth-report.html?id, Google-directions (ext), tel/sms/mailto; +apps.js switcher.
Data
Supabase `urth_properties` (client_record JSON) read+upsert; localStorage fallback `urth_client_<id>`; reads `urthPalettes`.
State
SOLID (linked from brain, client-map). It IS the "Jobber-style CRM" — but functional, not a stub.
Top issue
Overlaps workspace.html's identical Client section — two write paths to client_record.

client-map.html 6.4KB SOLID

Role
Leaflet map of all measured properties as pins with popup actions.
Links out
index.html, brain.html?tab=reg, client-file.html?id, designer.html?id, urth-report.html?id, tel:; +apps.js switcher.
Data
Supabase `urth_properties` (backfills lat/lng via /api/launchpad, persists back).
State
SOLID (linked from map.html, brain, properties).
Top issue
none.

designer.html SOLID

Role
Client-facing mood-board plant picker, filtered by the property's measured site conditions.
Links out
index, library, urth-report?id; +apps.js switcher.
Data
Direct Supabase REST + /api/planting-plan; palettes saved to localStorage urthPalettes (read by client-file).
State
SOLID.
Top issue
Bypasses the /api/c cache proxy (slow first paint), and an applyOverlay() failure silently un-excludes banned plants — a client-trust hole (wiring-map #holes).

doc.html 2.8KB SOLID

Role
Markdown viewer shell for baked-in docs (?f=key).
Links out
index.html; +apps.js switcher.
Data
window.URTH_DOCS from docs-data.js (6 docs: brochure-handoff, cli-setup, design-lock, planting-handoff, planting-how-it-works, truth-ledger).
State
SOLID (linked from files.html).
Top issue
Docs are frozen June snapshots baked into JS — truth-ledger is now stale.

exec-summary.html 3.4KB ORPHAN

Role
Hand-written "where we stand" one-pager for outside readers.
Links out
index.html; +apps.js switcher.
Data
HARDCODED.
State
ORPHAN — hand-authored snapshot ("buying equipment this week"), already stale.
Top issue
Stale claims with no inbound link; archive or date-stamp it.

files.html 18.5KB SOLID

Role
File cabinet — seeded doc list (PDFs/XLSX/Google Sheets/guide pages) with in-app PDF.js preview modal.
Links out
index.html, doc.html?f=design-lock.md, leads-commercial.html, leads-residential.html, licensing-pesticide.html, planting-guide.html, Google Sheets (ext), files/* assets; +apps.js switcher.
Data
localStorage `urth_files_v29` seeded from hardcoded SEED array.
State
SOLID (linked from home, index, hub, procurement, properties, suppliers, today).
Top issue
v29 key-versioning means every seed edit silently discards user-added files on other devices.

home.html SOLID

Role
The new apps front door — hero + grouped rails (Customers & Properties / Work / Design / Procurement / Knowledge & Reputation / System), live counts, semantic tile icons.
Links out
Every rail target incl. properties, brain tabs, site-marks, map, designer, library, planting-report, procurement, suppliers, rentals, files, review, reviews-inbox, status ×2, index, wiring-map, action-plan, today, new-lead.
Data
Read-only HEAD counts (urth_properties / suppliers / plant_library) via the public pattern; strip hides on failure.
State
SOLID — new front layer.
Top issue
Only wiring-map links IN to it; index.html (the real hub) doesn't — reachable but unadvertised until the launcher swap.

hub.html 4.2KB LEGACY

Role
Old apps launcher (tile stack).
Links out
brain.html(+4 tab variants), files.html, planting-report.html, suppliers.html, urth-plant-database.netlify.app (ext).
Data
HARDCODED.
State
LEGACY — vercel.json redirects /hub.html → /index.html; only inbound is sun-sweep's stale back-link.
Top issue
Delete; it links the external Netlify plant DB instead of library.html.

index.html SOLID

Role
The PWA home — the flat 18-tile launcher; canonical "/" (vercel.json resolves / and /hub.html here).
Links out
All main tools as flat tiles — registry/brain (tab variants), urth-report, site-marks, sun tools, designer, library, maps, suppliers, files, reviews, status, rentals, planting-report, action-plan; +apps.js switcher.
Data
HARDCODED tiles.
State
SOLID — the live hub every device opens.
Top issue
Does not link home.html — the new front door is invisible from the actual front door until the launcher-swap call (one-line vercel.json, held for Alan).

ingest.html 15.3KB ORPHAN STUB

Role
Field capture tool for one property — drop pins/zones on the aerial, attach photos + notes ("Stephanie").
Links out
index.html, brain.html?tab=reg.
Data
localStorage `urth_ingest_460sw21st_v3`; aerial via /api/geocode + /api/staticmap. Address HARDCODED to 460 SW 21st Rd.
State
ORPHAN + STUB — single-property prototype; nothing links in, nothing else reads its key.
Top issue
Base64 photos in localStorage will hit quota; captured marks never reach Supabase/brain.

leads-commercial.html 7.2KB SOLID

Role
Reference doc — commercial lead strategy (HOA/PM, facility networks, gov bids, licensing table) as in-page markdown.
Links out
index.html.
Data
HARDCODED markdown in <script type=text/plain>, rendered by marked.js CDN.
State
SOLID as reference (linked from files.html).
Top issue
none.

leads-residential.html 5.3KB SOLID

Role
Reference doc — residential platform playbook (GreenPal, LawnGuru, LawnStarter, traps, sequence).
Links out
index.html.
Data
HARDCODED markdown, marked.js.
State
SOLID as reference (linked from files.html).
Top issue
none.

library.html SOLID

Role
The South Florida plant library — 454 species with sun/water/salt/scorch attributes and search.
Links out
index; +apps.js switcher.
Data
/api/plant-library → plant_master (single source of truth).
State
SOLID.
Top issue
Unpaginated — renders every species at once (P4-5 pagination card staged).

licensing-pesticide.html 10.1KB SOLID

Role
Reference doc — spraying/fertilizer certificate path (LCLM, GI-BMP, etc.).
Links out
index.html.
Data
HARDCODED markdown, marked.js.
State
SOLID as reference (linked from files.html).
Top issue
none.

map.html 3.6KB SOLID

Role
Maps directory — links the three internal maps + embeds Google My Maps.
Links out
index.html, client-map.html, supplier-map.html, status.html?view=map, google.com/maps/d viewer+embed (ext); +apps.js switcher.
Data
HARDCODED My Maps mid=1bQu0vtv0AXkjdjZ3hKDlTyOyk7FJJTY.
State
SOLID (in switcher).
Top issue
The "only one My Map shows" bug — a single hardcoded `mid` in both the link and the iframe; any other My Maps documents are unreachable.

massing.html 13.8KB HALF

Role
Three.js ground-aware 3D massing built from mined terrain + plan data.
Links out
none (only # and theme.css); +apps.js floating nav.
Data
/api/measured, /api/terrain-mine, /api/planting-plan.
State
SOLID-leaning HALF (linked only from urth-report.html?id).
Top issue
No in-page nav of its own; unreachable except via the report.

new-lead.html SOLID

Role
P1 New Lead intake flow as a bannered copy-out prototype — structured capture, nothing pretends to persist.
Links out
today, properties, index (shell).
Data
None persisted by design — copy-out only until the P1 tables land.
State
SOLID prototype — new front layer (was a live 404 until this walk; shipped in 9efd7deb).
Top issue
Gated on URT-DATA-01: the moment leads can persist, this becomes the real front of the conversion spine.

orlando-exec.html 3.9KB ORPHAN

Role
Hand-written Orlando executive summary (longer variant of orlando.html).
Links out
index.html; +apps.js switcher.
Data
HARDCODED.
State
ORPHAN — same stale claims.
Top issue
Duplicate of orlando.html's content.

orlando-letter.html 4.1KB ORPHAN

Role
One-time welcome letter to Orlando (email onboarding companion).
Links out
index.html; +apps.js switcher.
Data
HARDCODED.
State
ORPHAN — served its one-time purpose.
Top issue
none (archive candidate).

orlando.html 3.9KB ORPHAN

Role
Hand-written status brief for the Orlando foreman.
Links out
index.html; +apps.js switcher.
Data
HARDCODED.
State
ORPHAN — stale snapshot ("84 suppliers", "buying this week").
Top issue
Three overlapping Orlando pages; consolidate or archive.

plan.html 12.9KB ORPHAN

Role
Planting-plan viewer/tuner — image + JSON schedule from the planting engine, theme/color/native controls, flags card.
Links out
index.html, brain.html?tab=reg, library.html?q= (per-plant), /api/planting-plan raw JSON.
Data
/api/planting-plan (engine v5). Default id HARDCODED to Stephanie's UUID. No localStorage.
State
ORPHAN — nothing links in, despite being the richest plan surface (flags, standing requests).
Top issue
Orphaned front door to the planting engine; brain/urth-report embed the plan image but not this page's flags/requests view.

planting-guide.html 11.4KB SOLID

Role
Reference doc — "Planting communities guide v2" markdown.
Links out
index.html; +apps.js switcher.
Data
HARDCODED markdown, marked.js.
State
SOLID as reference (linked from files.html).
Top issue
none.

planting-report.html 6.2KB SOLID

Role
Honest explainer of the planting engine — what's strong, the species-selection gap.
Links out
index.html; +apps.js switcher.
Data
HARDCODED (same text also lives in docs-data.js "planting-how-it-works").
State
SOLID (linked from home, index, hub).
Top issue
Duplicated content in two places (page + doc.html?f=planting-how-it-works).

procurement.html SOLID

Role
Procurement in one place — suppliers paginated 20/load with search + category filter + call/website drawer; rentals rides as a link-out card.
Links out
rentals, suppliers (legacy full page), shell nav.
Data
Read-only suppliers (public REST).
State
SOLID — new front layer (was a live 404 until this walk; shipped in 9efd7deb).
Top issue
Rentals data still hardcoded on its own static page — merges here when it moves off.

properties.html SOLID

Role
Customers & Properties as dense rows — search, possible-duplicate badges, measured chips, detail drawer with quick-launch.
Links out
urth-report?id, site-marks?id, sun3d?id, designer?id, client-map, brain?tab=reg, shell nav.
Data
Read-only urth_properties (public REST).
State
SOLID — new front layer (was a live 404 until this walk; shipped in 9efd7deb).
Top issue
Read-only by design — add/edit still lives in brain?tab=reg until Alan accepts this view.

property-report.html 7.5KB ORPHAN LEGACY

Role
Report v2 — measured sun per bed + tree canopy mining, honest "still raw" list.
Links out
index.html; +apps.js switcher.
Data
/api/sun-blueprint, /api/solar-map, /api/terrain-mine.
State
ORPHAN + LEGACY — superseded by urth-report.html.
Top issue
Dead-weight intermediate; nothing links in.

proposal.html 11.1KB LEGACY HALF

Role
Shareable client proposal page (copy-link/print), streetview AI render.
Links out
index.html; +apps.js switcher.
Data
data.js URTH_DATA (P01 demo IDs) + /api/launchpad, /api/render, /api/streetview via hardcoded B="https://app.urthlandscaping.com".
State
HALF/LEGACY — still linked from brain.html, but runs on the old P-ID demo data.
Top issue
Split-brain with urth-report.html as the client deliverable; P-ID lookups won't resolve registry UUIDs.

rentals.html 5.8KB SOLID

Role
Live tool/reference — Reyes day-rate table for budgeting rented gear into jobs.
Links out
index.html, reyesttoolrental.com ×2 (ext), tel:; +apps.js switcher.
Data
HARDCODED rates.
State
SOLID (in switcher as "Rental").
Top issue
Hand-copied rates will drift; no date on them.

report.html 5.5KB ORPHAN LEGACY

Role
Report v1 — sun-per-bed only, with honest gaps list.
Links out
index.html; +apps.js switcher.
Data
/api/sun-blueprint, /api/solar-map.
State
ORPHAN + LEGACY — superseded by property-report.html, which is itself superseded by urth-report.html.
Top issue
Delete-candidate; confuses the report lineage.

reports.html 37.4KB ORPHAN LEGACY

Role
"Supplier Sourcing Report" June 20 — 76 suppliers, 15 anchor categories, ~90 external links + tel: numbers.
Links out
index.html, #c0–#c14 anchors, ~90 supplier sites (ext), ~60 tel:; +apps.js switcher.
Data
HARDCODED (claims "updated automatically" — it is not).
State
ORPHAN + LEGACY — repo's own truth-ledger calls it "a 37KB page linked from nowhere"; superseded by suppliers.html (86 vendors + call list).
Top issue
Delete; its useful notes were already folded into suppliers.html.

rev.html 4.7KB SOLID

Role
Public NFC/tap review capture — stars + comment → Supabase; the reviews.urthlandscaping.com landing page.
Links out
none (self-contained; optional Google redirect).
Data
Supabase POST `urth_reviews` (publishable key in page); GOOGLE_REVIEW_URL="" placeholder.
State
SOLID (production entry via vercel.json host redirect; page-graph orphan by design).
Top issue
GOOGLE_REVIEW_URL still empty — 5-star reviewers never get pushed to Google.

review.html LEGACY

Role
"Share a review" page still riding in the apps.js switcher as Reviews.
Links out
index, review-site links; +apps.js switcher.
Data
HARDCODED links.
State
LEGACY — superseded by rev.html (capture) + reviews-inbox.html (reader).
Top issue
Live placeholder buttons (YOUR_LAWNSTARTER_PROFILE / YOUR_ANGI_ID / YOUR_YELP_ID) — broken the moment a client taps them. R8 decision staged: retire vs fill.

reviews-inbox.html 3.8KB SOLID

Role
Internal inbox of captured reviews — avg/total/4-5★ stats, low-star flagging.
Links out
index.html; +apps.js switcher.
Data
Supabase GET `urth_reviews`.
State
SOLID (linked from home, index, procurement, properties, today).
Top issue
none.

site-marks.html SOLID

Role
The field walk — drop typed pins (existing plants, drainage, hazards, notes) + photos on the measured aerial (sm-fixes.js, sm-photo.js ride along).
Links out
index (back header), brain?tab=reg.
Data
Supabase site_marks writes; /api/staticmap + aerial; the save path re-sends the full payload (photos included) on every tap.
State
SOLID — the best field tool in the suite.
Top issue
Zero consumers — no other surface reads site_marks; the walk reaches nothing (proposal R1), and the every-tap photo re-upload is the top mobile load drag.

status.html 25.8KB HALF

Role
Three hand-drawn SVG views: Operations map, Design-engine map, "Where we stand" roadmap, with live/planned color claims.
Links out
index.html; +apps.js switcher (itself a switcher target twice: Status Board, System Map).
Data
HARDCODED — fully hand-authored SVG/text; no fetch, nothing generated.
State
HALF — heavily linked-to, but content is a static snapshot whose green/amber "live/planned" claims drift the moment anything ships.
Top issue
Hand-authored status masquerading as a live board; needs a date stamp or generation from real data.

steward.html 6.3KB ORPHAN

Role
Equipment/setup task board (mower, truck, trailer, uniforms) + system build checklist.
Links out
index.html, tel: ×3; +apps.js switcher.
Data
HARDCODED.
State
ORPHAN — hand-authored June snapshot; not linked from anywhere despite exec pages calling it "live".
Top issue
Overlaps action-plan.html; two competing to-do surfaces, both stale differently.

sun-sweep.html 40.6KB SOLID

Role
Heavy client-side sun geometry — sweeps sun position over the mined canopy/height grid (scorch, winter light, boundary shade).
Links out
/index.html (fixed this pass — was /hub.html, the retired launcher).
Data
/api/grid (canopy/height/parcel rasters); default id HARDCODED to Vicente's UUID.
State
SOLID (linked from brain, urth-report).
Top issue
Sole nav link pointed at retired hub.html — fixed this pass (→ index.html).

sun3d.html 12.8KB SOLID

Role
Three.js "shape of the light" 3D visualization of the conditions grid.
Links out
index.html, brain.html?tab=reg.
Data
/api/c?e=grid (cached grid endpoint); no default id (empty state if none).
State
SOLID (linked from brain, properties).
Top issue
none.

supplier-map.html 1.0KB SOLID

Role
Thin iframe wrapper (not a redirect) embedding the external app urth-supplier-map.vercel.app, with floating nav.
Links out
iframe → urth-supplier-map.vercel.app (ext); +apps.js floating nav.
Data
External Vercel app.
State
SOLID (linked from map.html, suppliers.html).
Top issue
Supplier data lives in a separate deploy, invisible to this repo.

suppliers.html SOLID

Role
Full supplier directory — 86 vendors with prices-visibility notes, call list, map link.
Links out
index, supplier-map, files; +apps.js switcher.
Data
Supabase suppliers.
State
SOLID.
Top issue
One ~19,500px scroll; procurement.html is the paginated replacement candidate (P4-4), pending acceptance.

today.html SOLID

Role
DS-shell dashboard — Lead Inbox (honest unwired state) + read-only registry feed.
Links out
Shell sidebar/bottombar (properties, brain?tab=est, designer, procurement, files, reviews-inbox, status, new-lead, index).
Data
Read-only urth_properties feed; lead inbox truthfully empty until P1 tables exist.
State
SOLID — new front layer (was a live 404 until this walk; shipped in 9efd7deb).
Top issue
Waiting on persistence (R3) to have anything real to show in the inbox.

tree-sources.html 6.8KB ORPHAN

Role
Diagnostic comparing tree-detection sources (2025 county aerial, infrared, 2014 land cover, our terrain-mine) for two properties.
Links out
index.html.
Data
Miami-Dade ArcGIS imagery servers (ext) + /api/measured + /api/terrain-mine; two properties HARDCODED (Stephanie, Vicente).
State
ORPHAN — dev/diagnostic page, not linked (also absent from the given file list; it exists on main).
Top issue
Hardcoded property pair; useful R&D but invisible.

urth-report.html 74.0KB SOLID

Role
THE live client-facing Property Report — full measured read (18-step pipeline), with self-documenting spec footer.
Links out
index.html, 3d.html?id, massing.html?id, sun-sweep.html?id, /api/planting-plan JSON; +apps.js switcher.
Data
/api/grid spine + /api/measured, /api/render, terrain-mine-derived layers.
State
SOLID — the known-live report surface (linked from brain, client-file, client-map, properties, today, workspace).
Top issue
none (it's the standard the other three report pages should be measured against).

wiring-map.html SOLID

Role
The hosted cold review — per-surface wiring + 8 dead-ends, 11 client-trust decision holes, external-API audit, slow-load top 5.
Links out
home, blueprint, the surfaces it audits.
Data
HARDCODED findings (a written review, dated).
State
SOLID — new front layer.
Top issue
A snapshot by nature — findings must be struck through as fixes land or it becomes another stale status page.

workspace.html 19.1KB ORPHAN

Role
All-in-one property workspace: site analysis, design links, deliverables (CAD SVG/DXF), and a client-record editor.
Links out
index.html, 3d.html?id, designer.html?id, library.html, urth-report.html?id, /api/blueprint, /api/dxf; +apps.js switcher.
Data
Supabase `urth_properties` (client_record upsert), /api/grid, solar, solar-map, terrain-mine, planting-plan; writes localStorage `urth_client_`.
State
ORPHAN — fully built and wired, but nothing links in; functionally superseded by the brain + urth-report + client-file trio.
Top issue
A working page with zero inbound links — either promote it into the switcher or retire it before it drifts.

Summary lists

Orphans — no inbound link from any page (switcher included)

brochure_v2 · card · exec-summary · ingest · orlando · orlando-exec · orlando-letter · plan · property-report · report · reports · rev (deliberate — entered via the reviews.urthlandscaping.com host redirect) · steward · tree-sources · workspace. Near-orphans: hub (only sun-sweep's stale link, redirected away — fixed this pass) and home (only wiring-map links to it; index.html, the real hub, does not).

Broken by function (not by file)

No page links to a nonexistent file after the 9efd7deb fix. Functionally broken instead: review.html's placeholder share buttons (YOUR_LAWNSTARTER_PROFILE / YOUR_ANGI_ID / YOUR_YELP_ID) · rev.html's GOOGLE_REVIEW_URL="" (5-star reviewers never reach Google) · sun-sweep's ← Apps → retired hub.html (fixed this pass → index.html) · map.html's single hardcoded My Maps mid.

Legacy / stub roll-up

Superseded: hub (→index) · report + property-report (→urth-report) · reports (→suppliers) · brochure_v2 + proposal (old data.js P01–P13 demo system) · workspace (works, but duplicated by brain + urth-report + client-file). Hand-authored snapshots posing as live: status, exec-summary, orlando ×3, steward, reports ("updated automatically" is false), action-plan's June seed. Prototypes: ingest (one hardcoded address, localStorage-only) · card (bypassed by .vcf redirects) · tree-sources (diagnostic, invisible).