← back to Nationalrealestate
docs: update PARCEL-COVERAGE.md — 28 counties / 6.6M parcels, 11 states, west-coast pipeline (TK-5/TK-16)
6ba57b9dec5401b7378638c2118ecd952a2393b5 · 2026-07-29 04:18:04 -0700 · steve@designerwallcoverings.com
Files touched
Diff
commit 6ba57b9dec5401b7378638c2118ecd952a2393b5
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date: Wed Jul 29 04:18:04 2026 -0700
docs: update PARCEL-COVERAGE.md — 28 counties / 6.6M parcels, 11 states, west-coast pipeline (TK-5/TK-16)
---
PARCEL-COVERAGE.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 69 insertions(+), 7 deletions(-)
diff --git a/PARCEL-COVERAGE.md b/PARCEL-COVERAGE.md
index a57e73d..b620f84 100644
--- a/PARCEL-COVERAGE.md
+++ b/PARCEL-COVERAGE.md
@@ -7,6 +7,39 @@ LA reads in place from CRCP's SQLite (`source_kind='sqlite'`); every other
covered county lives in the generic `parcel` PG table (`source_kind='pg'`,
migration 004, adapters in `src/ingest/parcels/`).
+## Live coverage snapshot (2026-07-29) — 6.6M parcels, 28 counties, 11 states
+
+Coverage has expanded significantly via the ArcGIS-sales pipeline (arcgis_sales.ts)
+and dedicated adapters. The hourly loop (`src/jobs/hourly_loop.ts`) runs these
+ingests continuously. Current state from `parcel` + `ingest_cursor` tables:
+
+| State | County (FIPS) | Rows | Status | Notes |
+|---|---|---|---|---|
+| AZ | Maricopa (04013) | 874,899 | ✅ Complete | Phoenix metro; free priced deeds (ArcGIS) |
+| CA | Los Angeles (06037) | 2,427,010 | ✅ Complete | CRCP SQLite; no owner/price |
+| CA | Sonoma (06097) | 135,722 | ✅ Complete | Free priced deeds (ArcGIS) |
+| CA | Alameda (06001) | 54,467 | 🔄 Partial | 187k total; free priced deeds (ArcGIS) |
+| CA | San Diego (06073) | 16,422+sweep | 🔄 In progress | Poway done; county-wide sweep at 2k/1.09M |
+| CO | Statewide (08001) | 122,000 | 🔄 In progress | 1.12M total; composite ArcGIS |
+| FL | Miami-Dade (12086) | 937,248 | ✅ Complete | Owner, zoning, 3 sales/parcel |
+| FL | Palm Beach (12099) | 1,000 | 🔄 Stub | 43k total; pagination in progress |
+| GA | Fulton (13121) | ~373,000 | ✅ Complete | Atlanta; owner, address |
+| IL | Cook (17031) | 1,863,530 | ✅ Complete | Chicago; owner, assessed value |
+| NC | Wake (37183) | 437,115 | ✅ Complete | Raleigh; owner, assessed, sale history |
+| NY | 5 boroughs (36005/36047/36061/36081/36085) | 858,602 | ✅ Complete | MapPLUTO; owner, zoning |
+| OH | Franklin (39049) | 122,047 | ✅ Complete | Columbus; owner, sale 2020-2023 |
+| OR | Portland tri-county (41051/41067/41005) | 41,000 | 🔄 Partial | Oregon Metro RLIS; 428k total |
+| OR | Deschutes (41017) | 59,032 | ✅ Complete | Bend |
+| OR | Marion (41047) | 2,000 | 🔄 Stub | 96k total |
+| OR | Klamath (41035) | 1,000 | 🔄 Stub | 38k total |
+| TX | Tarrant (48439) | ~714,982 | ✅ Complete | Fort Worth; owner, market value |
+| TX | Bexar (48029) | ~721,005 | ✅ Complete | San Antonio; owner, address |
+| UT | Salt Lake (49035) | 391,370 | ✅ Complete | Market value; no owner/price |
+| WA | King (53033) | 628,417 | ✅ Complete | Seattle; full deed history w/ prices |
+| WA | Thurston (53067) | 80,124 | ✅ Complete | Olympia; free priced deeds |
+| WA | Yakima (53077) | 1,921 | 🔄 Stub | 56k total |
+| WA | Spokane (53063) | 500 | 🔄 Stub | 146k total |
+
## Covered counties
| County (FIPS) | Rows | Source | Refresh | Fills |
@@ -27,7 +60,7 @@ migration 004, adapters in `src/ingest/parcels/`).
| Target | Verdict | Detail |
|---|---|---|
-| Maricopa, AZ (04013) | **GATED** | mcassessor.maricopa.gov "file/home" download center is an SPA; guessed bulk URLs (e.g. `/file/home/MC_Parcels.zip`) return the HTML app, real downloads sit behind a registration/agreement form. Not open-bulk → skipped per rules. |
+| Maricopa, AZ (04013) | **DONE (2026-07-29 via ArcGIS)** | Previously marked GATED (the mcassessor.maricopa.gov SPA download center is registration-gated). Subsequently landed via ArcGIS FeatureServer adapter (arcgis_sales.ts) — 874,899 parcels, full owner + deed + price. See live coverage table above. |
| LA ownership enrichment | **ABSENT (by policy)** | data.lacounty.gov Socrata is DEAD (redirects to hub.arcgis.com/legacy — URL drift). The live public layer `public.gis.lacounty.gov/.../LACounty_Cache/LACounty_Parcel/MapServer/0` exposes 92 fields — situs, use, beds/baths/sqft (5 bldgs), roll values, legal desc, CENTER_LAT/LON — but **no owner-name field anywhere**. LA County excludes owner names from public bulk data. |
| LA zoning enrichment | **ABSENT (city-scoped)** | No zoning field in the county parcel layer. ZIMAS zoning is City-of-LA GIS only (doesn't cover the other 87 cities); deferred, not rabbit-holed. Upgrade path noted: the county layer's CENTER_LAT/LON could geocode LA parcels (map precision parcel-level) — 2.4M features at maxRecordCount=1000 ≈ 2.4k requests, future pass. |
| NYC DCP zip (bytes of the big apple) | **URL drift** | `s-media.nyc.gov/.../nyc_pluto_25v{1,2}_csv.zip` → 404. Socrata `64uk-42ks` is the stable path (858,602 rows verified vs ~850k expected). |
@@ -53,14 +86,43 @@ migration 004, adapters in `src/ingest/parcels/`).
## Sale-history depth
-Only King ships true sale records this pass (EXTR_RPSale deed chain, 10 most
-recent priced sales per parcel in `parcel.extra.sales`). NYC's equivalent is
-ACRIS (open, large) — queued as the next history enrich. Cook sale prices live
-with the Recorder (paid/bulk-request) — pending. LA recording date only.
+| County | History detail | Record count |
+|---|---|---|
+| King WA | EXTR_RPSale deed chain, 10 most recent priced sales per parcel in `parcel.extra.sales` | 536k parcels with history |
+| Miami-Dade FL | Up to 3 real sales each with price+grantor+grantee+deed → `parcel_event` rows, dates to 2025 | 2.06M parcel_event rows |
+| Wake NC | Real sale price+date+deed per parcel (355k events), current to 2024+ | 355k events |
+| Franklin OH | Sale date+price window 2020–2023 (fixed window from the FileGDB TaxParcelSale layer) | 122k parcels |
+| Tarrant TX | Deed/ownership-change date only — no price in the public view | 99% coverage |
+
+NYC ACRIS (open, large) is queued as the next priced-history enrich. Cook sale
+prices live with the Recorder (paid/bulk-request) — pending. LA: recording date only.
+
+## West-coast extension candidates (TK-16)
+
+Active pipeline:
+- **CA/San Diego county** — in-progress sweep via `ingestSanDiego('county')`, 2k/1.09M
+- **CO statewide** — in-progress, 122k/1.12M
+
+Next candidates (all have open ArcGIS or bulk feeds):
+| County | Pop. | Source hint |
+|---|---|---|
+| Riverside CA (06065) | 2.5M | SoCal ArcGIS FeatureServer |
+| Sacramento CA (06067) | 1.6M | county GIS open data |
+| Santa Clara CA (06085) | 1.9M | county Assessor ArcGIS |
+| San Bernardino CA (06071) | 2.2M | county GIS |
+| Contra Costa CA (06013) | 1.2M | county open data (Socrata) |
+| Multnomah OR (41051) | 820k | already in RLIS sweep |
+| Clark WA (53011) | 520k | county Assessor ArcGIS |
+| Snohomish WA (53061) | 870k | county open data |
+| Pierce WA (53053) | 950k | county Assessor ArcGIS |
## Refresh
-`npm run ingest:parcels -- <nyc|king|cook>` — each adapter is idempotent
-(upsert on `(county_fips, source_id)`), opens/closes an `ingest_runs` row, and
+`npm run ingest:parcels -- <adapter>` where adapter names are registered in
+`src/ingest/parcels/engine.ts`. Each adapter is idempotent (upsert on
+`(county_fips, source_id)`), opens/closes an `ingest_runs` row, and
re-registers `parcel_source` counts. Failures close the run `failed` (red),
never silent.
+
+The hourly loop (`src/jobs/hourly_loop.ts`, launchd or pm2) re-drives in-progress
+ingests; check `ingest_cursor` table for per-source pagination state.
← c783195 chore: version bump v0.16.1 (session close — nyc_pluto 08P01
·
back to Nationalrealestate
·
auto-save: 2026-07-30T07:45:45 (1 files) — cap_search.cjs a453373 →