[object Object]

← back to Commercialrealestate

TK-10709: remove Crexi profile link-out from broker page + restore 6-scroll grid sweep

d7cdfed23e25dbbba178b2b760885e11b82643f8 · 2026-08-25 16:37:56 -0700 · Steve Abrams

broker.html: drop the 'Crexi profile →' link-out (spec hard rule: ingest-and-
display-as-ours, never link users out to Crexi/LoopNet). Local only; prod
deploy stays gated. scraper: 6 scrolls for deeper grid card coverage.

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

Files touched

Diff

commit d7cdfed23e25dbbba178b2b760885e11b82643f8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Aug 25 16:37:56 2026 -0700

    TK-10709: remove Crexi profile link-out from broker page + restore 6-scroll grid sweep
    
    broker.html: drop the 'Crexi profile →' link-out (spec hard rule: ingest-and-
    display-as-ours, never link users out to Crexi/LoopNet). Local only; prod
    deploy stays gated. scraper: 6 scrolls for deeper grid card coverage.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 public/broker.html              | 5 +++--
 scripts/scrape-crexi-loopnet.js | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/public/broker.html b/public/broker.html
index 7085596..bd78780 100644
--- a/public/broker.html
+++ b/public/broker.html
@@ -167,8 +167,9 @@ function render(b){
     b.email   ?`<div class="kv"><span class="ic">✉️</span><a href="mailto:${esc(b.email)}">${esc(b.email)}</a></div>`:'',
     b.website ?`<div class="kv"><span class="ic">🌐</span><a href="${esc(b.website)}" target="_blank" rel="noopener noreferrer">${esc(String(b.website).replace(/^https?:\/\//,'').replace(/\/$/,''))}</a></div>`:'',
     b.linkedin?`<div class="kv"><span class="ic">💼</span><a href="${esc(b.linkedin)}" target="_blank" rel="noopener noreferrer">LinkedIn profile</a></div>`:'',
-    b.office_addr?`<div class="kv"><span class="ic">🏢</span><span>${esc(b.office_addr)}</span></div>`:'',
-    b.crexi_id?`<div class="kv"><span class="ic">🔗</span><a href="https://www.crexi.com/profile/-${esc(b.crexi_id)}" target="_blank" rel="noopener noreferrer">Crexi profile →</a></div>`:''
+    b.office_addr?`<div class="kv"><span class="ic">🏢</span><span>${esc(b.office_addr)}</span></div>`:''
+    // TK-10709: removed the "Crexi profile →" link-out — spec hard rule is ingest-and-display-as-ours,
+    // never link users out to Crexi/LoopNet on any CRCP page.
   ].filter(Boolean).join('') || '<div class="empty">No public contact info has been enriched for this broker yet.</div>';
 
   const badges=[
diff --git a/scripts/scrape-crexi-loopnet.js b/scripts/scrape-crexi-loopnet.js
index 2cd1867..3f087b8 100644
--- a/scripts/scrape-crexi-loopnet.js
+++ b/scripts/scrape-crexi-loopnet.js
@@ -77,7 +77,7 @@ const cleanAddr = a => a && a.replace(/^0+\s+/, '').replace(/^[^0-9]*(\d)/, '$1'
 
 // ── STEP 1: search grid -> [{url,id,price,address,cap}]. Scroll the SPA to load lazy cards. ───────
 async function extractCards() {
-  for (let i = 0; i < 4; i++) { oc(['browser', 'evaluate', '--fn', '() => window.scrollTo(0, document.body.scrollHeight)']); await sleep(1200); }
+  for (let i = 0; i < 6; i++) { oc(['browser', 'evaluate', '--fn', '() => window.scrollTo(0, document.body.scrollHeight)']); await sleep(1200); }
   const raw = ocEval(`() => {
     const out=[]; const seen=new Set();
     for (const a of document.querySelectorAll('a[href*="/properties/"]')) {

← e126de6 auto-data-snapshot: 2026-08-25T16:26:17 (2 data files) — dat  ·  back to Commercialrealestate  ·  TK-10709: dedup across ALL sources, not just crexi b048ea2 →