← 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
M scripts/condos-report.js
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 →