[object Object]

← back to Re Flyer Aggregator

probe v2: real firm-domain join + live discovery findings on Miami closed deals; verdict = Tier-2 recaps primary, trade-press links secondary, broker-OMs deferred (TK-10708)

f0a5cd168a4647f9ff94b21009789c074addbd03 · 2026-08-19 09:07:15 -0700 · Steve Abrams

Files touched

Diff

commit f0a5cd168a4647f9ff94b21009789c074addbd03
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Aug 19 09:07:15 2026 -0700

    probe v2: real firm-domain join + live discovery findings on Miami closed deals; verdict = Tier-2 recaps primary, trade-press links secondary, broker-OMs deferred (TK-10708)
---
 .gitignore                                   |   2 +
 out/provenance-2026-08-19T15-59-26-807Z.json | 452 ---------------------------
 out/provenance-findings.md                   |  34 ++
 out/provenance-report.md                     |  45 +--
 scripts/provenance-probe.mjs                 | 117 +++----
 5 files changed, 109 insertions(+), 541 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9a03dc8..519f80f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,5 @@ build/
 out/*.pdf
 out/*.html
 data/harvest-*.json
+out/provenance-worklist-*.json
+out/provenance-2*.json
diff --git a/out/provenance-2026-08-19T15-59-26-807Z.json b/out/provenance-2026-08-19T15-59-26-807Z.json
deleted file mode 100644
index a3fdadf..0000000
--- a/out/provenance-2026-08-19T15-59-26-807Z.json
+++ /dev/null
@@ -1,452 +0,0 @@
-[
-  {
-    "sale_date": "2026-07-07",
-    "sale_price": 3500000,
-    "ctype": "retail",
-    "address": "3721 TRYON RD",
-    "city": "RALEIGH",
-    "county_fips": "37183",
-    "doc_number": "020278-02267",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"3721 TRYON RD\" OR \"3721 TRYON RD RALEIGH\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-30",
-    "sale_price": 4586000,
-    "ctype": "industrial",
-    "address": "2065 NW 7 AVE",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35389-3561",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"2065 NW 7 AVE\" OR \"2065 NW 7 AVE Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-30",
-    "sale_price": 3100000,
-    "ctype": "office",
-    "address": "300 NW 12 AVE",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35390-1755",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"300 NW 12 AVE\" OR \"300 NW 12 AVE Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-26",
-    "sale_price": 390000,
-    "ctype": "industrial",
-    "address": "6187 NW 167 ST H40",
-    "city": "Unincorporated County",
-    "county_fips": "12086",
-    "doc_number": "35388-1393",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"6187 NW 167 ST H40\" OR \"6187 NW 167 ST H40 Unincorporated County\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-17",
-    "sale_price": 56250000,
-    "ctype": "industrial",
-    "address": "10910 NW 144 ST",
-    "city": "Hialeah Gardens",
-    "county_fips": "12086",
-    "doc_number": "35359-4666",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"10910 NW 144 ST\" OR \"10910 NW 144 ST Hialeah Gardens\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-12",
-    "sale_price": 5600000,
-    "ctype": "retail",
-    "address": "1300 BRICKELL BAY DR CU 6",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35368-2699",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"1300 BRICKELL BAY DR CU 6\" OR \"1300 BRICKELL BAY DR CU 6 Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-12",
-    "sale_price": 415000,
-    "ctype": "office",
-    "address": "10450 NW 33 ST 407",
-    "city": "Doral",
-    "county_fips": "12086",
-    "doc_number": "35367-2170",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"10450 NW 33 ST 407\" OR \"10450 NW 33 ST 407 Doral\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-11",
-    "sale_price": 21770000,
-    "ctype": "parking",
-    "address": "9640 W BROADVIEW DR",
-    "city": "Bay Harbor Islands",
-    "county_fips": "12086",
-    "doc_number": "35363-1192",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"9640 W BROADVIEW DR\" OR \"9640 W BROADVIEW DR Bay Harbor Islands\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-11",
-    "sale_price": 5950000,
-    "ctype": "retail",
-    "address": "9675 NW 41 ST",
-    "city": "Doral",
-    "county_fips": "12086",
-    "doc_number": "35365-2960",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"9675 NW 41 ST\" OR \"9675 NW 41 ST Doral\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-10",
-    "sale_price": 4000000,
-    "ctype": "industrial",
-    "address": "64 NW 54 ST",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35356-4937",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"64 NW 54 ST\" OR \"64 NW 54 ST Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-08",
-    "sale_price": 3300000,
-    "ctype": "retail",
-    "address": "2223 SW 13 AVE",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35356-3268",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"2223 SW 13 AVE\" OR \"2223 SW 13 AVE Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 25000000,
-    "ctype": "other",
-    "address": "3223 NW 5 AVE",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35355-3827",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"3223 NW 5 AVE\" OR \"3223 NW 5 AVE Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 25000000,
-    "ctype": "parking",
-    "address": "3225 NW 5 AVE",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35355-3827",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"3225 NW 5 AVE\" OR \"3225 NW 5 AVE Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 25000000,
-    "ctype": "parking",
-    "address": "431 NW 32 ST",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35355-3827",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"431 NW 32 ST\" OR \"431 NW 32 ST Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 3825000,
-    "ctype": "retail",
-    "address": "18750 NW 2 AVE",
-    "city": "Miami Gardens",
-    "county_fips": "12086",
-    "doc_number": "35357-2405",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"18750 NW 2 AVE\" OR \"18750 NW 2 AVE Miami Gardens\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 3825000,
-    "ctype": "parking",
-    "address": null,
-    "city": "Miami Gardens",
-    "county_fips": "12086",
-    "doc_number": "35357-2405",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"null\" OR \"null Miami Gardens\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 2300000,
-    "ctype": "industrial",
-    "address": "7133 NW 27 AVE",
-    "city": "Unincorporated County",
-    "county_fips": "12086",
-    "doc_number": "35340-1425",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"7133 NW 27 AVE\" OR \"7133 NW 27 AVE Unincorporated County\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 526000,
-    "ctype": "industrial",
-    "address": "246 SW 3 AVE",
-    "city": "Homestead",
-    "county_fips": "12086",
-    "doc_number": "35356-0681",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"246 SW 3 AVE\" OR \"246 SW 3 AVE Homestead\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-05",
-    "sale_price": 526000,
-    "ctype": "industrial",
-    "address": "306 SW 3 AVE",
-    "city": "Homestead",
-    "county_fips": "12086",
-    "doc_number": "35356-0681",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"306 SW 3 AVE\" OR \"306 SW 3 AVE Homestead\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-04",
-    "sale_price": 8762200,
-    "ctype": "retail",
-    "address": "10003 NW 41 ST",
-    "city": "Doral",
-    "county_fips": "12086",
-    "doc_number": "35364-4847",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"10003 NW 41 ST\" OR \"10003 NW 41 ST Doral\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-04",
-    "sale_price": 8000000,
-    "ctype": "parking",
-    "address": "700 88 ST",
-    "city": "Surfside",
-    "county_fips": "12086",
-    "doc_number": "35347-3664",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"700 88 ST\" OR \"700 88 ST Surfside\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-04",
-    "sale_price": 2000000,
-    "ctype": "parking",
-    "address": "31400 SW 193 AVE",
-    "city": "Unincorporated County",
-    "county_fips": "12086",
-    "doc_number": "35347-4094",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"31400 SW 193 AVE\" OR \"31400 SW 193 AVE Unincorporated County\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-03",
-    "sale_price": 4100000,
-    "ctype": "industrial",
-    "address": "3075 SW 28 ST",
-    "city": "Miami",
-    "county_fips": "12086",
-    "doc_number": "35346-4222",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"3075 SW 28 ST\" OR \"3075 SW 28 ST Miami\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-03",
-    "sale_price": 3345600,
-    "ctype": "industrial",
-    "address": "8170 NW 36 AVE",
-    "city": "Unincorporated County",
-    "county_fips": "12086",
-    "doc_number": "35353-1911",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"8170 NW 36 AVE\" OR \"8170 NW 36 AVE Unincorporated County\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  },
-  {
-    "sale_date": "2026-06-03",
-    "sale_price": 3290800,
-    "ctype": "industrial",
-    "address": "6800 NW 37 CT",
-    "city": "Hialeah",
-    "county_fips": "12086",
-    "doc_number": "35353-1906",
-    "candidate_broker_domain": null,
-    "source_landing_url": null,
-    "document_url": null,
-    "asset_type": null,
-    "asset_date": null,
-    "access_status": null,
-    "rights_basis": null,
-    "match_confidence": null,
-    "discovery_query": "(\"6800 NW 37 CT\" OR \"6800 NW 37 CT Hialeah\") site:cbre.com OR site:us.jll.com OR site:cushmanwakefield.com OR site:colliers.com OR site:marcusmillichap.com OR site:nmrk.com OR site:kidder.com OR site:berkadia.com"
-  }
-]
\ No newline at end of file
diff --git a/out/provenance-findings.md b/out/provenance-findings.md
new file mode 100644
index 0000000..a163069
--- /dev/null
+++ b/out/provenance-findings.md
@@ -0,0 +1,34 @@
+# Provenance findings — live discovery on top Miami-Dade closed deals (TK-10708)
+
+Ran 2026-08-19. Discovery = WebSearch (search-engine query, not broker scraping). Candidate
+broker domains joined from usre.firm (440 FL commercial firms w/ websites). Classification:
+**broker_owned** (in firm set) · **first_party** (owner/property-brand or CRE trade press) ·
+**marketplace_gated** (Crexi/LoopNet/CoStar — automated access GATED) · **none**.
+
+| deal | price | best asset found | domain | class | confidence |
+|---|--:|---|---|---|--:|
+| 1111 Brickell Ave, Miami | $274.4M | property brochure on owner site | 1111brickell.com | first_party | 0.85 |
+| 1111 Brickell Ave, Miami | — | deal story | cre-sources.com | first_party (trade press) | 0.9 |
+| 1111 Brickell Ave, Miami | — | listing page | loopnet.com | **marketplace_gated** | — |
+| 1751 Collins Ave, Miami Beach | $270M | redevelopment article | floridayimby.com | first_party (trade press) | 0.6 |
+| 1751 Collins Ave, Miami Beach | — | (no broker OM found) | — | none | — |
+| 700 Brickell Ave, Miami | ~$443M* | multiple deal stories | therealdeal.com, credaily.com, bisnow.com, miamitodaynews.com | first_party (trade press) | 0.9 |
+| 700 Brickell Ave, Miami | — | broker named (CBRE) but no public OM | cbre.com | broker_owned (no asset link) | 0.3 |
+
+\* 700 vs 701 Brickell disambiguation needed; addresses adjacent.
+
+## Verdict (feasibility)
+1. **CRE trade-press coverage exists for EVERY significant closed deal** (therealdeal, credaily, bisnow,
+   miamitoday, cre-sources) → the most consistent, lowest-risk **Tier-1 link** yield.
+2. **Owner/property-brand brochures** exist for trophy standing assets (1111brickell.com) → Tier-1 first-party.
+3. **Broker OMs rarely surface for CLOSED deals** — an OM is pulled once the sale closes. Even when a broker
+   is named (CBRE sold 700 Brickell), no public OM link. → **OM harvesting belongs to a future ACTIVE-listings
+   feed, not the closed-deal feed.**
+4. **Marketplace hits (LoopNet) are common** → correctly classified GATED; do not auto-fetch.
+
+## Recommendation
+- **Primary = Tier-2 self-generated closed-sale recaps** (owned, zero-risk) — already built + generating.
+- **Enrichment = Tier-1 links to CRE trade-press coverage + owner brochures** per deal (link-only, robots-respecting).
+- **Defer** broker-OM harvesting until an active-listings feed exists; keep it Tier-3/gated meanwhile.
+- **Upgrade path for exact broker match:** populate broker_of_record_history.county_fips/ain so the state-level
+  firm-domain join becomes a per-property broker resolution.
diff --git a/out/provenance-report.md b/out/provenance-report.md
index b324b25..b85ab7a 100644
--- a/out/provenance-report.md
+++ b/out/provenance-report.md
@@ -1,34 +1,15 @@
-# Provenance probe — 25 recent deals
+# Provenance probe v2 — 6 deals (12086)
 
-Generated 2026-08-19T15:59:26.808Z · ticket TK-10708 · DRY (no third-party pages fetched).
-Discovery is scoped to **broker-owned public pages only**; CRE marketplaces are gated by ToS.
-Next: for each row, run its `discovery_query` via a rate-limited, robots-respecting step
-(or CRCP's firm_site/broker_website join) and fill the null columns; only then promote to usre.
+Generated 2026-08-19T16:05:40.114Z · TK-10708 · DRY (no third-party pages fetched by this script).
+Candidate broker domains are joined from usre.firm (state + commercial + website).
+Discovery = agent WebSearch per row; classify each hit domain: broker_owned (in firm set) /
+marketplace_gated / other_review. Only broker_owned + first_party promote; marketplace = GATED.
 
-| sale_date | price | type | address | city | doc | confidence | landing_url |
-|---|--:|---|---|---|---|--:|---|
-| 2026-07-07 | $3,500,000 | retail | 3721 TRYON RD | RALEIGH | 020278-02267 | — | — |
-| 2026-06-30 | $4,586,000 | industrial | 2065 NW 7 AVE | Miami | 35389-3561 | — | — |
-| 2026-06-30 | $3,100,000 | office | 300 NW 12 AVE | Miami | 35390-1755 | — | — |
-| 2026-06-26 | $390,000 | industrial | 6187 NW 167 ST H40 | Unincorporated County | 35388-1393 | — | — |
-| 2026-06-17 | $56,250,000 | industrial | 10910 NW 144 ST | Hialeah Gardens | 35359-4666 | — | — |
-| 2026-06-12 | $5,600,000 | retail | 1300 BRICKELL BAY DR CU 6 | Miami | 35368-2699 | — | — |
-| 2026-06-12 | $415,000 | office | 10450 NW 33 ST 407 | Doral | 35367-2170 | — | — |
-| 2026-06-11 | $21,770,000 | parking | 9640 W BROADVIEW DR | Bay Harbor Islands | 35363-1192 | — | — |
-| 2026-06-11 | $5,950,000 | retail | 9675 NW 41 ST | Doral | 35365-2960 | — | — |
-| 2026-06-10 | $4,000,000 | industrial | 64 NW 54 ST | Miami | 35356-4937 | — | — |
-| 2026-06-08 | $3,300,000 | retail | 2223 SW 13 AVE | Miami | 35356-3268 | — | — |
-| 2026-06-05 | $25,000,000 | other | 3223 NW 5 AVE | Miami | 35355-3827 | — | — |
-| 2026-06-05 | $25,000,000 | parking | 3225 NW 5 AVE | Miami | 35355-3827 | — | — |
-| 2026-06-05 | $25,000,000 | parking | 431 NW 32 ST | Miami | 35355-3827 | — | — |
-| 2026-06-05 | $3,825,000 | retail | 18750 NW 2 AVE | Miami Gardens | 35357-2405 | — | — |
-| 2026-06-05 | $3,825,000 | parking | null | Miami Gardens | 35357-2405 | — | — |
-| 2026-06-05 | $2,300,000 | industrial | 7133 NW 27 AVE | Unincorporated County | 35340-1425 | — | — |
-| 2026-06-05 | $526,000 | industrial | 246 SW 3 AVE | Homestead | 35356-0681 | — | — |
-| 2026-06-05 | $526,000 | industrial | 306 SW 3 AVE | Homestead | 35356-0681 | — | — |
-| 2026-06-04 | $8,762,200 | retail | 10003 NW 41 ST | Doral | 35364-4847 | — | — |
-| 2026-06-04 | $8,000,000 | parking | 700 88 ST | Surfside | 35347-3664 | — | — |
-| 2026-06-04 | $2,000,000 | parking | 31400 SW 193 AVE | Unincorporated County | 35347-4094 | — | — |
-| 2026-06-03 | $4,100,000 | industrial | 3075 SW 28 ST | Miami | 35346-4222 | — | — |
-| 2026-06-03 | $3,345,600 | industrial | 8170 NW 36 AVE | Unincorporated County | 35353-1911 | — | — |
-| 2026-06-03 | $3,290,800 | industrial | 6800 NW 37 CT | Hialeah | 35353-1906 | — | — |
\ No newline at end of file
+| price | type | address | city | state | broker-domain candidates | query |
+|--:|---|---|---|---|--:|---|
+| $274,350,000 | office | 1111 BRICKELL AVE | Miami | FL | 440 | `"1111 BRICKELL AVE" Miami commercial "offering memorandum" OR flyer OR brochure` |
+| $270,000,000 | hospitality | 1751 COLLINS AVE | Miami Beach | FL | 440 | `"1751 COLLINS AVE" Miami Beach commercial "offering memorandum" OR flyer OR brochure` |
+| $270,000,000 | hospitality | 1775 COLLINS AVE | Miami Beach | FL | 440 | `"1775 COLLINS AVE" Miami Beach commercial "offering memorandum" OR flyer OR brochure` |
+| $270,000,000 | hospitality | 1757 COLLINS AVE | Miami Beach | FL | 440 | `"1757 COLLINS AVE" Miami Beach commercial "offering memorandum" OR flyer OR brochure` |
+| $205,000,000 | office | 700 BRICKELL AVE | Miami | FL | 440 | `"700 BRICKELL AVE" Miami commercial "offering memorandum" OR flyer OR brochure` |
+| $205,000,000 | hospitality | 301 OCEAN DR | Key Biscayne | FL | 440 | `"301 OCEAN DR" Key Biscayne commercial "offering memorandum" OR flyer OR brochure` |
\ No newline at end of file
diff --git a/scripts/provenance-probe.mjs b/scripts/provenance-probe.mjs
index 80465e3..a5d6ef3 100644
--- a/scripts/provenance-probe.mjs
+++ b/scripts/provenance-probe.mjs
@@ -1,17 +1,19 @@
 #!/usr/bin/env node
-// TK-10708  Provenance probe (codex's highest-leverage first move).
-// Takes N recent deals and emits a LOCAL provenance report BEFORE any broad crawler,
-// to test: (a) can we find a marketing asset on a BROKER-OWNED public page, (b) how
-// good is the address->asset match, (c) is it useful to CRCP. DRY by default: it does
-// NOT fetch any third-party page (marketplace/broker ToS govern automated access);
-// it produces the per-deal discovery plan + the report skeleton a human/rate-limited
-// robots-respecting step would fill in.
+// TK-10708  Provenance probe v2 (codex's #1 first move) -- now joins REAL broker
+// domains from usre.firm (the CRCP/usre firm registry) instead of a hardcoded list.
 //
-// Usage:
-//   node scripts/provenance-probe.mjs --n 25              # LA-ish sample, dry report
-//   node scripts/provenance-probe.mjs --n 25 --county 06037   # a specific county_fips
+// For N recent deals it emits, per deal: the deal facts, a candidate broker-domain set
+// (firms in the deal's state with asset_class='commercial' + a website), a marketplace
+// domain set (for GATED classification), and the discovery query a rate-limited,
+// robots-respecting step (or the agent's WebSearch) runs. It does NOT fetch third-party
+// pages itself. Output feeds a human/agent discovery pass that fills the null columns;
+// only validated rows promote to usre.
 //
-// Output: out/provenance-report.md + out/provenance-<ts>.json
+// NOTE on the join: broker_of_record_history has no populated county_fips/ain yet, so we
+// can't resolve the EXACT listing broker per parcel. We degrade to a STATE + commercial
+// candidate set from firm. Upgrade to exact when BOR history gets county/ain keys.
+//
+// Usage: node scripts/provenance-probe.mjs --n 8 [--county 12086]
 
 import { execFileSync } from 'node:child_process';
 import { writeFileSync, mkdirSync } from 'node:fs';
@@ -24,65 +26,66 @@ mkdirSync(OUT, { recursive: true });
 
 const args = process.argv.slice(2);
 const getArg = (f, d) => { const i = args.indexOf(f); return i >= 0 ? args[i + 1] : d; };
-const N = parseInt(getArg('--n', '25'), 10);
+const N = parseInt(getArg('--n', '8'), 10);
 const COUNTY = getArg('--county', null);
 
-const COLS = 'sale_date,sale_price,ctype,address,city,county_name,county_fips,sqft,doc_number';
-const where = COUNTY ? `WHERE county_fips = '${COUNTY.replace(/'/g, "''")}'` : '';
-const sql = `SELECT row_to_json(t) FROM (SELECT ${COLS} FROM recent_commercial_deals ${where} ORDER BY sale_date DESC, sale_price DESC LIMIT ${N}) t`;
+const STATE_FIPS = { '01':'AL','02':'AK','04':'AZ','05':'AR','06':'CA','08':'CO','09':'CT','10':'DE','11':'DC','12':'FL','13':'GA','15':'HI','16':'ID','17':'IL','18':'IN','19':'IA','20':'KS','21':'KY','22':'LA','23':'ME','24':'MD','25':'MA','26':'MI','27':'MN','28':'MS','29':'MO','30':'MT','31':'NE','32':'NV','33':'NH','34':'NJ','35':'NM','36':'NY','37':'NC','38':'ND','39':'OH','40':'OK','41':'OR','42':'PA','44':'RI','45':'SC','46':'SD','47':'TN','48':'TX','49':'UT','50':'VT','51':'VA','53':'WA','54':'WV','55':'WI','56':'WY' };
+// Marketplaces: automated access GATED by ToS (codex). Used ONLY to classify a hit as gated.
+const MARKETPLACE_DOMAINS = ['crexi.com','loopnet.com','cityfeet.com','costar.com','brevitas.com','biproxi.com','commercialcafe.com','commercialsearch.com'];
+
+const q = sql => execFileSync('psql', ['usre','-t','-A','-c',sql], { encoding:'utf8' }).trim();
+const domainOf = url => { try { return new URL(url).hostname.replace(/^www\./,'').toLowerCase(); } catch { return null; } };
 
-let deals;
-try {
-  const raw = execFileSync('psql', ['usre', '-t', '-A', '-c', sql], { encoding: 'utf8' });
-  deals = raw.trim().split('\n').filter(Boolean).map(l => JSON.parse(l));
-} catch (e) { console.error('psql failed:', e.message); process.exit(1); }
+const where = COUNTY ? `WHERE county_fips='${COUNTY.replace(/'/g,"''")}'` : '';
+const deals = q(`SELECT row_to_json(t) FROM (SELECT sale_date,sale_price,ctype,address,city,county_name,county_fips,sqft,doc_number FROM recent_commercial_deals ${where} ORDER BY sale_price DESC LIMIT ${N}) t`)
+  .split('\n').filter(Boolean).map(l => JSON.parse(l));
 if (!deals.length) { console.error('No deals.'); process.exit(1); }
 
-// Broker-owned public domains we may LINK to (Tier 1). Marketplaces are intentionally
-// EXCLUDED here -- their ToS gate automated access (codex). CRCP firm_site/broker_website
-// would REPLACE this static list with the actual listing broker's domain per deal.
-const BROKER_DOMAINS = [
-  'cbre.com', 'us.jll.com', 'cushmanwakefield.com', 'colliers.com',
-  'marcusmillichap.com', 'nmrk.com', 'kidder.com', 'berkadia.com'
-];
+// Candidate broker domains per state, from the real firm registry, cached per state.
+const domainCache = {};
+function brokerDomains(state) {
+  if (!state) return [];
+  if (domainCache[state]) return domainCache[state];
+  const rows = q(`SELECT website FROM firm WHERE hq_state='${state}' AND asset_class='commercial' AND website IS NOT NULL AND website<>''`)
+    .split('\n').filter(Boolean);
+  const set = [...new Set(rows.map(domainOf).filter(Boolean))];
+  domainCache[state] = set;
+  return set;
+}
 
-const rows = deals.map(d => {
-  // The discovery query a human / rate-limited + robots-respecting fetch would run,
-  // scoped to broker-owned sites only. NOT executed here.
-  const q = `("${d.address}" OR "${d.address} ${d.city}") ` + BROKER_DOMAINS.map(x => `site:${x}`).join(' OR ');
+const worklist = deals.map(d => {
+  const state = STATE_FIPS[(d.county_fips||'').slice(0,2)] || null;
+  const domains = brokerDomains(state);
   return {
-    sale_date: d.sale_date, sale_price: +d.sale_price, ctype: d.ctype,
-    address: d.address, city: d.city, county_fips: d.county_fips, doc_number: d.doc_number,
-    // --- to be filled by the (gated) discovery step ---
-    candidate_broker_domain: null,
-    source_landing_url: null,
-    document_url: null,
-    asset_type: null,          // offering_memorandum | marketing_flyer | property_brief
-    asset_date: null,
-    access_status: null,       // public | robots_disallowed | login_required
-    rights_basis: null,        // first_party | public_record | GATED_needs_review
-    match_confidence: null,    // 0..1
-    discovery_query: q
+    ...d, sale_price:+d.sale_price, state,
+    candidate_broker_domain_count: domains.length,
+    candidate_broker_domains: domains,          // full set for classification
+    marketplace_domains_gated: MARKETPLACE_DOMAINS,
+    // The agent runs THIS via WebSearch (a search-engine query, not scraping a broker):
+    discovery_query: `"${d.address}" ${d.city} commercial "offering memorandum" OR flyer OR brochure`,
+    // filled by the discovery pass:
+    source_landing_url:null, document_url:null, hit_domain:null,
+    rights_class:null,  // broker_owned | marketplace_gated | other_review | none
+    match_confidence:null
   };
 });
 
-const ts = new Date().toISOString().replace(/[:.]/g, '-');
-writeFileSync(join(OUT, `provenance-${ts}.json`), JSON.stringify(rows, null, 2));
+const ts = new Date().toISOString().replace(/[:.]/g,'-');
+writeFileSync(join(OUT,`provenance-worklist-${ts}.json`), JSON.stringify(worklist,null,2));
 
 const md = [
-  `# Provenance probe — ${deals.length} recent deals`,
+  `# Provenance probe v2 — ${deals.length} deals (${COUNTY||'all counties'})`,
   ``,
-  `Generated ${new Date().toISOString()} · ticket TK-10708 · DRY (no third-party pages fetched).`,
-  `Discovery is scoped to **broker-owned public pages only**; CRE marketplaces are gated by ToS.`,
-  `Next: for each row, run its \`discovery_query\` via a rate-limited, robots-respecting step`,
-  `(or CRCP's firm_site/broker_website join) and fill the null columns; only then promote to usre.`,
+  `Generated ${new Date().toISOString()} · TK-10708 · DRY (no third-party pages fetched by this script).`,
+  `Candidate broker domains are joined from usre.firm (state + commercial + website).`,
+  `Discovery = agent WebSearch per row; classify each hit domain: broker_owned (in firm set) /`,
+  `marketplace_gated / other_review. Only broker_owned + first_party promote; marketplace = GATED.`,
   ``,
-  `| sale_date | price | type | address | city | doc | confidence | landing_url |`,
-  `|---|--:|---|---|---|---|--:|---|`,
-  ...rows.map(r => `| ${r.sale_date} | $${r.sale_price.toLocaleString('en-US')} | ${r.ctype||''} | ${r.address} | ${r.city} | ${r.doc_number} | ${r.match_confidence ?? '—'} | ${r.source_landing_url ?? '—'} |`)
+  `| price | type | address | city | state | broker-domain candidates | query |`,
+  `|--:|---|---|---|---|--:|---|`,
+  ...worklist.map(r => `| $${r.sale_price.toLocaleString('en-US')} | ${r.ctype||''} | ${r.address} | ${r.city} | ${r.state||'?'} | ${r.candidate_broker_domain_count} | \`${r.discovery_query}\` |`)
 ].join('\n');
-writeFileSync(join(OUT, 'provenance-report.md'), md);
+writeFileSync(join(OUT,'provenance-report.md'), md);
 
-console.log(`Wrote out/provenance-report.md (${rows.length} deals) + out/provenance-${ts}.json`);
-console.log(`Broker-domain scope: ${BROKER_DOMAINS.join(', ')}`);
-console.log(`DRY — no pages fetched. Fill the null columns via a gated, robots-respecting discovery step.`);
+console.log(`Wrote out/provenance-report.md + out/provenance-worklist-${ts}.json (${worklist.length} deals)`);
+worklist.forEach(r => console.log(`  ${r.address}, ${r.city} ${r.state} — ${r.candidate_broker_domain_count} candidate broker domains`));

← 762f38c re-flyer-aggregator: plan + tiered source registry + externa  ·  back to Re Flyer Aggregator  ·  aggregation store: local reflyers staging DB + ingest + deal 7c6e855 →