[object Object]

← back to Homesonspec

auto-save: 2026-07-28T06:58:06 (2 files) — collectors/discovery/src/index.ts scripts/build-loop.sh

887b38f5e995eb90c1b59ebb46aa59cf2fc88059 · 2026-07-28 06:58:13 -0700 · Steve Abrams

Files touched

Diff

commit 887b38f5e995eb90c1b59ebb46aa59cf2fc88059
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Jul 28 06:58:13 2026 -0700

    auto-save: 2026-07-28T06:58:06 (2 files) — collectors/discovery/src/index.ts scripts/build-loop.sh
---
 collectors/discovery/src/index.ts | 9 +++++++--
 scripts/build-loop.sh             | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/collectors/discovery/src/index.ts b/collectors/discovery/src/index.ts
index ee82ca1..19af95b 100644
--- a/collectors/discovery/src/index.ts
+++ b/collectors/discovery/src/index.ts
@@ -41,6 +41,11 @@ const num = (v: unknown): number | null => {
   return Number.isFinite(n) && n > 0 ? n : null;
 };
 const str = (v: unknown): string | null => (v == null ? null : String(v).trim() ? String(v).trim() : null);
+// lat/lon: preserve sign (US longitudes are negative) — never strip "-" or reject <0.
+const coord = (v: unknown): number | null => {
+  const n = typeof v === "number" ? v : typeof v === "string" ? Number(v) : NaN;
+  return Number.isFinite(n) && n !== 0 ? n : null;
+};
 const slugify = (s: string) => (s || "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
 
 interface Community {
@@ -158,8 +163,8 @@ function extractCommunities(page: RawPage): ExtractionOutput {
         zip: fv(str(c.zip), str(c.zip), page.url),
         county: fv(str(c.county), str(c.county), page.url),
         metro: fv<string>(null, null, page.url),
-        lat: fv(num(c.latitude), str(c.latitude), page.url),
-        lon: fv(num(c.longitude), str(c.longitude), page.url),
+        lat: fv(coord(c.latitude), str(c.latitude), page.url),
+        lon: fv(coord(c.longitude), str(c.longitude), page.url),
         hoaFeeMonthly: fv<number>(null, null, page.url),
         schoolDistrict: fv<string>(null, null, page.url),
         ageRestricted: fv<boolean>(null, null, page.url),
diff --git a/scripts/build-loop.sh b/scripts/build-loop.sh
index e2eb6b6..84213d5 100644
--- a/scripts/build-loop.sh
+++ b/scripts/build-loop.sh
@@ -51,7 +51,7 @@ while [ ! -f "$STOP" ] && [ "$sweep" -lt "$MAX_SWEEPS" ]; do
   done
   # drain enrichment queue
   for i in $(seq 1 40); do
-    rem=$(PSQL "select count(*) from \"Community\" where lat is not null and amenities is null;")
+    rem=$(PSQL "select count(*) from \"Community\" where lat is not null and lon is not null and amenities is null;")
     [ "${rem:-0}" -eq 0 ] && { LOG "enrich: queue drained"; break; }
     LOG "enrich pass $i: $rem left"
     NEARBY_LIMIT=40 npx tsx scripts/enrich-nearby.ts >/dev/null 2>&1

← eacead2 collectors: add David Weekley adapter (national; server-rend  ·  back to Homesonspec  ·  TK-10: add finish-tk10.sh turnkey go-live driver b319e2f →