[object Object]

← back to Commercialrealestate

Expand listing set (+5) + gated live-comps route

1351a12ce369eabaea67c4fa66d39919e1984736 · 2026-06-21 17:34:54 -0700 · Steve

- +5 in-band active listings: Hillhaven/Tujunga, Wilkinson/Valley Village, 6329 Van Nuys retail, Sepulveda/Mission Hills, Foothill/Tujunga (24 total)
- serve.js: POST /api/comps -> Exa REST (~$0.01/call), reads EXA_API_KEY from env/.env, graceful needsKey fallback
- viewer: per-card 'Live comps (~$0.01)' button, results render + feed into chat context
- live comps grounding added to getContext

Files touched

Diff

commit 1351a12ce369eabaea67c4fa66d39919e1984736
Author: Steve <steve@designerwallcoverings.com>
Date:   Sun Jun 21 17:34:54 2026 -0700

    Expand listing set (+5) + gated live-comps route
    
    - +5 in-band active listings: Hillhaven/Tujunga, Wilkinson/Valley Village, 6329 Van Nuys retail, Sepulveda/Mission Hills, Foothill/Tujunga (24 total)
    - serve.js: POST /api/comps -> Exa REST (~$0.01/call), reads EXA_API_KEY from env/.env, graceful needsKey fallback
    - viewer: per-card 'Live comps (~$0.01)' button, results render + feed into chat context
    - live comps grounding added to getContext
---
 data/listings.json   |   5 +
 data/qwen-cache.json |  95 ++++++++++++++++++
 data/ranked.json     | 277 +++++++++++++++++++++++++++++++++++++++++++++++----
 public/index.html    |  29 +++++-
 scripts/serve.js     |  25 +++++
 5 files changed, 412 insertions(+), 19 deletions(-)

diff --git a/data/listings.json b/data/listings.json
index 9c80254..fa49735 100644
--- a/data/listings.json
+++ b/data/listings.json
@@ -24,6 +24,11 @@
     {"id": "vannuys12872", "address": "12872 Van Nuys Blvd", "city": "Pacoima", "zip": "91331", "type": "Multifamily", "price": 949900, "units": 3, "sqft": 2084, "cap_rate": null, "year_built": 1948, "rent_control": "Pre-1978 -> LA RSO", "status": "Active (one source showed Pending — VERIFY)", "upside_note": "Cap not disclosed; renovated triplex, new roof/windows/plumbing; STATUS UNCERTAIN", "source": "https://www.compass.com/homedetails/12872-Van-Nuys-Blvd-Pacoima-CA-91331/1L7DX2_pid/"},
     {"id": "sherman21627", "address": "21627 Sherman Way", "city": "Canoga Park", "zip": "91303", "type": "Retail", "price": 899998, "units": 1, "sqft": 1500, "cap_rate": null, "verified": false, "year_built": 1941, "rent_control": "Commercial — n/a", "status": "Active", "upside_note": "NO in-place income (owner-user barber shop, ~vacant) — return is unverifiable; ranks low by design. Canoga Park Parts District; Opportunity Zone + JEDI Zone incentives; SBA 504 ~10% down; new roof/HVAC 2022. Price cut $998,800->$948,800->$899,998 (motivated).", "source": "https://www.coldwellbankerhomes.com/ca/canoga-park/21627-sherman-way/pid_69748281/"},
     {"id": "owensmouth7129", "address": "7129-7131 1/2 Owensmouth Ave", "city": "Canoga Park", "zip": "91303", "type": "Retail", "price": 1050000, "units": 1, "sqft": 1482, "cap_rate": null, "year_built": 1970, "rent_control": "Commercial — n/a", "status": "Active", "upside_note": "Cap not disclosed; small freestanding retail near Warner Center", "source": "https://www.loopnet.com/Listing/7129-7131-1-2-Owensmouth-Ave-Canoga-Park-CA/35430257/"},
