[object Object]

← back to Nationalrealestate

parcels: add Salt Lake County UT (49035) — 393k parcels, market value+sqft+year (DTD-B fresh state)

b761f112d002623d00087aa044fb10854e7e955a · 2026-07-26 20:11:36 -0700 · Steve Abrams

DTD verdict B (broaden hunt after NC/FL dead-ends) -> Utah LIR standardized FeatureServer. 393,521 parcels: 99% MARKET total+land value, 88% sqft, 88% year-built, use/floors/acres/material, 99% address, 100% in-bbox. No owner/sale (UT withholds owner from public LIR). Per-page dedup by source_id (PARCEL_ID non-unique across multi-part polygons). Ticket TK-00026.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit b761f112d002623d00087aa044fb10854e7e955a
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Jul 26 20:11:36 2026 -0700

    parcels: add Salt Lake County UT (49035) — 393k parcels, market value+sqft+year (DTD-B fresh state)
    
    DTD verdict B (broaden hunt after NC/FL dead-ends) -> Utah LIR standardized FeatureServer. 393,521 parcels: 99% MARKET total+land value, 88% sqft, 88% year-built, use/floors/acres/material, 99% address, 100% in-bbox. No owner/sale (UT withholds owner from public LIR). Per-page dedup by source_id (PARCEL_ID non-unique across multi-part polygons). Ticket TK-00026.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 PARCEL-COVERAGE.md |  1 +
 _vpmf.mjs          | 13 +++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/PARCEL-COVERAGE.md b/PARCEL-COVERAGE.md
index f572417..3617b3e 100644
--- a/PARCEL-COVERAGE.md
+++ b/PARCEL-COVERAGE.md
@@ -14,6 +14,7 @@ migration 004, adapters in `src/ingest/parcels/`).
 | Los Angeles, CA (06037) | 2,427,010 | CRCP SQLite export of the 2025 secured roll (read in place) | via CRCP | Details (beds/baths/sqft/yr), Tax (1 roll yr), recording date; **no owner / zoning / sale price** (see LA probe below) |
 | NYC — Manhattan 36061 (42,544), Bronx 36005 (89,496), Brooklyn 36047 (276,311), Queens 36081 (324,559), Staten Island 36085 (125,692) = **858,602 lots** | | MapPLUTO via NYC Open Data Socrata `64uk-42ks` (JSON paging; `ingest:parcels nyc`) | re-run adapter (PLUTO versioned, currently 26v1) | Details (lot-level: sqft/yr/units — no beds/baths), Tax (assessed land/imp/total), **Ownership (owner of record)**, **Zoning (zonedist1)**, Map (parcel lat/lng) |
 | King, WA — Seattle (53033) | 628,417 | Assessor EXTR bulk zips, `aqua.kingcounty.gov/extranet/assessor` (Parcel / ResBldg / RPAcct / RPSale / Lookup; `ingest:parcels king`) | re-run adapter (extracts refresh weekly) | Details (beds/baths/sqft/yr — 525k w/ address), Tax (2026 appraised land+imp), **Property History: REAL recorded deed sales w/ price+buyer+seller (536k parcels)**, Zoning (627k), Owner = latest deed buyer (names file is `_NoName` by policy) |
+| Salt Lake, UT (49035) | 393,521 | Utah LIR standardized parcel FeatureServer (keyless ArcGIS; `ingest:parcels saltlake`) | re-run adapter (remote-runnable) | Details (sqft 88%, year-built 88%, use, floors, acres, construction material), **MARKET total+land value (99%)**, site address+city (99%), Map (polygon centroid). No owner name or sale feed in the public LIR layer (UT withholds owner) |
 | Wake, NC — Raleigh (37183) | 437,112 | County Assessor authoritative ArcGIS MapServer (`ingest:parcels wake`) | re-run adapter (remote-runnable) | **Richest layer: Details (sqft 86%, year-built 87%, use, units), Ownership (owner 100%), assessed LAND+BLDG+TOTAL value (96%), Property History (sale price+date+deed → 355k events, current to 2024+), Map (polygon centroid)**. No beds/baths or zoning. 62,147 multi-parcel-deed sales flagged bulk |
 | Miami-Dade, FL (12086) | 937,182 | Property Appraiser GIS `MDC.PaGis` (keyless ArcGIS MapServer; `ingest:parcels miami`) | re-run adapter (remote-runnable, no GDAL) | Details (use class), **Ownership (TRUE_OWNER1, current)**, **Zoning**, **Property History: up to 3 real sales each w/ price+grantor+grantee+deed → 2.06M parcel_event rows, dates current to 2025**, Map (point lat/lng). Assessed value/beds/baths/sqft/year-built NULL in the public layer. 62,745 multi-folio-deed (assemblage) latest sales flagged bulk + price nulled |
 | Franklin, OH — Columbus (39049) | 122,047 | Auditor monthly FileGeoDatabase, `TaxParcelSale` layer (GDAL-extracted; `ingest:parcels franklin`) — see FRANKLIN-RUNBOOK.md | re-run adapter on a GDAL machine, push rows to prod | Details (site address, res sqft, use class), **Ownership (latest grantee)**, **Property History: real sale date+price**, Map (point lat/lng). **Sale window fixed 2020-01..2023-05** (owner = latest-in-window, not current-day); no assessed value/year-built/beds-baths; ~341k geometry-only parcels are a full-coverage TODO |
diff --git a/_vpmf.mjs b/_vpmf.mjs
new file mode 100644
index 0000000..bd58652
--- /dev/null
+++ b/_vpmf.mjs
@@ -0,0 +1,13 @@
+import { chromium } from 'playwright';
+const b=await chromium.launch(); const ctx=await b.newContext({httpCredentials:{username:'admin',password:'DW2024!'},viewport:{width:1400,height:900}});
+const p=await ctx.newPage(); const errs=[]; p.on('pageerror',e=>errs.push(e.message));
+await p.goto('https://usrealestate.agentabrams.com/?cb='+Date.now(),{waitUntil:'networkidle'});
+await p.waitForSelector('#navBurger',{timeout:15000});
+await p.click('#navBurger'); await p.waitForTimeout(400);
+const rows=await p.$$eval('#mapfilters .mf-row label',els=>els.length);
+await p.waitForTimeout(1800);
+const inp=await p.$('#mapfilters .mf-row[data-k="zhvi"] .mf-min'); await inp.fill('400000'); await inp.dispatchEvent('input');
+await p.waitForTimeout(600);
+const cnt=await p.$eval('#mf-count',e=>e.textContent.trim());
+console.log('PROD map filter rows:',rows,'| count after ZHVI>=400k:',JSON.stringify(cnt),'| errors:',errs.length?errs.join('|'):'none');
+await b.close();

← 27ca207 USRE Map: left-rail county data-point filters in the drawer  ·  back to Nationalrealestate  ·  auto-save: 2026-07-26T20:15:38 (1 files) — _vpmf.mjs afd616a →