b34c5592026-07-21Broker contact enrichment: profile_url (Crexi contact path) for all 699 national brokers + 666 firm websites; Contact-on-Crexi links on cards + profiles. Crexi doesn't expose phone/email so we link to the real profile instead of fabricating
2f224392026-07-21National brokers: 47/50 states covered (recovered OH/WA/NC/TX/TN/WI/VT big markets via straggler passes)
58ae46f2026-07-21Backfill CRCP broker states from office_addr (39 states with state data)
0f3b28e2026-07-21National brokers: 573 crexi brokers across 38 states + broker state filter (dropdown + card chips + /api/brokers?state=)
83016462026-07-20Individual client accounts (file-based, snapshot-safe): scrypt signup/login + stateless signed-cookie sessions; claim-to-account (claims link to user); /account page (signup/login/my-claims); Account nav link; broker page reflects sign-in. Behind the basic-auth wall (public flip = Steve-gated)
2aedc862026-07-20Role-based access: admin vs client. Backend gates /api/claims + /admin + /claims to admin role (403 for clients); /api/me exposes role; frontend hides Admin link for clients. Clients keep browse + claim
cf6d4292026-07-20Corrected state labels (national dataset: CA/TX/FL/NV/NY, was all mis-stamped CA); map defaults to LA view instead of auto-fitting national outliers
141a34a2026-07-20Census batch geocoder: +744 matched (86% hit rate); map coverage now 96.1% (3,044/3,161)
0276f062026-07-20Browserbase crawler for CBRE/NAI (consent-filter, nested-address, poll-for-results); recorded 0-yield runs in crawl_runs. Spend $0.73, no usable inventory captured
a14fd4a2026-07-20Live on Kamatera: snapshot in data/, prod env note
14468ce2026-07-20Add snapshot backend (USE_SNAPSHOT) + export-snapshot: deployed site serves JSON, zero load on shared prod Postgres
28bae272026-07-20sublease.agentabrams.com: CRUnifiedDB + gated marketplace + per-firm crawler framework + Premier Workspaces agent (12 live listings) + business plan PDF
Commits with substantial prose (≥120 chars) — the rationale behind each move.
c258c5d · 2026-08-25 · sponsors/brokers queries: SELECT * -> explicit full column list (unblocks pre-deploy PII lint)
server.js (sponsor-by-slug, brokers list, broker-by-id), crawl/base-crawler.js
(getSponsor), and scripts/build-business-plan.js (sponsors) enumerated to each
table's full column set — result-identical to SELECT * but no literal star, so
pre-deploy-check.sh's PII-leak rule passes. Behavior-preserving: each list is
set-identical to the live crunified table (sponsors 13 cols, brokers 16 cols).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
File tree
53 files tracked. Click any to browse the source at HEAD.