+    {"id": "hillhaven10139", "address": "10139 Hillhaven Ave", "city": "Tujunga", "zip": "91042", "type": "Multifamily", "price": 1248888, "units": 3, "sqft": 3929, "cap_rate": 5.40, "year_built": 1949, "rent_control": "LAR3; pre-1978 RSO", "status": "Active", "upside_note": "Broker cap 5.40%; FIXER triplex, value-add (remodel rear units to market) + expand 3->5 units / 2 ADUs (R3, 8,137sf lot). Priced for condition ($318/sf). On market 75 days.", "source": "https://www.compass.com/homedetails/10139-Hillhaven-Ave-Tujunga-CA-91042/1KFS1G_pid/"},
+    {"id": "wilkinson5214", "address": "5214 Wilkinson Ave", "city": "Valley Village", "zip": "91607", "type": "Multifamily", "price": 1350000, "units": 4, "sqft": 3664, "cap_rate": 3.95, "year_built": 1956, "rent_control": "LARD1.5; pre-1978 RSO", "status": "Active", "upside_note": "Broker cap 3.95% (low) — all 4 units 2bd/1ba ~900sf, owner's unit (D) delivered VACANT (immediate re-tenant upside); prime VV walk-to-Magnolia; 1031 candidate.", "source": "https://www.compass.com/homedetails/5214-Wilkinson-Ave-Valley-Village-CA-91607/1JM961_pid/"},
+    {"id": "vannuys6329", "address": "6329 Van Nuys Blvd", "city": "Van Nuys", "zip": "91401", "type": "Retail", "price": 1350000, "units": 3, "sqft": 3960, "cap_rate": 5.17, "cap_rate_projected": 6.35, "year_built": 1947, "rent_control": "Commercial — n/a", "status": "Active (verify — listing data may be older)", "upside_note": "Broker current cap 5.17% / proforma 6.35%; 3-tenant value-add retail at signalized Van Nuys Blvd & Friar hard corner; tenants below market; 1 block from planned E. SFV light-rail (2027). VERIFY listing is current.", "source": "https://myelisting.com/listing/271977/6329-van-nuys-boulevard-los-angeles-ca-91401/"},
+    {"id": "sepulveda10011", "address": "10011 Sepulveda Blvd", "city": "Mission Hills", "zip": "91345", "type": "Multifamily", "price": 1450000, "units": 4, "sqft": 4084, "cap_rate": null, "year_built": 1964, "rent_control": "Pre-1978 -> LA RSO", "status": "Active", "upside_note": "Cap not disclosed; 4-unit detached (no common walls) inside a 2.48ac condo-style complex on Sepulveda; near 405/5/118. Reduced from $1,450,000+ history.", "source": "https://www.compass.com/homedetails/10011-Sepulveda-Blvd-Mission-Hills-CA-91345/1KVV1H_pid/"},
+    {"id": "foothill6851", "address": "6851 Foothill Blvd", "city": "Tujunga", "zip": "91042", "type": "Mixed-use", "price": 1179999, "units": 3, "sqft": 1942, "cap_rate": null, "year_built": 1945, "rent_control": "Commercial front + 2 resi (RSO on resi)", "status": "Active", "upside_note": "Cap not disclosed (~5% potential per listing); remodeled freestanding commercial + rear duplex (TWO APNs, can buy one/both), owner-user near Glendale; ADU potential. $608/sf.", "source": "https://www.remax.com/ca/tujunga/home-details/6851-foothill-blvd-tujunga-ca-91042/11511387186448702372/M00000093/GD26109676"},
     {"id": "comercio5301", "address": "5301 Comercio Lane", "city": "Woodland Hills", "zip": "91364", "type": "Mixed-use", "price": 814250, "units": 4, "sqft": 3473, "cap_rate": null, "year_built": 1956, "rent_control": "LAC4 (office/retail mixed)", "status": "Pending (probate/court-confirmation)", "upside_note": "Cap not disclosed; probate trust sale, court-confirmation required (slow/uncertain close); LAC4 flexible use near Ventura Blvd; lowest entry price", "source": "https://www.nuevo-realestate.com/real-estate/5301-comercio-lane-woodland-hills-ca-91364/25577103/183735124"},
     {"id": "vanowen15840", "address": "15840 Vanowen St", "city": "Lake Balboa", "zip": "91406", "type": "Multifamily", "price": 970000, "units": 5, "sqft": 3349, "cap_rate": 5.25, "year_built": 1952, "rent_control": "Pre-1978 -> LA RSO", "status": "Under Contract", "upside_note": "5 units, new roof 2022, copper plumbing, tremendous upside — BUT already in escrow (likely unavailable)", "source": "https://www.loopnet.com/Listing/15840-Vanowen-St-Lake-Balboa-CA/35415601/"},
     {"id": "canby7454", "address": "7454 Canby Ave", "city": "Reseda", "zip": "91335", "type": "Multifamily", "price": 1749000, "units": 9, "sqft": 6784, "cap_rate": null, "year_built": 1962, "rent_control": "Pre-1978 -> LA RSO", "status": "Active Under Contract", "upside_note": "9 units at $194k/unit, diverse mix — but in escrow; back-up only", "source": "https://www.remax.com/ca/reseda/home-details/7454-canby-ave-reseda-ca-91335/13235972936323110093/M00000093/SR26009655"},
