[object Object]

← back to Commercialrealestate

condos-report: overlay persistent broker cache so weekly refresh can't wipe per-listing broker data

16720d94e0490e8f027215aa811de58ed007272b · 2026-08-03 08:52:06 -0700 · Steve Abrams

Files touched

Diff

commit 16720d94e0490e8f027215aa811de58ed007272b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Aug 3 08:52:06 2026 -0700

    condos-report: overlay persistent broker cache so weekly refresh can't wipe per-listing broker data
---
 scripts/condos-report.js | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/scripts/condos-report.js b/scripts/condos-report.js
index 4148bb0..0689ba1 100644
--- a/scripts/condos-report.js
+++ b/scripts/condos-report.js
@@ -10,6 +10,21 @@ const ROOT = path.join(__dirname, '..');
 const raw = JSON.parse(fs.readFileSync(path.join(ROOT, 'data', 'condos-redfin.json'), 'utf8'));
 const all = Array.isArray(raw) ? raw : (raw.condos || raw.listings || raw.results || Object.values(raw).find(Array.isArray) || []);
 
+// Overlay the persistent per-listing broker cache (data/condo-brokers.json) by id, so the email stays
+// enriched even after a weekly refresh rewrites condos-redfin.json. Same source the viewer overlays.
+try {
+  const cb = JSON.parse(fs.readFileSync(path.join(ROOT, 'data', 'condo-brokers.json'), 'utf8'));
+  for (const c of all) {
+    const b = cb[c.id]; if (!b || !b.broker_name) continue;
+    c.broker_name = b.broker_name;
+    if (b.firm_name) c.firm_name = b.firm_name;
+    if (b.broker_dre) { c.broker_dre = b.broker_dre; c.dre_url = (b.dre && b.dre.dre_url) || `https://www2.dre.ca.gov/PublicASP/pplinfo.asp?License_id=${b.broker_dre}`; }
+    if (b.agent_phone) c.agent_phone = b.agent_phone;
+    if (b.office_phone) c.office_phone = b.office_phone;
+    if (b.dre) { c.broker_dre_expiration = b.dre.dre_expiration; c.responsible_broker = b.dre.responsible_broker || c.responsible_broker; }
+  }
+} catch (_) { /* no broker cache yet — brokerLine falls back to a Redfin deep link */ }
+
 // Unwarrantable = fha_expired only.
 const expired = all.filter(c => c.warrantable_status === 'fha_expired');
 // Rank: most accessible discount plays first (lowest price), tie-break lowest $/sqft.

← 7faca57 condos: per-listing broker/firm/DRE (Redfin+Browserbase scra  ·  back to Commercialrealestate  ·  auto-save: 2026-08-03T08:52:19 (1 files) — data/condos-repor 3a288f6 →