Parcela
Land sourcing and underwriting tool for the Hayden land team. Type any address in OR, ID, WA, or MT. See ownership, sale history, permits, zoning, constraints, and whether it pencils, on a live map. Live at hh-parcela.pages.dev.
Why we have it
The land team sources and screens deals by hand. The answers live across county GIS sites, municipal zoning codes, assessor rolls, MLS, and spreadsheets, and assembling them for one parcel is hours of work. Underwriting sits in one-off Acq Pack and DPACK files in SharePoint. There is no single place to see a parcel's full picture, and no way to scan thousands of parcels at once to find the few worth a call. Land basis is the largest lever on per-home profit, so faster, better-grounded sourcing has direct dollar value.
How it works
Owned Hayden data and free public data are pulled offline into local files, scored, and served as a map app. Some checks are also run live when a parcel is opened. Full source list in the next section.
flowchart TB
classDef src fill:#e7eef2,stroke:#2e5a6e,color:#1a2530;
classDef pub fill:#eaf2ec,stroke:#1f7a4d,color:#1a2530;
classDef proc fill:#f6ecd9,stroke:#b5731f,color:#1a2530;
classDef store fill:#efe7f2,stroke:#7a5a8e,color:#1a2530;
classDef app fill:#e7f0ea,stroke:#1f7a4d,color:#1a2530;
classDef dep fill:#e9edf0,stroke:#43525c,color:#1a2530;
classDef val fill:#eef5f0,stroke:#1f7a4d,color:#11402a,font-weight:600;
subgraph SRC["1 . Data sources"]
direction LR
s1["Owned Hayden data (Snowflake)
C1_ASSESSOR . C1_DEED . COMBINED_PERMITS
KOVA lot cost + home econ . KOVA lot sizes
MLS_LAND . GOLD underserved . LD bid prices"]:::src
s2["Free public data
county/state ArcGIS parcels + zoning . FEMA flood
USGS slope + hydro . USFWS wetland . EPA water
UGB . SSURGO . OSM land use . OR/ID Sec-of-State"]:::pub
s3["Builder dictionary
(vendored from Builder Name Resolution)"]:::src
end
proc["2 . Offline enrichment (Python extractors)
owner to builder labeling . 0 to 10 buildability+location score
killshot gates . constraints . comps . servicing"]:::proc
store[("3 . Local data
processed CSVs + property.db (SQLite, GCS-mounted)")]:::store
subgraph APP["4 . Served web app"]
direction LR
a1["Python HTTP server . /api/* JSON"]:::app
a2["Leaflet + Turf map UI . 11 pages
(live checks run on parcel open)"]:::app
end
dep["5 . Deploy: Google Cloud Run + Cloudflare proxy (login)"]:::dep
val["Any address returns owner, deeds, builder, permits,
zoning, constraints, score, and a max-land-basis underwrite.
Scan 10k+ parcels on a map. Surface ranked off-market deals."]:::val
s1 --> proc
s2 --> proc
s3 --> proc
proc --> store --> a1 --> a2 --> dep --> val
Every data source: what it is, where it comes from, why
live queried when a parcel is opened baked pulled offline into a local file and read at startup
| Source | Where it comes from | What it provides / why | |
| Owned Hayden data (Snowflake HH_ANALYTICS, pulled offline via sf-cli) |
| C1_ASSESSOR | Snowflake (ConstellationOne, licensed) | Vacant/ag parcels near 34 footprint towns: acres, land use, value, owner, absentee, tax-delinquent, lat/lon. Powers Off-Market, Deal Map, owner mailing. Also builds property.db. | baked |
| C1_DEED | Snowflake | Recorded sales. Land comps ($/acre), years-held tenure, and full buy/sell history in the universal lookup. | baked |
| COMBINED_PERMITS | Snowflake | Single-family permit activity by city, permit points (builder, date, location), and permit counts near each parcel. Powers Builder Activity and path-of-growth. | baked |
| KOVA_CONSTRUCTIONREPORT | Snowflake (Kova mirror) | Hayden's finished lot cost incl. land, and realized home economics, by city. The underwriting cost benchmark. | baked |
| KOVA lot sizes | Snowflake (one-time) | Hayden's real community-size distribution (median 44 lots) for the scale band and a Hayden-fit indicator. | baked |
| MLS_LAND | Snowflake | Active for-sale land listings, scored to price per buildable lot vs the Kova benchmark. | baked |
| GOLD underserved dashboard | Snowflake | Per-city underserved/overserved label, demand, supply, household growth. Powers the Market Opportunity ranking. | baked |
| LD bid prices | Hayden bids (offline) | Paid unit prices per Kova activity code, for the Unit Prices reference page. | baked |
| Builder identity (vendored from the Builder Name Resolution project) |
| builder master + builder_utils | builder_resolving_cc repo | Maps owner to parent builder. Drops Hayden-owned and competitor-owned land, labels ownership, and canonicalizes permit builder names. Same dictionary the Market Report uses. | baked |
| Zoning and regulatory |
| Scraped municipal code | City/county code sites (offline) | Single-family zoning standards (min lot, setbacks, height, density) for 33 of 34 jurisdictions, each with code section, source URL, and a confidence flag. | baked |
| OR DLCD / WA WAZA zoning | State ArcGIS | Zone designation and farm/forest flag (drives the farm/forest killshot). OR and WA only. | live + baked |
| OR UGB / WA UGA | State/city ArcGIS | Inside urban-growth-boundary flag. Core "served and entitleable" signal. | live + baked |
| Site constraints (free public services) |
| County/state parcel GIS | ArcGIS (OR 8 counties, WA, ID, MT) | The actual parcel boundary polygon for the site map and envelope. | live + cache |
| FEMA NFHL | FEMA | Flood zone at point (live), floodway centroid test (hard exclude), and floodplain-vs-boundary overlap (catches riverfront). | live + baked |
| USGS EPQS / 3DEP | USGS | Elevation and a slope estimate. Informational on the constraint panel. | live |
| USGS NHD | USGS | Distance to nearest river/lake. Demotes river-adjacent parcels in the score. | baked |
| USFWS NWI | USFWS | Mapped wetland present. Hard-constraint killshot. | live + baked |
| EPA water service areas | EPA | Public-water service area and system. The water half of "served and entitleable". | live + baked |
| USDA SSURGO soils | USDA Soil Data Access | Dominant soil, farmland class, drainage. Informational only. | live |
| NCES school districts | NCES EDGE | School district at the parcel. Informational only. | live |
| FEMA USA Structures | FEMA | Building footprints near the parcel. Drives the already-built killshot and the path-of-growth count. | baked |
| OpenStreetMap / Overpass | OSM | Institutional land use (cemetery, school, airport, industrial) to exclude, plus road frontage for the setback envelope. | live + baked |
| Owner contact and geocoding (free) |
| OR Sec-of-State + ID SOSBiz | State APIs | Unmasks the entity behind an LLC owner (registered agent, principal). OR and ID live; WA and MT are a cited link only. | live |
| US Census geocoder | Census | Turns a typed address into lat/lon for the lookup. | live |
| Firestore | Google Cloud | The shared team deal-pipeline (stage and note per parcel). | live |
What it does today (11 pages)
Find and explore
- Property Lookup. Any address returns assessor record, full sale history, nearby builders, live zone and constraints, owner contact, off-market flag, and the owner's other parcels (assemblage signal).
- Off-Market. Ranked vacant development-scale parcels not listed, with buy-box filters (state, county, acreage, distance, absentee, tax-delinquent).
- Listed Land. Active for-sale land scored to price per buildable lot.
- Deal Map. Off-market parcels mapped, fill by band, with an optional builder-permit overlay.
- Builder Activity. Recent permits grouped by builder and city.
Screen and decide
- Feasibility. Lot yield, binding rule, Kova cost benchmark, residual land value, comps, market, permits, and live constraints for any jurisdiction and acreage.
- Due Diligence. Per-parcel dossier: site/envelope map, ownership and signals, contact, value and yield, market, comps, live constraints, Hayden-fit.
- Pipeline. Shared team board, stage per parcel, server-persisted.
- Zoning Lookup, Unit Prices, Executive, Overview. Standards reference, paid unit prices, leadership rollup, and the landing index.
How it scores and underwrites
- Buildability + Location score, 0 to 10. Served and entitleable (4.0: UGB + public water), developable scale (2.5: acreage), path of growth (2.0: near town + nearby building), buildable land use (1.5). It deliberately does not score market demand, competition, or seller motivation. Those are filters, not score inputs.
- Killshot gates. Floodway or wetland caps the score; 100-year floodplain, farm/forest outside a UGB, structures already on the parcel, and river adjacency each demote it.
- Underwrite. Net developable acres to estimated lots (the lower of lot-size or density binds), finished lot cost from Kova, and max land basis = lot price minus dev cost minus target margin, per lot and total. Land comps give an implied land value.
- Bands: High at 8 or above, Medium at 6 or above.
Why it helps, and why it beats the current process
- Hours to seconds. One screen instead of assembling county GIS, zoning code, assessor, MLS, and spreadsheets by hand for each parcel.
- Deals the team would not otherwise see. It ranks every vacant development-scale parcel by buildability and motivated-seller signals, so the team works a list instead of waiting for listings.
- Grounded, not a black box. Every number is traceable to its source, and the tool never says to pursue a deal. It ranks evidence and the team decides.
- Cheap and owned. Runs on data Hayden already owns plus free public services, at about zero marginal cost. No paid land-sourcing subscription.
Why a web app, and not a Claude skill
Both exist, for different jobs. A skill like the Bid Spreader is ideal for a one-shot, structured task: drop in the contractor bids, get a finished Excel back. Parcela is a different shape of tool. It is map-first and exploratory. A web app is what allows interactive work across 10k+ parcels (pan, zoom, click, filter), shared instant access with no setup, and a product non-technical staff can use like Zillow. The two are complementary. Skills handle discrete jobs; Parcela is the always-on map the team works in.
How it connects to the rest of the stack
Reuses Builder Name Resolution. The owner-to-builder labeling vendors the same builder master and name-canonicalizer the Market Report uses, so Hayden-owned land (for example HHIF) and competitor-owned land are flagged consistently.
Same owned Snowflake data the analytics stack runs on (assessor, deeds, permits, Kova), pulled offline so the app stays fast and cheap.
How it can expand
- Parcel-polygon constraints. Auto-fill the unbuildable percentage from flood, slope, and wetland overlap rather than a point test.
- Owner contact for WA and MT once access allows.
- Carry a screened parcel straight from the map into underwriting and the pipeline.
- Refresh the offline pulls on a schedule (Prefect) so the data stays current with no manual step.