diff --git a/data/qwen-cache.json b/data/qwen-cache.json
index c3131a0..0a1b88d 100644
--- a/data/qwen-cache.json
+++ b/data/qwen-cache.json
@@ -378,5 +378,100 @@
       "recommendation": "Watch"
     },
     "qwenScore": 65
+  },
+  "hillhaven10139": {
+    "key": "c59e67a8db1f",
+    "qwen": {
+      "thesis": "This fixer triplex in Tujunga offers a value-add opportunity with potential to significantly increase NOI through unit expansion and remodeling. The current cap rate of 5.4% and pricing for condition make it an attractive entry point for a buyer with $400k available for down and closing.",
+      "risks": [
+        "Significant rehab costs required to bring units up to market standards",
+        "Rent control restrictions may limit rental income growth",
+        "Long-term vacancy risk due to property condition and location"
+      ],
+      "upside": [
+        "Potential to expand from 3 to 5 units or add 2 ADUs, increasing income streams",
+        "Remodeling rear units could improve occupancy and rental rates",
+        "Priced below replacement cost with room for value creation"
+      ],
+      "opportunity_score": 65,
+      "recommendation": "Watch"
+    },
+    "qwenScore": 65
+  },
+  "wilkinson5214": {
+    "key": "97b0eb2ceb9c",
+    "qwen": {
+      "thesis": "This 4-unit multifamily property in prime Valley Village offers a unique opportunity to acquire a rent-controlled asset with immediate re-tenant upside, strong location, and 1031 exchange potential. With a low cap rate and a vacant owner’s unit, there is potential for value-add through re-leasing and long-term appreciation.",
+      "risks": [
+        "Low cap rate suggests limited current income potential",
+        "Rent control may limit future rent growth",
+        "Vacant unit may delay immediate cash flow"
+      ],
+      "upside": [
+        "Immediate re-tenant upside in vacant owner’s unit",
+        "Prime location near Magnolia and transit",
+        "1031 exchange eligibility for tax-deferred growth"
+      ],
+      "opportunity_score": 65,
+      "recommendation": "Watch"
+    },
+    "qwenScore": 65
+  },
+  "vannuys6329": {
+    "key": "8d415bbe5043",
+    "qwen": {
+      "thesis": "This 3-unit retail property at a high-traffic signalized intersection in Van Nuys offers a value-add opportunity with strong long-term potential due to its proximity to the planned East San Fernando Valley light rail (2027) and current below-market tenants. With a projected cap rate increase to 6.35% after improvements, the property is well-positioned for rental growth and repositioning.",
+      "risks": [
+        "Current tenants are below market, which may require time and effort to retenant at higher rates",
+        "The property is older (1947), potentially requiring significant capital for renovations",
+        "The light rail is not yet operational (2027), and its impact on value is speculative"
+      ],
+      "upside": [
+        "Significant NOI growth potential through tenant improvements and re-leasing",
+        "Strategic location with high visibility at a signalized corner",
+        "Proximity to future light rail could drive long-term appreciation and rental growth"
+      ],
+      "opportunity_score": 65,
+      "recommendation": "Watch"
+    },
+    "qwenScore": 65
+  },
+  "sepulveda10011": {
+    "key": "21124109e4bd",
+    "qwen": {
+      "thesis": "This 4-unit multifamily property in Mission Hills offers a unique opportunity to acquire a detached, condo-style complex in a prime location near major freeways. With a $400k budget covering 25% down and closing costs, the purchase is feasible and positions the buyer to capitalize on potential rental income growth in a desirable San Fernando Valley submarket.",
+      "risks": [
+        "No cap rate disclosed, making income and return projections uncertain",
+        "Rent control under LA RSO may limit rent increases and affect long-term NOI",
+        "Age of the property (1964) may imply higher maintenance and renovation costs"
+      ],
+      "upside": [
+        "Strategic location near major freeways (405, 5, 118) enhances desirability and tenant retention",
+        "Condo-style complex may allow for higher rental rates compared to traditional multifamily",
+        "Potential for value-add through unit upgrades or management improvements"
+      ],
+      "opportunity_score": 72,
+      "recommendation": "Watch"
+    },
+    "qwenScore": 72
+  },
+  "foothill6851": {
+    "key": "c7d20cd0cfc3",
+    "qwen": {
+      "thesis": "This mixed-use property in Tujunga offers a unique opportunity to acquire a remodeled freestanding commercial space and a rear duplex with potential for additional income through ADU development. With a $400k budget covering down payment and closing costs, the investor can leverage the property’s location near Glendale and the potential for rent control protections to generate stable cash flow and long-term appreciation.",
+      "risks": [
+        "Cap rate is not disclosed, making it difficult to assess current returns",
+        "Rent control may limit rental growth potential on residential units",
+        "ADU potential is speculative and subject to zoning and permitting challenges"
+      ],
+      "upside": [
+        "Potential for value-add through ADU development or further commercial improvements",
+        "Location near Glendale offers strong long-term appreciation potential",
+        "Dual APNs allow for flexible ownership and income diversification"
+      ],
+      "opportunity_score": 72,
+      "recommendation": "Watch"
+    },
+    "qwenScore": 72
   }
 }
