[object Object]

← back to Commercialrealestate

CRCP: graceful-degrade /api/brokers/linkedin + /api/segments to 200+unavailable on DB error (match /api/leads/top; clean prod console)

aeb002825872be97f87dbbd27e74eb0e42bced2c · 2026-07-25 10:53:34 -0700 · Steve Abrams

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

Files touched

Diff

commit aeb002825872be97f87dbbd27e74eb0e42bced2c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Jul 25 10:53:34 2026 -0700

    CRCP: graceful-degrade /api/brokers/linkedin + /api/segments to 200+unavailable on DB error (match /api/leads/top; clean prod console)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 scripts/serve.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/serve.js b/scripts/serve.js
index 001ccf7..aa1859b 100644
--- a/scripts/serve.js
+++ b/scripts/serve.js
@@ -290,7 +290,7 @@ app.get('/api/brokers/linkedin', async (req, res) => {
       people, total: people.length, withProfile: people.filter(p => p.linkedin).length,
       note: 'Manual follow list — open each profile and follow in LinkedIn. No automation (LinkedIn TOS).'
     });
-  } catch (e) { res.status(502).json({ error: String(e.message).split('\n')[0], people: [] }); }
+  } catch (e) { res.json({ people: [], unavailable: true, error: String(e.message).split('\n')[0] }); }
 });
 
 // ALL brokers/agents with EVERY field — backs the sortable/searchable broker grid+list (broker-grid.html).
@@ -1113,7 +1113,7 @@ app.get('/api/segments', async (req, res) => {
             : seg.src === 'assumable' ? 'HEURISTIC estimate — likely-assumable FHA/VA, NOT title-verified. Verify in title records before relying on it.' : null });
     }
     res.json({ segments: out });
-  } catch (e) { res.status(502).json({ error: String(e.message).split('\n')[0], segments: [] }); }
+  } catch (e) { res.json({ segments: [], unavailable: true, error: String(e.message).split('\n')[0] }); }
 });
 app.get('/api/segment', async (req, res) => {
   if (!brokerdb) return res.status(503).json({ error: 'DB unavailable' });

← 44f86d6 CRCP: scrub persona flag_reason twin in broker-history-pilot  ·  back to Commercialrealestate  ·  CRCP: harden serve.js — atomic brokers-snapshot write (H3) + 379ab20 →