← 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
M collectors/discovery/src/index.tsM scripts/build-loop.sh
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 →