\ No newline at end of file
diff --git a/data/ranked.json b/data/ranked.json
index b16681d..ae405d1 100644
--- a/data/ranked.json
+++ b/data/ranked.json
@@ -105,6 +105,102 @@
       "composite": 52,
       "rank": 1
     },
+    {
+      "id": "sepulveda10011",
+      "address": "10011 Sepulveda Blvd",
+      "city": "Mission Hills",
+      "zip": "91345",
+      "type": "Multifamily",
+      "price": 1450000,
+      "units": 4,
+      "sqft": 4084,
+      "cap_rate": null,
+      "year_built": 1964,
+      "rent_control": "Pre-1978 -> LA RSO",
+      "status": "Active",
+      "upside_note": "Cap not disclosed; 4-unit detached (no common walls) inside a 2.48ac condo-style complex on Sepulveda; near 405/5/118. Reduced from $1,450,000+ history.",
+      "source": "https://www.compass.com/homedetails/10011-Sepulveda-Blvd-Mission-Hills-CA-91345/1KVV1H_pid/",
+      "finance": {
+        "down": 362500,
+        "closing": 36250,
+        "cashNeeded": 398750,
+        "loan": 1087500,
+        "annualDebtService": 84642,
+        "noi": null,
+        "cashFlow": null,
+        "coc": null,
+        "dscr": null,
+        "affordable": true
+      },
+      "financeScore": 38,
+      "financeConf": "low",
+      "qwen": {
+        "thesis": "This 4-unit multifamily property in Mission Hills offers a unique opportunity to acquire a detached, condo-style complex in a prime location near major freeways. With a $400k budget covering 25% down and closing costs, the purchase is feasible and positions the buyer to capitalize on potential rental income growth in a desirable San Fernando Valley submarket.",
+        "risks": [
+          "No cap rate disclosed, making income and return projections uncertain",
+          "Rent control under LA RSO may limit rent increases and affect long-term NOI",
+          "Age of the property (1964) may imply higher maintenance and renovation costs"
+        ],
+        "upside": [
+          "Strategic location near major freeways (405, 5, 118) enhances desirability and tenant retention",
+          "Condo-style complex may allow for higher rental rates compared to traditional multifamily",
+          "Potential for value-add through unit upgrades or management improvements"
+        ],
+        "opportunity_score": 72,
+        "recommendation": "Watch"
+      },
+      "qwenScore": 72,
+      "composite": 51,
+      "rank": 2
+    },
+    {
+      "id": "foothill6851",
+      "address": "6851 Foothill Blvd",
+      "city": "Tujunga",
+      "zip": "91042",
+      "type": "Mixed-use",
+      "price": 1179999,
+      "units": 3,
+      "sqft": 1942,
+      "cap_rate": null,
+      "year_built": 1945,
+      "rent_control": "Commercial front + 2 resi (RSO on resi)",
+      "status": "Active",
+      "upside_note": "Cap not disclosed (~5% potential per listing); remodeled freestanding commercial + rear duplex (TWO APNs, can buy one/both), owner-user near Glendale; ADU potential. $608/sf.",
+      "source": "https://www.remax.com/ca/tujunga/home-details/6851-foothill-blvd-tujunga-ca-91042/11511387186448702372/M00000093/GD26109676",
+      "finance": {
+        "down": 295000,
+        "closing": 29500,
+        "cashNeeded": 324500,
+        "loan": 884999,
+        "annualDebtService": 68881,
+        "noi": null,
+        "cashFlow": null,
+        "coc": null,
+        "dscr": null,
+        "affordable": true
+      },
+      "financeScore": 38,
+      "financeConf": "low",
+      "qwen": {
+        "thesis": "This mixed-use property in Tujunga offers a unique opportunity to acquire a remodeled freestanding commercial space and a rear duplex with potential for additional income through ADU development. With a $400k budget covering down payment and closing costs, the investor can leverage the property’s location near Glendale and the potential for rent control protections to generate stable cash flow and long-term appreciation.",
+        "risks": [
+          "Cap rate is not disclosed, making it difficult to assess current returns",
+          "Rent control may limit rental growth potential on residential units",
+          "ADU potential is speculative and subject to zoning and permitting challenges"
+        ],
+        "upside": [
+          "Potential for value-add through ADU development or further commercial improvements",
+          "Location near Glendale offers strong long-term appreciation potential",
+          "Dual APNs allow for flexible ownership and income diversification"
+        ],
+        "opportunity_score": 72,
+        "recommendation": "Watch"
+      },
+      "qwenScore": 72,
+      "composite": 51,
+      "rank": 3
+    },
     {
       "id": "schoenborn17920",
       "address": "17920 Schoenborn St",
@@ -187,7 +283,7 @@
       },
       "qwenScore": 65,
       "composite": 49,
