[object Object]

โ† back to Commercialrealestate

deal-flow C3: FHA co-source (494 CA FHA-financed multifamily w/ rate + assumable flag, ๐Ÿฆ badge) + EDGAR window 120->365d (35->87 deals); 3 free public sources in one board

e4f907d8f5beab75d234c33236b349c5fd1ccfc1 ยท 2026-07-31 09:35:00 -0700 ยท steve

Files touched

Diff

commit e4f907d8f5beab75d234c33236b349c5fd1ccfc1
Author: steve <steve@designerwallcoverings.com>
Date:   Fri Jul 31 09:35:00 2026 -0700

    deal-flow C3: FHA co-source (494 CA FHA-financed multifamily w/ rate + assumable flag, ๐Ÿฆ badge) + EDGAR window 120->365d (35->87 deals); 3 free public sources in one board
---
 public/deals-flow.html | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/public/deals-flow.html b/public/deals-flow.html
index a39a35c..350ddfd 100644
--- a/public/deals-flow.html
+++ b/public/deals-flow.html
@@ -32,6 +32,7 @@ select{background:var(--card);border:1px solid var(--line);color:var(--ink);bord
 .src{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 6px;border-radius:6px;white-space:nowrap;flex-shrink:0}
 .src.county{background:rgba(63,185,80,.16);color:var(--acc)}
 .src.edgar{background:rgba(188,140,255,.16);color:var(--violet)}
+.src.fha{background:rgba(88,166,255,.16);color:var(--blue)}
 .dcard .price{font-size:20px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}
 .dl{display:flex;flex-wrap:wrap;gap:5px 14px;font-size:12px;color:var(--ink)}
 .dl .i{color:var(--mut);display:inline-flex;align-items:center;gap:4px}
@@ -100,21 +101,26 @@ function buildRail(){
   $('#fSrc').innerHTML=chip(sc,'s');$('#fUse').innerHTML=chip(uc,'u',10);$('#fYear').innerHTML=chip(yc,'y',8);$('#fConf').innerHTML=chip(cc,'c');
 }
 function card(r){
-  const isE=r.kind==='reit-filing';
-  const srcBadge=isE?'<span class="src edgar">๐Ÿ“„ SEC EDGAR</span>':'<span class="src county">๐Ÿ›๏ธ Assessor</span>';
+  const isE=r.kind==='reit-filing', isF=r.kind==='fha', isC=r.kind==='county-sale';
+  const srcBadge=isE?'<span class="src edgar">๐Ÿ“„ SEC EDGAR</span>':isF?'<span class="src fha">๐Ÿฆ HUD FHA</span>':'<span class="src county">๐Ÿ›๏ธ Assessor</span>';
   const price=money(r.price);
   const details=[];
-  if(price) details.push(`<span class="i">๐Ÿ’ฐ <b>${price}</b>${isE?'':' <span class="mut">est</span>'}</span>`);
+  if(price&&isE) details.push(`<span class="i">๐Ÿ’ฐ <b>${price}</b></span>`);
+  if(r.rate!=null) details.push(`<span class="i">๐Ÿ’ต <b>${(+r.rate).toFixed(2)}%</b> rate</span>`);
+  if(isF&&r.belowMarket) details.push(`<span class="i" style="color:var(--gold)">โ—† assumable (below-market)</span>`);
   if(r.units) details.push(`<span class="i">๐Ÿข <b>${r.units}</b> units</span>`);
   if(r.use) details.push(`<span class="i">๐Ÿท๏ธ ${esc(r.use)}</span>`);
+  if(r.deal_city) details.push(`<span class="i">๐Ÿ“ ${esc(r.deal_city)}</span>`);
   if(r.year_built) details.push(`<span class="i">๐Ÿ—๏ธ built ${r.year_built}</span>`);
   if(r.date) details.push(`<span class="i">๐Ÿ“… ${esc(r.date)}</span>`);
   if(r.ticker) details.push(`<span class="i">๐Ÿ“ˆ ${esc(r.ticker)}</span>`);
+  if(r.holder) details.push(`<span class="i">๐Ÿฆ ${esc(String(r.holder).slice(0,24))}</span>`);
   const conf=r.confidence?`<span class="conf ${r.confidence}">${r.confidence} confidence</span>`:'';
   const link=r.url?`<a class="f" href="${esc(r.url)}" target="_blank" rel="noopener noreferrer">๐Ÿ”— SEC filing โ†—</a>`:'';
+  const bigPrice=(price&&(isC||isF))?`<div class="price">${price}${isC?' <span class="mut" style="font-size:11px">est sale</span>':isF?' <span class="mut" style="font-size:11px">loan</span>':''}</div>`:'';
   return `<div class="dcard">
     <div class="top"><div class="name">${esc(r.name)}</div>${srcBadge}</div>
-    ${price&&isE?'':price?`<div class="price">${price}</div>`:''}
+    ${bigPrice}
     <div class="dl">${details.join('')}</div>
     ${link}${conf?'<div>'+conf+'</div>':''}
     <div class="provline">๐Ÿ“‹ ${esc(r.source)}</div>
@@ -146,13 +152,20 @@ $('#sort').innerHTML=[['date','Date'],['price','Price'],['units','Units'],['year
 $('#dens').value=dens;
 Promise.all([
   fetch('/data/deals-flow.json').then(r=>r.json()).catch(()=>({deals:[]})),
-  fetch('/data/edgar-reit-deals.json').then(r=>r.json()).catch(()=>({deals:[]}))
-]).then(([county,edgar])=>{
+  fetch('/data/edgar-reit-deals.json').then(r=>r.json()).catch(()=>({deals:[]})),
+  fetch('/data/fha-loans.json').then(r=>r.json()).catch(()=>({rows:[]}))
+]).then(([county,edgar,fha])=>{
   const c=(county.deals||[]).map(d=>({...d,kind:'county-sale',name:d.address||d.ain,source_label:'LA County Assessor'}));
   const e=(edgar.deals||[]).map(d=>({...d,kind:'reit-filing',name:d.company,
     use:d.property?('REIT: '+String(d.property).slice(0,44)):(d.price?'REIT acquisition':'REIT filing ยท price pending'),
-    date:d.filed,url:d.filing_url,source_label:'SEC EDGAR'}));
-  DATA=c.concat(e);
+    deal_city:d.deal_city||null,date:d.filed,url:d.filing_url,source_label:'SEC EDGAR'}));
+  // FHA-financed properties as a co-source (city/zip only โ€” rides alongside, not a per-parcel join).
+  const f=(fha.rows||[]).filter(r=>r.state==='CA'&&r.rate!=null).map(d=>({
+    kind:'fha',name:d.property,use:'FHA-financed multifamily',price:d.originalAmount,units:d.units,
+    year:String(d.originationDate||'').slice(0,4)||null,date:d.originationDate,rate:d.rate,belowMarket:d.belowMarket,
+    holder:d.holder,deal_city:d.city,source_label:'HUD FHA',
+    source:'HUD/FHA Multifamily Insured Mortgages (public, resellable)'}));
+  DATA=c.concat(e).concat(f);
   buildRail();render();
 }).catch(()=>{$('#count').textContent='failed to load deal data';});
 </script></body></html>

โ† 94bdca5 EDGAR deals now PRICED: parse-edgar-prices.js (local Ollama  ยท  back to Commercialrealestate  ยท  crcp: fix cleanup script โ€” dedup brokers on (name,target-fir 8bc12cc โ†’