← 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 ("460 SW 21st Rd").
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 the 460 SW 21st Rd 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 (460 SW 21st Rd, 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).