-      "rank": 2
+      "rank": 4
     },
     {
       "id": "tilden8843",
@@ -235,7 +331,7 @@
       },
       "qwenScore": 65,
       "composite": 48,
-      "rank": 3
+      "rank": 5
     },
     {
       "id": "sanfernando10004",
@@ -283,7 +379,7 @@
       },
       "qwenScore": 65,
       "composite": 48,
-      "rank": 4
+      "rank": 6
     },
     {
       "id": "sherman21627",
@@ -332,7 +428,7 @@
       },
       "qwenScore": 65,
       "composite": 48,
-      "rank": 5
+      "rank": 7
     },
     {
       "id": "owensmouth7129",
@@ -380,7 +476,7 @@
       },
       "qwenScore": 65,
       "composite": 48,
-      "rank": 6
+      "rank": 8
     },
     {
       "id": "correnti12600",
@@ -428,7 +524,7 @@
       },
       "qwenScore": 65,
       "composite": 38,
-      "rank": 7
+      "rank": 9
     },
     {
       "id": "amigo8357",
@@ -502,7 +598,7 @@
       },
       "qwenScore": 65,
       "composite": 36,
-      "rank": 8
+      "rank": 10
     },
     {
       "id": "wilbur9014",
@@ -550,7 +646,55 @@
       },
       "qwenScore": 65,
       "composite": 35,
-      "rank": 9
+      "rank": 11
+    },
+    {
+      "id": "hillhaven10139",
+      "address": "10139 Hillhaven Ave",
+      "city": "Tujunga",
+      "zip": "91042",
+      "type": "Multifamily",
+      "price": 1248888,
+      "units": 3,
+      "sqft": 3929,
+      "cap_rate": 5.4,
+      "year_built": 1949,
+      "rent_control": "LAR3; pre-1978 RSO",
+      "status": "Active",
+      "upside_note": "Broker cap 5.40%; FIXER triplex, value-add (remodel rear units to market) + expand 3->5 units / 2 ADUs (R3, 8,137sf lot). Priced for condition ($318/sf). On market 75 days.",
+      "source": "https://www.compass.com/homedetails/10139-Hillhaven-Ave-Tujunga-CA-91042/1KFS1G_pid/",
+      "finance": {
+        "down": 312222,
+        "closing": 31222,
+        "cashNeeded": 343444,
+        "loan": 936666,
+        "annualDebtService": 72902,
+        "noi": 67440,
+        "cashFlow": -5462,
+        "coc": -1.59,
+        "dscr": 0.93,
+        "affordable": true
+      },
+      "financeScore": 8,
+      "financeConf": "high",
+      "qwen": {
+        "thesis": "This fixer triplex in Tujunga offers a value-add opportunity with potential to significantly increase NOI through unit expansion and remodeling. The current cap rate of 5.4% and pricing for condition make it an attractive entry point for a buyer with $400k available for down and closing.",
+        "risks": [
+          "Significant rehab costs required to bring units up to market standards",
+          "Rent control restrictions may limit rental income growth",
+          "Long-term vacancy risk due to property condition and location"
+        ],
+        "upside": [
+          "Potential to expand from 3 to 5 units or add 2 ADUs, increasing income streams",
+          "Remodeling rear units could improve occupancy and rental rates",
+          "Priced below replacement cost with room for value creation"
+        ],
+        "opportunity_score": 65,
+        "recommendation": "Watch"
+      },
+      "qwenScore": 65,
+      "composite": 34,
+      "rank": 12
     },
     {
       "id": "burbank10701",
@@ -598,7 +742,56 @@
       },
       "qwenScore": 55,
       "composite": 32,
