[object Object]

← back to Commercialrealestate

feat(condos): add Unwarrantable (non-FHA-approved) filter — 713 condos, Arcstone non-QM target; deep-link ?status=unwarrantable; red Unwarrantable chips in index+mls asset-class rails

a2c781e8b7fe15f090d1e474451e9bd047f80ab4 · 2026-07-02 09:52:58 -0700 · Steve Abrams

Files touched

Diff

commit a2c781e8b7fe15f090d1e474451e9bd047f80ab4
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Jul 2 09:52:58 2026 -0700

    feat(condos): add Unwarrantable (non-FHA-approved) filter — 713 condos, Arcstone non-QM target; deep-link ?status=unwarrantable; red Unwarrantable chips in index+mls asset-class rails
---
 public/condos.html | 23 +++++++++++++++++------
 public/index.html  |  5 ++++-
 public/mls.html    |  2 +-
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/public/condos.html b/public/condos.html
index 26febfb..2ab57af 100644
--- a/public/condos.html
+++ b/public/condos.html
@@ -59,6 +59,7 @@
     <select id="status">
       <option value="fha_approved">FHA-approved (warrantable proxy)</option>
       <option value="fha_expired">FHA-expired (re-cert needed)</option>
+      <option value="unwarrantable">⚑ Unwarrantable · non-FHA (Arcstone target)</option>
       <option value="all">All</option>
     </select>
   </label>
@@ -145,18 +146,25 @@ async function load(){
   if(!DB_CONDOS.length){
     try{ const r=await (await fetch('/api/condos')).json(); DB_CONDOS=r.condos||[]; if(r.label) $('#banner').textContent='⚖️ '+r.label; }catch(_){}
   }
+  // "unwarrantable" = every condo NOT on the FHA-approved list (expired + not-listed) — Arcstone's non-QM target.
+  const matchStatus=(v)=> status==='all' ? true : status==='unwarrantable' ? v!=='fha_approved' : v===status;
   if(DB_CONDOS.length){
-    let rows=DB_CONDOS.filter(c=>status==='all'||c.warrantable_status===status);
+    let rows=DB_CONDOS.filter(c=>matchStatus(c.warrantable_status));
     if(q){ const ql=q.toLowerCase(); rows=rows.filter(c=>((c.project_name||'')+' '+(c.city||'')+' '+(c.zip||'')+' '+(c.address||'')).toLowerCase().includes(ql)); }
-    $('#count').innerHTML=`<b>${rows.length}</b> classified condo listings`;
+    $('#count').innerHTML=`<b>${rows.length}</b> ${status==='unwarrantable'?'unwarrantable (non-FHA) condos':'classified condo listings'}`;
+    if(status==='unwarrantable') $('#banner').textContent='⚑ Non-warrantable condos — NOT on the FHA-approved list (expired or never listed). These are the deals conventional/FHA lenders decline — Arcstone non-QM / portfolio financing territory.';
     renderDbCondos(rows);
     return;
   }
   // 2) Fallback: the authoritative FHA-approved project directory (real warrantable inventory).
-  const r=await (await fetch(`/api/fha-condos?status=${status}&q=${encodeURIComponent(q)}`)).json();
-  $('#banner').textContent='⚖️ '+(r.label||PROXY)+'  —  showing the HUD FHA-approved project directory (no live condo listings loaded yet; full residential scrape is gated).';
-  $('#count').innerHTML=`<b>${r.count}</b> FHA-list projects`;
-  renderFhaDirectory(r.condos);
+  const sQ = status==='unwarrantable' ? 'all' : status;
+  const r=await (await fetch(`/api/fha-condos?status=${sQ}&q=${encodeURIComponent(q)}`)).json();
+  let fcondos=r.condos||[]; if(status==='unwarrantable') fcondos=fcondos.filter(c=>c.warrant_signal!=='fha_approved');
+  $('#banner').textContent = status==='unwarrantable'
+    ? '⚑ Non-warrantable condos (non-FHA-approved) — Arcstone non-QM / portfolio financing target.'
+    : '⚖️ '+(r.label||PROXY)+'  —  showing the HUD FHA-approved project directory (no live condo listings loaded yet; full residential scrape is gated).';
+  $('#count').innerHTML=`<b>${fcondos.length}</b> ${status==='unwarrantable'?'non-warrantable projects':'FHA-list projects'}`;
+  renderFhaDirectory(fcondos);
 }
 
 $('#q').oninput=()=>{ clearTimeout(window._t); window._t=setTimeout(load,200); };
