[object Object]

← back to Rentv 2026

fix(firm): profile KPIs drill deeper (every-datum-hrefs rule) — 'Largest deal' → that deal's page, 'Top asset class' → /sector?type=. KPIs with no clean deeper target (Total volume/Deals/Markets) left unlinked rather than forced. Verified targets valid (/sector accepts ?type=), profile serves 200.

9c83657e48ed40009ce95cb6e52c6f8c5138dd08 · 2026-08-06 16:52:26 -0700 · Steve

Files touched

Diff

commit 9c83657e48ed40009ce95cb6e52c6f8c5138dd08
Author: Steve <steve@designerwallcoverings.com>
Date:   Thu Aug 6 16:52:26 2026 -0700

    fix(firm): profile KPIs drill deeper (every-datum-hrefs rule) — 'Largest deal' → that deal's page, 'Top asset class' → /sector?type=. KPIs with no clean deeper target (Total volume/Deals/Markets) left unlinked rather than forced. Verified targets valid (/sector accepts ?type=), profile serves 200.
---
 public/firm.html | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/public/firm.html b/public/firm.html
index 25b2ffb4..424985d9 100644
--- a/public/firm.html
+++ b/public/firm.html
@@ -177,16 +177,17 @@ function renderProfile(g){
   $('h1').textContent=g.name;
   $('blurb').textContent=`Every tracked deal RENTV has ${g.name} in — ${g.count} deal${g.count===1?'':'s'} across ${g.nMetro} market${g.nMetro===1?'':'s'}.`;
   const largest=g.deals.reduce((a,b)=>(b.amount||0)>(a.amount||0)?b:a, g.deals[0]);
+  // 4th element = drill href (every-datum-hrefs-deeper rule); only wired where a clean deeper target exists.
   const kpis=[
-    ['Total volume', g.vol?usd(g.vol):'—', true],
-    ['Deals', String(g.count), false],
-    ['Markets', String(g.nMetro), false],
-    ['Top asset class', g.top?g.top[0]:'—', false],
-    ['Largest deal', (largest&&largest.amount)?usd(largest.amount):'—', true],
+    ['Total volume', g.vol?usd(g.vol):'—', true, null],
+    ['Deals', String(g.count), false, null],
+    ['Markets', String(g.nMetro), false, null],
+    ['Top asset class', g.top?g.top[0]:'—', false, g.top?('/sector?type='+encodeURIComponent(g.top[0])):null],
+    ['Largest deal', (largest&&largest.amount)?usd(largest.amount):'—', true, (largest&&largest.id)?('/news/'+encodeURIComponent(largest.id)):null],
   ];
   $('metros').innerHTML =
     `<a class="back" href="/firm">← All dealmakers</a>`+
-    `<div class="kpis">${kpis.map(k=>`<div class="kpi"><div class="k">${esc(k[0])}</div><div class="v${k[2]?' red':''}">${esc(k[1])}</div></div>`).join('')}</div>`+
+    `<div class="kpis">${kpis.map(k=>`<div class="kpi">${k[3]?`<a href="${esc(k[3])}" style="text-decoration:none;color:inherit;display:block" title="Drill into ${esc(k[0])}">`:''}<div class="k">${esc(k[0])}${k[3]?' ›':''}</div><div class="v${k[2]?' red':''}">${esc(k[1])}</div>${k[3]?'</a>':''}</div>`).join('')}</div>`+
     `<div class="plist">${g.deals.map(d=>`<a class="pcard" href="${d.id?('/news/'+encodeURIComponent(d.id)):'/deals'}"><div><h4>${esc(d.title)}</h4><div class="m">${[d.property_type,d.txn_type,[d.city,d.state].filter(Boolean).join(', '),d.size_label].filter(Boolean).map(esc).join(' · ')}</div></div><div class="amt">${esc(d.amount_label||(d.amount?usd(d.amount):'—'))}</div></a>`).join('')}</div>`;
 }
 

← 1a6901b5 feat(brief): hard monthly spend cap (BRIEF_MONTHLY_CAP, defa  ·  back to Rentv 2026  ·  harden(agents review): spend-safety + robustness pass on thi 3e79a22d →