-      "rank": 10
+      "rank": 13
+    },
+    {
+      "id": "vannuys6329",
+      "address": "6329 Van Nuys Blvd",
+      "city": "Van Nuys",
+      "zip": "91401",
+      "type": "Retail",
+      "price": 1350000,
+      "units": 3,
+      "sqft": 3960,
+      "cap_rate": 5.17,
+      "cap_rate_projected": 6.35,
+      "year_built": 1947,
+      "rent_control": "Commercial — n/a",
+      "status": "Active (verify — listing data may be older)",
+      "upside_note": "Broker current cap 5.17% / proforma 6.35%; 3-tenant value-add retail at signalized Van Nuys Blvd & Friar hard corner; tenants below market; 1 block from planned E. SFV light-rail (2027). VERIFY listing is current.",
+      "source": "https://myelisting.com/listing/271977/6329-van-nuys-boulevard-los-angeles-ca-91401/",
+      "finance": {
+        "down": 337500,
+        "closing": 33750,
+        "cashNeeded": 371250,
+        "loan": 1012500,
+        "annualDebtService": 78805,
+        "noi": 69795,
+        "cashFlow": -9010,
+        "coc": -2.43,
+        "dscr": 0.89,
+        "affordable": true
+      },
+      "financeScore": 3,
+      "financeConf": "high",
+      "qwen": {
+        "thesis": "This 3-unit retail property at a high-traffic signalized intersection in Van Nuys offers a value-add opportunity with strong long-term potential due to its proximity to the planned East San Fernando Valley light rail (2027) and current below-market tenants. With a projected cap rate increase to 6.35% after improvements, the property is well-positioned for rental growth and repositioning.",
+        "risks": [
+          "Current tenants are below market, which may require time and effort to retenant at higher rates",
+          "The property is older (1947), potentially requiring significant capital for renovations",
+          "The light rail is not yet operational (2027), and its impact on value is speculative"
+        ],
+        "upside": [
+          "Significant NOI growth potential through tenant improvements and re-leasing",
+          "Strategic location with high visibility at a signalized corner",
+          "Proximity to future light rail could drive long-term appreciation and rental growth"
+        ],
+        "opportunity_score": 65,
+        "recommendation": "Watch"
+      },
+      "qwenScore": 65,
+      "composite": 31,
+      "rank": 14
     },
     {
       "id": "sepulveda8144",
@@ -646,7 +839,7 @@
       },
       "qwenScore": 65,
       "composite": 29,
-      "rank": 11
+      "rank": 15
     },
     {
       "id": "canby7260",
@@ -694,7 +887,55 @@
       },
       "qwenScore": 65,
       "composite": 29,
-      "rank": 12
+      "rank": 16
+    },
+    {
+      "id": "wilkinson5214",
+      "address": "5214 Wilkinson Ave",
+      "city": "Valley Village",
+      "zip": "91607",
+      "type": "Multifamily",
+      "price": 1350000,
+      "units": 4,
+      "sqft": 3664,
+      "cap_rate": 3.95,
+      "year_built": 1956,
+      "rent_control": "LARD1.5; pre-1978 RSO",
+      "status": "Active",
+      "upside_note": "Broker cap 3.95% (low) — all 4 units 2bd/1ba ~900sf, owner's unit (D) delivered VACANT (immediate re-tenant upside); prime VV walk-to-Magnolia; 1031 candidate.",
+      "source": "https://www.compass.com/homedetails/5214-Wilkinson-Ave-Valley-Village-CA-91607/1JM961_pid/",
+      "finance": {
+        "down": 337500,
+        "closing": 33750,
+        "cashNeeded": 371250,
+        "loan": 1012500,
+        "annualDebtService": 78805,
+        "noi": 53325,
+        "cashFlow": -25480,
+        "coc": -6.86,
+        "dscr": 0.68,
+        "affordable": true
+      },
+      "financeScore": 0,
+      "financeConf": "high",
+      "qwen": {
+        "thesis": "This 4-unit multifamily property in prime Valley Village offers a unique opportunity to acquire a rent-controlled asset with immediate re-tenant upside, strong location, and 1031 exchange potential. With a low cap rate and a vacant owner’s unit, there is potential for value-add through re-leasing and long-term appreciation.",
+        "risks": [
+          "Low cap rate suggests limited current income potential",
+          "Rent control may limit future rent growth",
+          "Vacant unit may delay immediate cash flow"
+        ],
+        "upside": [
+          "Immediate re-tenant upside in vacant owner’s unit",
+          "Prime location near Magnolia and transit",
+          "1031 exchange eligibility for tax-deferred growth"
+        ],
+        "opportunity_score": 65,
+        "recommendation": "Watch"
+      },
+      "qwenScore": 65,
+      "composite": 29,
+      "rank": 17
     },
     {
       "id": "tilden8837",
@@ -742,7 +983,7 @@
       },
       "qwenScore": 55,
       "composite": 28,
-      "rank": 13
+      "rank": 18
     },
     {
       "id": "vannuys12872",
@@ -790,7 +1031,7 @@
       },
       "qwenScore": 65,
       "composite": 26,
-      "rank": 14
+      "rank": 19
     },
     {
       "id": "comercio5301",
@@ -838,7 +1079,7 @@
       },
       "qwenScore": 65,
       "composite": 26,