@@ -165,6 +173,9 @@ $('#cols').oninput=e=>{ document.documentElement.style.setProperty('--cols',e.ta
 const savedCols=localStorage.getItem('condoCols'); if(savedCols){ $('#cols').value=savedCols; document.documentElement.style.setProperty('--cols',savedCols); }
 document.querySelectorAll('#viewseg button').forEach(b=>b.classList.toggle('active',b.dataset.view===VIEW));
 $('#viewseg').onclick=e=>{ const b=e.target.closest('button[data-view]'); if(!b) return; VIEW=b.dataset.view; localStorage.setItem('condoView',VIEW); document.querySelectorAll('#viewseg button').forEach(x=>x.classList.toggle('active',x.dataset.view===VIEW)); paint(); };
+// deep-link support: /condos?status=unwarrantable preselects the filter
+const _qs=new URLSearchParams(location.search).get('status');
+if(_qs && [...$('#status').options].some(o=>o.value===_qs)) $('#status').value=_qs;
 load();
 </script>
 </body>
diff --git a/public/index.html b/public/index.html
index 3baa82d..17b0c60 100644
--- a/public/index.html
+++ b/public/index.html
@@ -201,7 +201,10 @@
   <div class="dhead"><b>Filters</b><button class="x" id="dclose" aria-label="Close">✕</button></div>
 
   <div class="fsec"><h4>Asset type</h4><div class="chips" id="fType"></div>
-    <a href="/condos" style="display:inline-flex;align-items:center;gap:5px;margin-top:9px;background:rgba(210,153,34,.10);border:1px solid rgba(210,153,34,.4);color:var(--warn);border-radius:18px;padding:5px 11px;font-size:12px;text-decoration:none;font-weight:600">🏢 Condos — FHA warrantability →</a></div>
+    <div style="display:flex;flex-wrap:wrap;gap:6px;margin-top:9px">
+      <a href="/condos" style="display:inline-flex;align-items:center;gap:5px;background:rgba(210,153,34,.10);border:1px solid rgba(210,153,34,.4);color:var(--warn);border-radius:18px;padding:5px 11px;font-size:12px;text-decoration:none;font-weight:600">🏢 Condos →</a>
+      <a href="/condos?status=unwarrantable" style="display:inline-flex;align-items:center;gap:5px;background:rgba(248,81,73,.10);border:1px solid rgba(248,81,73,.4);color:var(--bad);border-radius:18px;padding:5px 11px;font-size:12px;text-decoration:none;font-weight:600" title="Non-FHA-approved condos — Arcstone non-QM target">⚑ Unwarrantable →</a>
+    </div></div>
   <div class="fsec"><h4>Listing firm</h4><div class="chips" id="fFirm"></div></div>
   <div class="fsec"><h4>Submarket / city</h4>
     <input type="text" id="fCity" placeholder="search city or street… e.g. Encino, Ventura Blvd">
diff --git a/public/mls.html b/public/mls.html
index d5301fd..971ffe0 100644
--- a/public/mls.html
+++ b/public/mls.html
@@ -79,7 +79,7 @@
 <div class="shell">
 <aside class="rail">
   <div class="rsec"><h4>Asset class</h4><div class="chips" id="fType"></div>
-    <div style="margin-top:9px"><a class="navchip" href="/condos">🏢 Condos — FHA warrantability →</a></div></div>
+    <div style="margin-top:9px;display:flex;flex-wrap:wrap;gap:6px"><a class="navchip" href="/condos">🏢 Condos →</a><a class="navchip" href="/condos?status=unwarrantable" style="background:rgba(248,81,73,.10);border-color:rgba(248,81,73,.4);color:var(--bad)" title="Non-FHA-approved condos — Arcstone non-QM target">⚑ Unwarrantable →</a></div></div>
   <div class="rsec"><h4>Status</h4><div class="chips" id="fStatus"></div></div>
   <div class="rsec"><h4>Submarket / city</h4><div class="chips" id="fCity"></div></div>
   <div class="rsec"><h4>Price</h4><div class="row2"><div class="fld"><label>Min $</label><input type="number" id="pMin" placeholder="any" step="50000"></div><div class="fld"><label>Max $</label><input type="number" id="pMax" placeholder="any" step="50000"></div></div></div>

← f571111 feat(broker-grid+index): Amazon left rail on broker-grid (ag  ·  back to Commercialrealestate  ·  feat(condos): full Amazon left-rail drill-down — warrantabil a33bd46 →