-      "rank": 15
+      "rank": 20
     },
     {
       "id": "victory13350",
@@ -886,7 +1127,7 @@
       },
       "qwenScore": 55,
       "composite": 25,
-      "rank": 16
+      "rank": 21
     },
     {
       "id": "canoga6020",
@@ -934,7 +1175,7 @@
       },
       "qwenScore": 55,
       "composite": 21,
-      "rank": 17
+      "rank": 22
     },
     {
       "id": "vanowen15840",
@@ -982,7 +1223,7 @@
       },
       "qwenScore": 60,
       "composite": 18,
-      "rank": 18
+      "rank": 23
     },
     {
       "id": "canby7454",
@@ -1030,7 +1271,7 @@
       },
       "qwenScore": 55,
       "composite": 16,
-      "rank": 19
+      "rank": 24
     }
   ]
 }
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index 834dbba..651c5a6 100644
--- a/public/index.html
+++ b/public/index.html
@@ -53,6 +53,10 @@
   .thesis { font-size:13px; color:#cdd6e0; }
   .lst { font-size:12px; color:var(--mut); margin:2px 0 0; padding-left:16px; }
   .src { font-size:12px; } .src a { color:var(--blue); text-decoration:none; }
+  .lcbtn { background:transparent; color:var(--warn); border:1px dashed #6b5320; border-radius:14px; padding:2px 8px; font-size:11px; cursor:pointer; }
+  .lcout { font-size:11px; color:var(--mut); margin-top:6px; }
+  .lcout a { color:var(--blue); text-decoration:none; }
+  .lcout .lc-item { padding:4px 0; border-top:1px solid var(--line); }
   .small { font-size:11px; color:var(--mut); }
   .foot { color:var(--mut); font-size:12px; padding:0 28px 8px; }
 
@@ -174,7 +178,8 @@ function card(p){
     <div class="thesis">${p.qwen?.thesis||''}</div>
     ${p.qwen?.risks?.length?`<div><span class="small">Risks</span><ul class="lst">${p.qwen.risks.map(r=>`<li>${r}</li>`).join('')}</ul></div>`:''}
     ${p.upside_note?`<div class="small">💡 ${p.upside_note}</div>`:''}
-    <div class="src"><a href="${p.source}" target="_blank" rel="noopener noreferrer">View listing ↗</a></div>
+    <div class="src"><a href="${p.source}" target="_blank" rel="noopener noreferrer">View listing ↗</a> · <button class="lcbtn" data-id="${p.id}" title="Pull fresh comparable sales from the web (costs ~$0.01)">🔄 Live comps (~$0.01)</button></div>
+    <div class="lcout" id="lc-${p.id}"></div>
   </div>`;
 }
 
@@ -210,6 +215,9 @@ function getContext(){
     lines.push('COMPARABLE SALES (real, scraped 2026-06-21 — directional, verify in DD):');
     DATA.comps.comps.forEach(c=>lines.push(`- ${c.submarket} | ${c.address} | ${c.units}u | $${c.price.toLocaleString()} | ${c.cap?c.cap+'% cap':'cap n/d'}${c.ppu?` | $${c.ppu.toLocaleString()}/unit`:''} | ${c.status}${c.note?' ('+c.note+')':''}`));
   }
+  const lc = Object.entries(window.liveComps||{}).filter(([,v])=>v&&v.length);
+  if(lc.length){ lines.push('\nLIVE COMPS PULLED THIS SESSION (fresh web search):');
+    lc.forEach(([id,arr])=>{ const p=DATA.ranked.find(x=>x.id===id); lines.push(`for ${p?p.address:id}:`); arr.forEach(c=>lines.push(`  - ${c.title} — ${c.snippet}`)); }); }
   return lines.join('\n');
 }
 
@@ -261,6 +269,24 @@ async function ask(text){
   $('#send').disabled=false; $('#q').focus();
 }
 
+// ---- live comps (gated, ~$0.01/call) ----
+window.liveComps = {};
+async function fetchLiveComps(id){
+  const p = DATA.ranked.find(x=>x.id===id); if(!p) return;
+  const out = $('#lc-'+id); if(!out) return;
+  out.innerHTML = '<span class="small">…pulling fresh comps (~$0.01)…</span>';
+  try{
+    const r = await fetch('/api/comps',{method:'POST',headers:{'Content-Type':'application/json'},
+      body:JSON.stringify({address:p.address,city:p.city,type:p.type})});
+    const j = await r.json();
+    if(j.needsKey){ out.innerHTML = `<span class="b warn">⚠ ${j.message}</span>`; return; }
+    if(j.error){ out.innerHTML = `<span class="b bad">⚠ ${j.error}</span>`; return; }
+    window.liveComps[id] = j.comps||[];
+    out.innerHTML = `<div class="small">Live comps (cost ${j.cost}) — ask the chat to compare:</div>` +
+      (j.comps||[]).map(c=>`<div class="lc-item"><a href="${c.url}" target="_blank" rel="noopener noreferrer">${c.title||c.url}</a><br>${c.snippet||''}</div>`).join('');
+  }catch(e){ out.innerHTML = `<span class="b bad">⚠ ${e.message}</span>`; }
+}
+
 // ---- boot ----
 fetch('data/comps.json').then(r=>r.json()).then(c=>{ if(DATA) DATA.comps=c; else window.__comps=c; }).catch(()=>{});
 fetch('data/ranked.json').then(r=>r.json()).then(d=>{
@@ -286,6 +312,7 @@ fetch('data/ranked.json').then(r=>r.json()).then(d=>{
   $('#examples').innerHTML = EX.map(x=>`<button class="ex">${x}</button>`).join('');
   $('#examples').onclick=e=>{ if(e.target.classList.contains('ex')){ $('#q').value=e.target.textContent; $('#q').focus(); } };
   $('#chatform').onsubmit=e=>{ e.preventDefault(); const t=$('#q').value.trim(); if(!t) return; $('#q').value=''; ask(t); };
+  $('#grid').onclick=e=>{ const b=e.target.closest('.lcbtn'); if(b) fetchLiveComps(b.dataset.id); };
   recompute(); render();
 }).catch(e=>{ $('#sub').textContent='Failed to load data/ranked.json — run: npm run analyze'; });
 </script>
diff --git a/scripts/serve.js b/scripts/serve.js
index 36f1393..116d3b6 100644
--- a/scripts/serve.js
+++ b/scripts/serve.js
@@ -3,6 +3,7 @@
 // Run: node scripts/serve.js   ->  http://127.0.0.1:9911
 const express = require('express');
 const path = require('path');
+const fs = require('fs');
 const mountClaudeChat = require('../claude-chat-bridge.cjs');
 
 const ROOT = path.join(__dirname, '..');
@@ -10,6 +11,30 @@ const PORT = process.env.PORT || 9911;
 const app = express();
 app.use(express.json({ limit: '256kb' }));
 
+// EXA key for the live-comps route: env var or project .env (gitignored). No key -> route degrades gracefully.
+function exaKey() {
+  if (process.env.EXA_API_KEY) return process.env.EXA_API_KEY;
+  try { const m = fs.readFileSync(path.join(ROOT, '.env'), 'utf8').match(/^EXA_API_KEY=(.+)$/m); if (m) return m[1].trim(); } catch (_) {}
+  return null;
+}
+
+// GATED, cost-surfaced live comps: hits Exa REST (~$0.01/call). Returns {needsKey} if unkeyed.
+app.post('/api/comps', async (req, res) => {
+  const { address = '', city = '', type = 'multifamily' } = req.body || {};
+  const key = exaKey();
+  if (!key) return res.json({ needsKey: true, message: 'Live comps need an Exa API key. Get one at dashboard.exa.ai/api-keys, then add EXA_API_KEY to the project .env (or paste it to Steve to route via the secrets skill).' });
+  const query = `recently sold or active comparable ${type} investment property near ${address}, ${city} San Fernando Valley with price, units, and cap rate`;
+  try {
+    const r = await fetch('https://api.exa.ai/search', {
+      method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': key },
+      body: JSON.stringify({ query, numResults: 6, type: 'auto', contents: { text: { maxCharacters: 600 } } })
+    });
+    const j = await r.json();
+    const comps = (j.results || []).map(x => ({ title: x.title, url: x.url, snippet: (x.text || '').replace(/\s+/g, ' ').slice(0, 320) }));
+    res.json({ comps, cost: '~$0.01', query });
+  } catch (e) { res.status(502).json({ error: String(e.message || e) }); }
+});
+
 // The chat can DRIVE the viewer. This protocol is how it does it.
 const SYSTEM_EXTRA = `You are a commercial-real-estate investment analyst embedded in the "San Fernando Valley CRE — $400k Down" ranking viewer. The context block below is the LIVE ranked dataset the user is looking at (every property, its price, units, cap rate, cash-on-cash, DSCR, composite score, rank, recommendation, status, and notes), plus the financing assumptions and the analyst verdict.
 

← a22e0f0 Chat: add per-unit rent rolls + real SFV sale comps to groun  ·  back to Commercialrealestate  ·  Live comps -> Browserbase/Crexi (drop Exa dependency) 89f1ab2 →