[object Object]

← back to Commercialrealestate

CRCP firm-IG: cache thumbnails locally (fix IG hotlink block), +7 firms (CBRE/JLL/Cushman/Newmark/Elliman/BHHS-CA), short-alias matching

4211af8df4ddd2d31bf25db00d4becca4ca9926d · 2026-07-17 09:56:33 -0700 · Steve Abrams

Files touched

Diff

commit 4211af8df4ddd2d31bf25db00d4becca4ca9926d
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Jul 17 09:56:33 2026 -0700

    CRCP firm-IG: cache thumbnails locally (fix IG hotlink block), +7 firms (CBRE/JLL/Cushman/Newmark/Elliman/BHHS-CA), short-alias matching
---
 data/firm-ig-cache.json                            | 324 +++++++++++++++++----
 data/firm-ig-map.json                              |   9 +-
 data/firm-ig-thumbs/bhhscaliforniaproperties-0.jpg | Bin 0 -> 184333 bytes
 data/firm-ig-thumbs/bhhscaliforniaproperties-1.jpg | Bin 0 -> 30657 bytes
 data/firm-ig-thumbs/bhhscaliforniaproperties-2.jpg | Bin 0 -> 283006 bytes
 data/firm-ig-thumbs/cbre-0.jpg                     | Bin 0 -> 141368 bytes
 data/firm-ig-thumbs/cbre-1.jpg                     | Bin 0 -> 19929 bytes
 data/firm-ig-thumbs/cbre-2.jpg                     | Bin 0 -> 466283 bytes
 data/firm-ig-thumbs/coldwellbanker-0.jpg           | Bin 0 -> 85124 bytes
 data/firm-ig-thumbs/coldwellbanker-1.jpg           | Bin 0 -> 192542 bytes
 data/firm-ig-thumbs/coldwellbanker-2.jpg           | Bin 0 -> 818468 bytes
 data/firm-ig-thumbs/compass-0.jpg                  | Bin 0 -> 837154 bytes
 data/firm-ig-thumbs/compass-1.jpg                  | Bin 0 -> 888768 bytes
 data/firm-ig-thumbs/compass-2.jpg                  | Bin 0 -> 665303 bytes
 data/firm-ig-thumbs/cushwake-0.jpg                 | Bin 0 -> 87228 bytes
 data/firm-ig-thumbs/cushwake-1.jpg                 | Bin 0 -> 501772 bytes
 data/firm-ig-thumbs/cushwake-2.jpg                 | Bin 0 -> 494852 bytes
 data/firm-ig-thumbs/douglaselliman-0.jpg           | Bin 0 -> 353486 bytes
 data/firm-ig-thumbs/douglaselliman-1.jpg           | Bin 0 -> 335078 bytes
 data/firm-ig-thumbs/douglaselliman-2.jpg           | Bin 0 -> 240307 bytes
 data/firm-ig-thumbs/exprealty-0.jpg                | Bin 0 -> 260553 bytes
 data/firm-ig-thumbs/exprealty-1.jpg                | Bin 0 -> 305997 bytes
 data/firm-ig-thumbs/exprealty-2.jpg                | Bin 0 -> 353108 bytes
 data/firm-ig-thumbs/jll-0.jpg                      | Bin 0 -> 93293 bytes
 data/firm-ig-thumbs/jll-1.jpg                      | Bin 0 -> 336058 bytes
 data/firm-ig-thumbs/jll-2.jpg                      | Bin 0 -> 543663 bytes
 data/firm-ig-thumbs/kellerwilliams-0.jpg           | Bin 0 -> 647622 bytes
 data/firm-ig-thumbs/kellerwilliams-1.jpg           | Bin 0 -> 43237 bytes
 data/firm-ig-thumbs/kellerwilliams-2.jpg           | Bin 0 -> 145154 bytes
 data/firm-ig-thumbs/lyonstahl-0.jpg                | Bin 0 -> 275226 bytes
 data/firm-ig-thumbs/lyonstahl-1.jpg                | Bin 0 -> 66217 bytes
 data/firm-ig-thumbs/lyonstahl-2.jpg                | Bin 0 -> 141404 bytes
 data/firm-ig-thumbs/newmark-0.jpg                  | Bin 0 -> 702812 bytes
 data/firm-ig-thumbs/newmark-1.jpg                  | Bin 0 -> 423227 bytes
 data/firm-ig-thumbs/newmark-2.jpg                  | Bin 0 -> 682884 bytes
 data/firm-ig-thumbs/pinnacleestate-0.jpg           | Bin 0 -> 27098 bytes
 data/firm-ig-thumbs/pinnacleestate-1.jpg           | Bin 0 -> 191103 bytes
 data/firm-ig-thumbs/pinnacleestate-2.jpg           | Bin 0 -> 189179 bytes
 data/firm-ig-thumbs/sothebysrealty-0.jpg           | Bin 0 -> 73877 bytes
 data/firm-ig-thumbs/sothebysrealty-1.jpg           | Bin 0 -> 139209 bytes
 data/firm-ig-thumbs/sothebysrealty-2.jpg           | Bin 0 -> 270278 bytes
 data/firm-ig-thumbs/theagencyre-0.jpg              | Bin 0 -> 278059 bytes
 data/firm-ig-thumbs/theagencyre-1.jpg              | Bin 0 -> 381818 bytes
 data/firm-ig-thumbs/theagencyre-2.jpg              | Bin 0 -> 300254 bytes
 public/index.html                                  |  10 +-
 scripts/refresh-firm-ig.js                         |  26 +-
 46 files changed, 300 insertions(+), 69 deletions(-)

diff --git a/data/firm-ig-cache.json b/data/firm-ig-cache.json
index 6e966ea..ef8a4f3 100644
--- a/data/firm-ig-cache.json
+++ b/data/firm-ig-cache.json
@@ -5,7 +5,7 @@
       {
         "caption": "Summer is in full swing, and while many are easing into vacation mode, our Compass agents are keeping the momentum going. This latest roundup features a West Village Condo sale for the Biebers, a look",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/750686323_18608471539042769_522847123451128948_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=102&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=9PjtoUsC4_4Q7kNvwEW8M9S&_nc_oc=AdplMEr-WjlSOEhd6GTDqNAeqeo2BAfp1IWuPZkma9rSj-PthHolHZS6HE3P5xr4qgwU2qgnlML1i-uSOsgfPn7m&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=XGsEdAnnqARMT081zF4HHA&oh=00_AQA7bx77jOJd-oQktJFeOQHyMiX_G-9QcA9_qNOqkw5c5Q&oe=6A601BC7",
+        "image": "data/firm-ig-thumbs/compass-0.jpg",
         "permalink": "https://www.instagram.com/p/Da5Rmn0n03P/",
         "timestamp": "2026-07-17T13:01:33+0000",
         "likes": null,
@@ -14,7 +14,7 @@
       {
         "caption": "Featuring inspiring Lake Michigan views and ideally located on renowned East Lake Shore Drive, this magnificently reimagined half-floor residence offers an extraordinary expression of refined city liv",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax7-1.cdninstagram.com/v/t51.82787-15/747643165_18608221084042769_3998907389177381327_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=105&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=fYpyjSwWjTgQ7kNvwGQHt4c&_nc_oc=Ado5YTL4m2pDyGbx54BKISNv0BRrrYnc_VPCB-WQPN9bPAySY4Gyjz6fnRqgoASYS6g09brN_pTnifzF35XyEQoF&_nc_zt=23&_nc_ht=scontent-lax7-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=XGsEdAnnqARMT081zF4HHA&oh=00_AQDxKyDtC8Vfauw3gAx4A8BaEsqFeD9utbfwq3WSt4ZrEQ&oe=6A601EBD",
+        "image": "data/firm-ig-thumbs/compass-1.jpg",
         "permalink": "https://www.instagram.com/p/Da3BYGpGdp0/",
         "timestamp": "2026-07-16T16:01:37+0000",
         "likes": null,
@@ -23,14 +23,14 @@
       {
         "caption": "We're excited to welcome The Antinozzi Group back to Compass in Texas.⁠\n⁠\nLed by Joe Antinozzi and Kristin Weaver, the team closed $30M in residential sales in 2025 and brings a reputation of both mar",
         "media_type": "IMAGE",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/749036671_18607883563042769_3842017792772914283_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=102&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiRkVFRC5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=p7_i_jNgPCAQ7kNvwFxHLyl&_nc_oc=AdoeVdE3DXCfDBzWEZX3oSk0r9PLKdmlbn_wD4LdHhDuU-brk1DljFo2K52IuvlzAo_JMpaBmV5ksjSd40Ussoqg&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=XGsEdAnnqARMT081zF4HHA&oh=00_AQAf-yimXgYOssoxZz4lSZykCMRSbFiXYva8H1uvemPwZw&oe=6A604233",
+        "image": "data/firm-ig-thumbs/compass-2.jpg",
         "permalink": "https://www.instagram.com/p/Da0H7_xjtNh/",
         "timestamp": "2026-07-15T13:00:57+0000",
         "likes": null,
         "comments": 6
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:00.324Z",
+    "fetchedAt": "2026-07-17T16:55:23.271Z",
     "error": null
   },
   "coldwellbanker": {
@@ -39,16 +39,16 @@
       {
         "caption": "A home isn't just an address—it's the place where life truly happens: first steps, family dinners, and lifelong memories. Our promise is to deliver thoughtful experiences that help you find a place wh",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax7-1.cdninstagram.com/v/t51.82787-15/750554438_18613888075039770_6967571392718459592_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=101&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=nS88YcJ-0jgQ7kNvwHxohFM&_nc_oc=AdpYfHVRvATMZ3sJk30vaZsna-ynXxTypSj5Jpu-rfkzNwonOtrq8RZ0Xk65-g-zyEDBtj1MogOjhziJ6GSPMGUv&_nc_zt=23&_nc_ht=scontent-lax7-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=sQ6trQafXGDFU8qaY1a-Lg&_nc_tpa=Q5bMBQEKuDLJBiP-iI4H_Bpb1UnVbFpInyA7umHBy8v4wcUxKVslrticm8ckX2cn8hrO8-Scc0eOs-Qf&oh=00_AQBcphncZ_ieVltwLMhquQrHMMAYet-2LmyINcYqBDjM-Q&oe=6A602377",
+        "image": "data/firm-ig-thumbs/coldwellbanker-0.jpg",
         "permalink": "https://www.instagram.com/reel/Da5f_KiiCqO/",
         "timestamp": "2026-07-17T15:07:35+0000",
-        "likes": 57,
+        "likes": 63,
         "comments": 3
       },
       {
         "caption": "We've been in the business of home since 1906. That's 120 years of front doors, floor plans, and families finding the place they belong. To celebrate our 120th anniversary, we’re taking a look back at",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/746131412_18613361341039770_6897810362588387519_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=106&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=6zOZT_SmuFQQ7kNvwFXD72-&_nc_oc=Ado-DOR0GE5RMLgxca3y_5FzZuX6wGRCckdysGQrEWe67T2HFqPpXpt1VfJwLp_SpdeWnV4jln1zikFEJymL9vI2&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=sQ6trQafXGDFU8qaY1a-Lg&_nc_tpa=Q5bMBQFQghZ6d6WUGUdKhtOy74BcHJTObfcdg6dgzFjgWLqP6EiqUV2lJ42GZU8pIJvz00RBpqpDTvZ9&oh=00_AQCUCnOs97H7YSWp72M4oyVnfxonO2ODI7SZLqiP27rO1w&oe=6A6033F4",
+        "image": "data/firm-ig-thumbs/coldwellbanker-1.jpg",
         "permalink": "https://www.instagram.com/reel/Da0Ii63jDyO/",
         "timestamp": "2026-07-15T13:06:33+0000",
         "likes": 210,
@@ -57,23 +57,32 @@
       {
         "caption": "Comfy couches.\nThen, now, and forever.",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/746385753_18612654502039770_6513334560268129460_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=vo0tjlpyUdoQ7kNvwFiSQ_W&_nc_oc=AdpEh_eeVznQtHibOwvw8uNe91hq0Zg7NfMYK_e0vKC-iPUdonjLj1dEQrd3DdCLCu_GiAAcJatT8ST-ZABCsVLI&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=sQ6trQafXGDFU8qaY1a-Lg&oh=00_AQBOGATKNeg0vRnJJdtmZCiWivB_cT3bqmIRBvhyY2Y_jQ&oe=6A60213F",
+        "image": "data/firm-ig-thumbs/coldwellbanker-2.jpg",
         "permalink": "https://www.instagram.com/p/DavAG7GlMNk/",
         "timestamp": "2026-07-13T13:16:16+0000",
         "likes": 140,
         "comments": 3
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:01.686Z",
+    "fetchedAt": "2026-07-17T16:55:24.629Z",
     "error": null
   },
   "kellerwilliams": {
     "followers_count": 90905,
     "posts": [
+      {
+        "caption": "💔 RIP to one of the greats. You will be missed. Kw\n\nrodneyholmes1 #rodneyholmes #kellerwilliamskwahtro",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/kellerwilliams-0.jpg",
+        "permalink": "https://www.instagram.com/p/Da5rGpsFPkk/",
+        "timestamp": "2026-07-17T16:44:18+0000",
+        "likes": 27,
+        "comments": 1
+      },
       {
         "caption": "📣 Live Grateful Grass release coming 7/21!\n\n🎻 Recorded at bluegrasshall in Owensboro, Kentucky \n\n🔊 Pre-save now\n\n📍Catch them live\n \n7/24 tapshackduck NC\n7/30 anchorrockclub NJ\n7/31 thehamiltonlive",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.71878-15/730210510_1579190403081188_1913101322738021329_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=103&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=mQEVhERiSz8Q7kNvwHUC3bV&_nc_oc=AdrWPTB_sVEDk4DfoWT_kIxpZLXbzfR5NcZUEsIXv7paJzuVKN_ecvw_LlL2gW6JWIQydMYrtzC8TOhl0V4oSAU6&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=ek8aNlYqXlxzicO5voolbQ&_nc_tpa=Q5bMBQG9-ONgVyE0HiXuAHJp15cownGeSfQ8Mo7pZ_hulMHSGQNJdS29Uqo22dzT8SEum_iNn89NkVEa&oh=00_AQCEtawlr28BZKETCFaWqWfh9ia8zPh91sM_J6Q6Zm7-fg&oe=6A604937",
+        "image": "data/firm-ig-thumbs/kellerwilliams-1.jpg",
         "permalink": "https://www.instagram.com/reel/Da0iLLZsbbc/",
         "timestamp": "2026-07-15T17:14:37+0000",
         "likes": 99,
@@ -82,91 +91,82 @@
       {
         "caption": "July 17th 🐟 Raleigh lincoln919",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/747177909_18601646926050521_3217427174456035301_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=107&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=FhFI13LuhgkQ7kNvwEb6ilI&_nc_oc=Adqc_TpTSbk0_hudE7XGmUwZqrZ92HtZ401iGIdFDmg9bLAb9WAfuHWAuSvUbnep-HYb-Ime6Eu3gBTND7KXORur&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=ek8aNlYqXlxzicO5voolbQ&_nc_tpa=Q5bMBQHWN5x_6hrXPAULxkrU4T8FKmnWjuZ2UynmaJC7AHddvjff4y_Kkc4uVTzImW33l-FIZBjV_Tpv&oh=00_AQDZkLTUodxhplsqi3gtoGLHq2MAZ_LRxG1Pwf87j_YtUA&oe=6A602634",
+        "image": "data/firm-ig-thumbs/kellerwilliams-2.jpg",
         "permalink": "https://www.instagram.com/reel/Dax8SF9xNr7/",
         "timestamp": "2026-07-14T16:45:07+0000",
         "likes": 185,
         "comments": 14
-      },
-      {
-        "caption": "📣 Raleigh & Charleston THIS weekend! \n\nlincoln919 \nDoors at 10:30 pm \n\nholycitybrewing \nFREE Show!",
-        "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/743805665_18601371769050521_5437949942100872796_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=102&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=cz8ESNn0Jo0Q7kNvwEiBBfX&_nc_oc=AdptbOGGZVKlNy3-8UKZ8arnPrKca_WrGuT0o03ygLPt-c8rsjJuIhV-FYyp7qbok7hqQaeJ44S0a6oayJLf4SNb&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=ek8aNlYqXlxzicO5voolbQ&oh=00_AQDqqJJWFxC4UhXVCqpd4C_u8E5PjQjKqbVypYBpfPrb5A&oe=6A602895",
-        "permalink": "https://www.instagram.com/p/DavW9T2FPxC/",
-        "timestamp": "2026-07-13T16:35:51+0000",
-        "likes": 70,
-        "comments": 3
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:02.682Z",
+    "fetchedAt": "2026-07-17T16:55:25.894Z",
     "error": null
   },
   "theagencyre": {
-    "followers_count": 511210,
+    "followers_count": 511209,
     "posts": [
+      {
+        "caption": "Situated on one of Islamorada’s most prestigious bayfront streets, this exceptional waterfront estate by Charles Vincent George offers panoramic open-water views, spectacular sunsets and seamless indo",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/theagencyre-0.jpg",
+        "permalink": "https://www.instagram.com/p/Da5rXFeFO-3/",
+        "timestamp": "2026-07-17T16:46:33+0000",
+        "likes": 5,
+        "comments": 0
+      },
       {
         "caption": "Set behind a private gate in Encino, 4938 Hesperia Ave is a brand-new 2026 construction featuring 5 bedrooms, 5.5 baths, and a media room across 4,300+ sq ft on a 7,000+ sq ft lot.\n\nA striking natural",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/748939043_18604725730040393_8245134735345340467_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=111&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=gko_PEmYeG8Q7kNvwEy0Q4H&_nc_oc=AdobgjjFwQJMndTU5RbbAzX2BLDlI8knGYlRpT9VyFJq5GlNfYhN9fPptI7Rlbd1x7HFIzQsefGIPLkA7Saxwygb&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=l8XCPZGHKKaWjQ-jRnTJ7A&oh=00_AQD4Qggu7v966pUcvfXoqZLFZ2O9Ddb5PntKEhpaj-mzFw&oe=6A6026AD",
+        "image": "data/firm-ig-thumbs/theagencyre-1.jpg",
         "permalink": "https://www.instagram.com/p/Da5hpXcFBAE/",
         "timestamp": "2026-07-17T15:21:39+0000",
-        "likes": 61,
+        "likes": 66,
         "comments": 6
       },
       {
         "caption": "Mar a Mar is not simply an oceanfront residence. It is a singular intersection of heritage, geography, privacy, and lifestyle, set inside Casco Viejo, Panama’s UNESCO World Heritage district, with the",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/746947056_18604476892040393_1000854091231954752_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=103&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=J4DH3hgO58QQ7kNvwHFuky2&_nc_oc=AdptaV1L-1y2qgiyG0ukM6vMDmlm_ZNDFunx7nl4Rp6emJQXkULuVYh1Gidw7Gh0IBA7j0AL56D84U5JLcsuKgms&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=l8XCPZGHKKaWjQ-jRnTJ7A&oh=00_AQD-Gu-Iua7Gvv2pB7eCtnchAf2geUfd33c-R89be0_jGQ&oe=6A601BDD",
+        "image": "data/firm-ig-thumbs/theagencyre-2.jpg",
         "permalink": "https://www.instagram.com/p/Da3P_wSGvyI/",
         "timestamp": "2026-07-16T18:08:57+0000",
         "likes": 514,
         "comments": 2
-      },
-      {
-        "caption": "Discover modern Mediterranean luxury in Calabasas’ prestigious Mountain View Estates. This fully remodeled six-bedroom estate features designer finishes, seamless indoor-outdoor living, a gourmet kitc",
-        "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/748541082_18604456504040393_6197290889385247799_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=1ugvfxMoF8MQ7kNvwGuwQSb&_nc_oc=AdohnnPWqEyY0pnohpwZhFkfFkzZ6oxYydxnbtErsjc35vgLyHqljoaMdsPxvoEG4jnE2zRWUtA2rJy9k2F2fOpj&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=l8XCPZGHKKaWjQ-jRnTJ7A&oh=00_AQCG79E3Ko1TJPY9KWKuU6pxGv5u3u0u7oQJmkdJRmQfRw&oe=6A602678",
-        "permalink": "https://www.instagram.com/p/Da3IAPClBuw/",
-        "timestamp": "2026-07-16T16:59:06+0000",
-        "likes": 497,
-        "comments": 10
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:03.660Z",
+    "fetchedAt": "2026-07-17T16:55:27.464Z",
     "error": null
   },
   "sothebysrealty": {
-    "followers_count": 570046,
+    "followers_count": 570051,
     "posts": [
       {
         "caption": "This distinguished home features cedar shingles, stone accents, and heavy timber framing with a rare woodland setting, immersed in a preserved forest canopy.\n\nExtraordinary property of the day represe",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.71878-15/749066891_1039783681784559_2743534769634914554_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=102&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=0bXILFpeR5gQ7kNvwESLSnF&_nc_oc=Ado1taj_UXBEB4uRFCuuaZHXlex1ZnlrptDW3j-JixFWVaDK70kX60PxJNYtPJmgas2hq_iGEqvECibSQQOaeF0m&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=fmHHwkspLRH-Ns36jSkbuQ&_nc_tpa=Q5bMBQGx-Mjwlm7LNv-1fJMv0u4V6UUAsFAeB_wvhjnGNpN6BafBQFM2-JiDhqESrz8v_Rg1KrRj0-WT&oh=00_AQB_cKa852dDmCbiFjuvvZTNdJVFs2mDDkoic6_blAOTww&oe=6A6040F3",
+        "image": "data/firm-ig-thumbs/sothebysrealty-0.jpg",
         "permalink": "https://www.instagram.com/reel/Da5mvODvYtx/",
         "timestamp": "2026-07-17T16:07:24+0000",
-        "likes": 63,
-        "comments": 0
+        "likes": 71,
+        "comments": 1
       },
       {
         "caption": "The world's leading cities are proving their staying power. \n \nExplore the resilience shaping today's urban markets, and what it means for the future of luxury real estate in our Mid-Year 2026 Luxury ",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/749981378_18609720886032383_1689289886547334587_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=FqP0Vrz8BE4Q7kNvwFQ2wNH&_nc_oc=Ado61S0z_oVbsv9KGRsaqMbKPLPMiE0vnW2bmGur9CTVuM3WzjemtJXMOL2T3j0fmahAJigiPUPmR3S-4Ca3MGik&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=fmHHwkspLRH-Ns36jSkbuQ&_nc_tpa=Q5bMBQFqXiIM01e1jt5A2b2e5wEN46jK5hS8e8CcF_nucXUtLm3L6fb3rdTUY5tqKgJt5Apy9dr1z9g7&oh=00_AQBNJXGlCRYqKTHVmntCuZbnLp4jHId-qdLawJBzvJVcgQ&oe=6A60361B",
+        "image": "data/firm-ig-thumbs/sothebysrealty-1.jpg",
         "permalink": "https://www.instagram.com/reel/Da3hS5hD1Al/",
         "timestamp": "2026-07-16T20:41:06+0000",
-        "likes": 357,
+        "likes": 358,
         "comments": 14
       },
       {
         "caption": "Unfolding along a coveted stretch of waterfront, this estate features timeless stone-and-timber craftsmanship, with sweeping lake views, an expansive boathouse, and a rare connection to nature definin",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/748829438_18609661501032383_3618950371051205098_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=iiY4UE9FXxIQ7kNvwF7962a&_nc_oc=AdrbGGdJiHz2Y5ECbHrLe59HzXbRyf-EG2DUhMsE6-10etKlf5GyKTvpDVlwKTiRcNk2gLYeQFDEc2iU8gMP42-C&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=fmHHwkspLRH-Ns36jSkbuQ&_nc_tpa=Q5bMBQFbxHopDl1nXQafNCLgGJGVp6TGBVEK1Mmmu0mhLhmZArxPhIwKAPQmHRXfvXywi1uTDohZs29C&oh=00_AQD7Cxr1kJWUH1u4yE9Xxut0337641TfgTU6TSa_bJsp2Q&oe=6A601755",
+        "image": "data/firm-ig-thumbs/sothebysrealty-2.jpg",
         "permalink": "https://www.instagram.com/reel/Da3EUYhBmrw/",
         "timestamp": "2026-07-16T16:27:40+0000",
-        "likes": 304,
+        "likes": 305,
         "comments": 5
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:04.671Z",
+    "fetchedAt": "2026-07-17T16:55:28.559Z",
     "error": null
   },
   "exprealty": {
@@ -175,7 +175,7 @@
       {
         "caption": "San Diego, the countdown is on. 🌴\n\nFrom July 28–30, the biggest conversations in residential real estate are happening at Inman Connect, and eXp Realty is taking center stage. Our leaders are steppin",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-1.cdninstagram.com/v/t51.82787-15/747862671_18209490199347274_9033106270069655019_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=eobbCZuLwUwQ7kNvwHlQEfQ&_nc_oc=Adp2_H0kTlUp2Q0RFERZ_x3DVmW3NIx-fl7PPseHFS_wNeaqJGMlvJ9wWK1DLoAgh0uJ11qDc7DkKOETLq37ayCO&_nc_zt=23&_nc_ht=scontent-lax3-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=W2uSz-AlKVJoi_imxGlAzA&oh=00_AQBNZGgkcbmOWW3I2YtIYDAtPv-01DQLvkC99orkloST-Q&oe=6A601DF5",
+        "image": "data/firm-ig-thumbs/exprealty-0.jpg",
         "permalink": "https://www.instagram.com/p/Da3Xo0gERRV/",
         "timestamp": "2026-07-16T19:15:01+0000",
         "likes": 108,
@@ -184,7 +184,7 @@
       {
         "caption": "cmmtoday, Former NAHREP National President and Freddie Mac Director of Affordable Lending, is officially an agent at eXp!\n\nIf you've ever wondered what someone who's spent decades inside housing leade",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/749231874_18209481214347274_6338969566137629113_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=106&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=Exwvpt_y2_YQ7kNvwGTsmOH&_nc_oc=AdpnpWZi9JaPgVi5PHIoxaVgfKDUSeJ99oKRqxeVAl9sdGlPCqjn4wTzKHa__4ROIB5vSB1XwW7Gpa2ReLJj5qhA&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=W2uSz-AlKVJoi_imxGlAzA&oh=00_AQDU_RWJLYiv4u9WOp358Iwfc7yA9k3bM_cIi7j1UOpbog&oe=6A603DF8",
+        "image": "data/firm-ig-thumbs/exprealty-1.jpg",
         "permalink": "https://www.instagram.com/p/Da3B24bjB7m/",
         "timestamp": "2026-07-16T16:05:46+0000",
         "likes": 201,
@@ -193,14 +193,14 @@
       {
         "caption": "We're #eXpProud to be recognized as a Best Company to Work For 🏆\n\nThis recognition reflects what our agents, staff, and leadership have built together: a culture that puts people first, empowers inno",
         "media_type": "IMAGE",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/748777098_18209395837347274_3529007175881598291_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=100&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiRkVFRC5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=-EQUGmQMyX8Q7kNvwHVrV6D&_nc_oc=AdrwcNRiRshPZRzylk9xlB89Yuj8OkQ59ocATtQHDdLyPasM7muVfCa6fGxQvCfjVN1hUMF0yU-jf0MreSgRiveN&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=W2uSz-AlKVJoi_imxGlAzA&oh=00_AQDfzk_kQE4YP_45R3r5tJ5MAg88tjply-0kLCxL1C7yAA&oe=6A603673",
+        "image": "data/firm-ig-thumbs/exprealty-2.jpg",
         "permalink": "https://www.instagram.com/p/Da1FukPGisj/",
         "timestamp": "2026-07-15T22:00:54+0000",
         "likes": 224,
         "comments": 14
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:06.538Z",
+    "fetchedAt": "2026-07-17T16:55:30.121Z",
     "error": null
   },
   "lyonstahl": {
@@ -209,7 +209,7 @@
       {
         "caption": "🏡 Featured Listings 🏡\nFrom prime Los Angeles properties to investment-ready multifamily deals, our latest listings have something for every buyer. Explore standout opportunities across Southern Cali",
         "media_type": "CAROUSEL_ALBUM",
-        "image": "https://scontent-lax7-1.cdninstagram.com/v/t51.82787-15/748597431_18603976531037179_426772753996930367_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=101&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=zXQpZWYAurEQ7kNvwHOrK-E&_nc_oc=AdqdujpYbCee91hGZLWo7z89zSOA4910wLyNaap6exl4_okW8shxDERehO2v6X2q0ChkzMEmBwiG8YU30Dffh-6A&_nc_zt=23&_nc_ht=scontent-lax7-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=kRQ6VMgG9junWSZXrbJosA&oh=00_AQCqkDEWh4P6qTg-fYiISMkJj7duoQn41KYWzkXVDdF-Dw&oe=6A60336B",
+        "image": "data/firm-ig-thumbs/lyonstahl-0.jpg",
         "permalink": "https://www.instagram.com/p/Da00nAFEuPT/",
         "timestamp": "2026-07-15T19:31:14+0000",
         "likes": 12,
@@ -218,7 +218,7 @@
       {
         "caption": "We asked for volunteers to film a day in the life at Lyon Stahl and Emma said \"say less\" 🎬\n\nNot only did she take on the challenge — she even edited the entire thing herself. no notes, no complaints,",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.71878-15/742198735_1758366155514586_7175471187051763776_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=100&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=w31nX0-EokYQ7kNvwHAp8ky&_nc_oc=AdrPJ-wmh1NmIslsDTOBEC8e-i2_z8Hxu_aHD7yQMyrEryRGV5XiWFdHRnFofc-08hA5sqQjD4SJcNFANwOrS8rL&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=kRQ6VMgG9junWSZXrbJosA&_nc_tpa=Q5bMBQFVkGwrFvS5ySTrtttYqRJ-fKQ_vlNfXIniF1JX6g9T-HUBxhoa9cLNit3TZRh7r-jk9QSZewYs&oh=00_AQBGp8KrKVSAoWz8wUQODitTscybnooRvIKATEq5k2dFZA&oe=6A6036D7",
+        "image": "data/firm-ig-thumbs/lyonstahl-1.jpg",
         "permalink": "https://www.instagram.com/reel/DanuzJ2CfGv/",
         "timestamp": "2026-07-10T17:31:00+0000",
         "likes": 18,
@@ -227,14 +227,14 @@
       {
         "caption": "Another Playbook Session down 🏆📘\n\nThis time we sat down with David Saghian — 5.5 years in and already building the kind of career most agents are chasing. He broke down his actual playbook for our t",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/743564336_18602173147037179_4531918781795178623_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=103&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=fnPiJFAOv4oQ7kNvwFAhXXH&_nc_oc=AdopNKnV_P7K44pSqb7cDi-lpC3e2dDHDHtUZ98Sy0nY6QkhFZuVXcvFvIXErb8LyTev4sH9z-orb4rAGJAEEEfs&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=kRQ6VMgG9junWSZXrbJosA&_nc_tpa=Q5bMBQE-4Er9Cb_Ugbj2HFdzsfA2JvF1-EsxK2TrP84_GwRw2cbZmGJaRkZrX9yCwdKkS0LDOeW3XHZu&oh=00_AQAmZTfdfXYtNW-H4giaJLFQkSYQZw1lAcWy5fVDs-6X5g&oe=6A60207A",
+        "image": "data/firm-ig-thumbs/lyonstahl-2.jpg",
         "permalink": "https://www.instagram.com/reel/DalMjVyjn-L/",
         "timestamp": "2026-07-09T17:55:02+0000",
         "likes": 61,
         "comments": 0
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:07.629Z",
+    "fetchedAt": "2026-07-17T16:55:31.329Z",
     "error": null
   },
   "pinnacleestate": {
@@ -243,16 +243,16 @@
       {
         "caption": "Anything But a Cup - Skills Class Edition",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax7-1.cdninstagram.com/v/t51.71878-15/748418832_1027754180027175_8147141174603792423_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=105&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=SjU1OwP86DIQ7kNvwHWimqX&_nc_oc=AdrQpP2QRhJk-G9yQoBg9Qat6E3F7qWwkoTrteLuBGrmZHVrAalh3hBJEzYN6PMdC_Li7DJwLleGvwsG1u2UTIki&_nc_zt=23&_nc_ht=scontent-lax7-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=WFCEGcn8dJE3XlLcRz5wYw&_nc_tpa=Q5bMBQFNTd_g64fa-AG9j_eLL-wIYtnXav8wqbGGNARVEleXkBjV1S3dSSkTe7c1Xv1Cg6yml5ueSyjy&oh=00_AQAUXXOhTeoG-ohnngc7cqi5ttrKZGaG6H-gsLf1rAqFog&oe=6A601E4F",
+        "image": "data/firm-ig-thumbs/pinnacleestate-0.jpg",
         "permalink": "https://www.instagram.com/reel/Da4BBvqB9L6/",
         "timestamp": "2026-07-17T01:21:13+0000",
-        "likes": 196,
-        "comments": 31
+        "likes": 198,
+        "comments": 32
       },
       {
         "caption": "What agents aren’t told when they start.\n\n#pinnacle #realestatecareer #hardworkpaysoff #openhouses #realestatesuccess",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/744872878_18596312806063255_3995242043526910660_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=111&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=hqPUXmRtLikQ7kNvwHpvIXK&_nc_oc=AdrWlZa4ydh7ShIa_Vn6ltVIgC-WrMjGep4qmsJ5SOFeOECUj5qdpy40AEZ_3jlRihv2jQvEVml4WQT3RaeuhyIH&_nc_zt=23&_nc_ht=scontent-lax3-2.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=WFCEGcn8dJE3XlLcRz5wYw&_nc_tpa=Q5bMBQHQzGo8XZoKm34Vxg0_7EoBFpLQzycbhcWu5G0Aqn12jbOpxDsbZegQf1qMvf41zbaHt4waN7pl&oh=00_AQDK7t0aidtKP8ZxBxLqO8QMuTSrLC9oPbDp1xfEGyY5yA&oe=6A6033F3",
+        "image": "data/firm-ig-thumbs/pinnacleestate-1.jpg",
         "permalink": "https://www.instagram.com/reel/DavlsSFBmYY/",
         "timestamp": "2026-07-13T18:45:49+0000",
         "likes": null,
@@ -261,14 +261,222 @@
       {
         "caption": "The market isnt dead, bad habits are.\n\n#pinnacle #consistency #realestatemindset #prospecting #businessgrowth",
         "media_type": "VIDEO",
-        "image": "https://scontent-lax7-1.cdninstagram.com/v/t51.82787-15/736376014_18594303505063255_2615921732985036062_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=101&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=_mlgye08ESkQ7kNvwGMpF4_&_nc_oc=AdqwlX4Ep8lRLPU60GGXqJtyeOQlcUwJCJcXPlHuaacG55cPc9_QJ36V0PIWmWT_yt0bp-TcBdcR4Su3GIuqHmbN&_nc_zt=23&_nc_ht=scontent-lax7-1.cdninstagram.com&edm=AL-3X8kEAAAA&_nc_gid=WFCEGcn8dJE3XlLcRz5wYw&_nc_tpa=Q5bMBQHriZV4gF2JdHGlqVbqPA0q-ITDE1ptOcV9qckxTMPKtuecxc87kc-loOzHINrsUycxLB490hsj&oh=00_AQAQ7kU2czUPj6c0FrkzAjSV9yKe2Ufx3YuahyA7kFsGKQ&oe=6A6029A0",
+        "image": "data/firm-ig-thumbs/pinnacleestate-2.jpg",
         "permalink": "https://www.instagram.com/reel/DadkK3EhHi8/",
         "timestamp": "2026-07-06T18:47:59+0000",
         "likes": null,
         "comments": 3
       }
     ],
-    "fetchedAt": "2026-07-17T16:42:08.564Z",
+    "fetchedAt": "2026-07-17T16:55:32.470Z",
     "error": null
+  },
+  "cbre": {
+    "followers_count": 115717,
+    "posts": [
+      {
+        "caption": "We're honored to be recognized as a Top Veteran Employer by U.S. Veterans Magazine. At CBRE, we're committed to creating opportunities for members of the military community to grow their careers, buil",
+        "media_type": "IMAGE",
+        "image": "data/firm-ig-thumbs/cbre-0.jpg",
+        "permalink": "https://www.instagram.com/p/Da3AaqGlHVj/",
+        "timestamp": "2026-07-17T14:00:01+0000",
+        "likes": 29,
+        "comments": 0
+      },
+      {
+        "caption": "Felix, Regional Vice President for Central Europe, shares what it takes to build a leading Facilities Management business: experienced people, smart technology, and an uncompromising standard of servi",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/cbre-1.jpg",
+        "permalink": "https://www.instagram.com/reel/Da3oP3wACWn/",
+        "timestamp": "2026-07-17T11:00:06+0000",
+        "likes": 14,
+        "comments": 0
+      },
+      {
+        "caption": "Our Property Management teams are bringing a summer of football to life across our properties.\n \nThrough a landmark sponsorship with Disney and CBRE Iberia, we're activating their new animated series ",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/cbre-2.jpg",
+        "permalink": "https://www.instagram.com/p/Da0SBsGEjb5/",
+        "timestamp": "2026-07-16T13:00:01+0000",
+        "likes": 257,
+        "comments": 2
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:33.436Z",
+    "error": null
+  },
+  "jll": {
+    "followers_count": 74777,
+    "posts": [
+      {
+        "caption": "Science can foster better work environments. That’s what we’re seeing…. 🧠\n\nBy studying how the brain responds to different environments, we're helping organizations create spaces that don't just supp",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/jll-0.jpg",
+        "permalink": "https://www.instagram.com/reel/Dak76qvikWS/",
+        "timestamp": "2026-07-09T15:27:36+0000",
+        "likes": 79,
+        "comments": 2
+      },
+      {
+        "caption": "More data doesn't mean better decisions. 👀\n \nThe companies getting more from their offices aren't the ones with the most dashboards. They're the ones who know how to read them.\n \nSwipe for three oppo",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/jll-1.jpg",
+        "permalink": "https://www.instagram.com/p/DadgaOoHz3D/",
+        "timestamp": "2026-07-06T18:12:13+0000",
+        "likes": 31,
+        "comments": 0
+      },
+      {
+        "caption": "Planning an office fit-out? Save this one. 📌\n \nOur experts break down the four things worth getting right from the start. Swipe →",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/jll-2.jpg",
+        "permalink": "https://www.instagram.com/p/DZ8K2JZCd1d/",
+        "timestamp": "2026-06-23T19:28:50+0000",
+        "likes": 65,
+        "comments": 2
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:34.615Z",
+    "error": null
+  },
+  "cushwake": {
+    "followers_count": 55307,
+    "posts": [
+      {
+        "caption": "Sustainability is increasingly shaping the future of the built environment. Our latest Sustainability Report reflects the progress we're making as we embed sustainability into the way we work and deli",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/cushwake-0.jpg",
+        "permalink": "https://www.instagram.com/reel/DaN-1UWjfGx/",
+        "timestamp": "2026-06-30T17:30:39+0000",
+        "likes": 113,
+        "comments": 4
+      },
+      {
+        "caption": "We believe real estate can shape culture, and the Latika campus is a powerful expression of that belief.\n\nLatika a nonprofit in Dehradun, India, has spent over 30 years supporting children with disabi",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/cushwake-1.jpg",
+        "permalink": "https://www.instagram.com/reel/DYWCLiNka-j/",
+        "timestamp": "2026-05-15T03:32:07+0000",
+        "likes": 117,
+        "comments": 6
+      },
+      {
+        "caption": "Smart advice starts with clarity. \n\nBy combining data, experience and judgement, our advisors help clients move forward with confidence, turning insight into action when it matters most.",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/cushwake-2.jpg",
+        "permalink": "https://www.instagram.com/reel/DXug-qbG61z/",
+        "timestamp": "2026-04-29T19:10:53+0000",
+        "likes": 154,
+        "comments": 4
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:35.921Z",
+    "error": null
+  },
+  "newmark": {
+    "followers_count": 16024,
+    "posts": [
+      {
+        "caption": "AI can’t fix bad data, especially in healthcare real estate.\n\nIn this latest Newmark Perspective, Senior Managing Director of Healthcare Consulting Kyle Arnold, MSRE explains how incomplete, inconsist",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/newmark-0.jpg",
+        "permalink": "https://www.instagram.com/p/DagT5FUHFzc/",
+        "timestamp": "2026-07-07T20:20:27+0000",
+        "likes": null,
+        "comments": 0
+      },
+      {
+        "caption": "With break-even job growth near zero, headcount is no longer the driver. The tenants, markets and asset classes tied to output and income growth are the ones to watch.\n\nRead the latest report, CRE Ret",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/newmark-1.jpg",
+        "permalink": "https://www.instagram.com/p/DagScG2nDM-/",
+        "timestamp": "2026-07-07T20:07:46+0000",
+        "likes": null,
+        "comments": 0
+      },
+      {
+        "caption": "Most shippers that could use rail don't — because getting a freight quote takes 24+ hours versus 30 seconds by truck. Rail’s cost advantage of 27% goes uncaptured, and a carbon reduction of 60-80% per",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/newmark-2.jpg",
+        "permalink": "https://www.instagram.com/p/Dadtub-nHXJ/",
+        "timestamp": "2026-07-06T20:08:28+0000",
+        "likes": null,
+        "comments": 0
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:36.853Z",
+    "error": null
+  },
+  "douglaselliman": {
+    "followers_count": 249313,
+    "posts": [
+      {
+        "caption": "Bel Air Escape with Country Club Views 🌳\n\nPROPERTY DETAILS \n282 Bentley Circle \nBel Air, #California \n\n4 Bedrooms | 4 Bathrooms | 1 Half Bathroom\n\n$27,000/Monthly \n\nCONTACT \ncoryeweiss\ncory.weiss@ell",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/douglaselliman-0.jpg",
+        "permalink": "https://www.instagram.com/p/Da5Kq7pDPb1/",
+        "timestamp": "2026-07-17T14:01:10+0000",
+        "likes": 50,
+        "comments": 2
+      },
+      {
+        "caption": "Bespoke Waterfront Mansion Lists for $42.5M in West Palm Beach 🏆\n\nPROPERTY DETAILS \n6315 S Flagler Drive \nWest Palm Beach, #Florida \n\n7 Bedrooms | 9 Bathrooms | 2 Half Bathrooms\n\n$42,500,000\n\nCONTACT",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/douglaselliman-1.jpg",
+        "permalink": "https://www.instagram.com/p/Da2l-80GnV7/",
+        "timestamp": "2026-07-16T14:00:47+0000",
+        "likes": 205,
+        "comments": 6
+      },
+      {
+        "caption": "Introducing The Mercer: Luxury Residences with Exclusive Erewhon Access ✨\n\nPROPERTY DETAILS \n1264 N Harper Avenue\nWest Hollywood, California\n\nResidences starting from $9,000/month \n\nCONTACT\ncoryeweiss",
+        "media_type": "CAROUSEL_ALBUM",
+        "image": "data/firm-ig-thumbs/douglaselliman-2.jpg",
+        "permalink": "https://www.instagram.com/p/Da0hIj-mgED/",
+        "timestamp": "2026-07-15T16:42:10+0000",
+        "likes": 55,
+        "comments": 3
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:38.113Z",
+    "error": null
+  },
+  "bhhscaliforniaproperties": {
+    "followers_count": 2518,
+    "posts": [
+      {
+        "caption": "Happy Friday 🙌🏻☀️😎",
+        "media_type": "VIDEO",
+        "image": "data/firm-ig-thumbs/bhhscaliforniaproperties-0.jpg",
+        "permalink": "https://www.instagram.com/reel/Cu-rO6CgAKA/",
+        "timestamp": "2023-07-22T00:22:18+0000",
+        "likes": 63,
+        "comments": 5
+      },
+      {
+        "caption": "\"Independence has many colors, but today it's all red, white, and blue. Gratitude for all those who've made our freedom possible. Happy Independence Day,#4thOfJuly #IndependenceDay 🇺🇸🎆\"",
+        "media_type": "IMAGE",
+        "image": "data/firm-ig-thumbs/bhhscaliforniaproperties-1.jpg",
+        "permalink": "https://www.instagram.com/p/CuS0dfQvuxR/",
+        "timestamp": "2023-07-04T23:34:20+0000",
+        "likes": 246,
+        "comments": 0
+      },
+      {
+        "caption": "A large number of Private Jets landed in Omaha Saturday afternoon 3.18.2023 \n\nJets flew from HQs of Regional Banks, Ski Resorts & DC\n\nDid Warren Buffett just fly all the regional bank CEOs into Omaha ",
+        "media_type": "IMAGE",
+        "image": "data/firm-ig-thumbs/bhhscaliforniaproperties-2.jpg",
+        "permalink": "https://www.instagram.com/p/Cp_6xs_OJnD/",
+        "timestamp": "2023-03-20T05:18:23+0000",
+        "likes": 59,
+        "comments": 2
+      }
+    ],
+    "fetchedAt": "2026-07-17T16:55:40.051Z",
+    "error": null
+  },
+  "remax": {
+    "error": "(#4) Application request limit reached",
+    "fetchedAt": "2026-07-17T16:55:40.920Z"
   }
 }
\ No newline at end of file
diff --git a/data/firm-ig-map.json b/data/firm-ig-map.json
index 0513ade..04c66ce 100644
--- a/data/firm-ig-map.json
+++ b/data/firm-ig-map.json
@@ -8,6 +8,13 @@
     "sothebysrealty": ["sothebysinternationalrealty", "sothebysrealty", "sothebys"],
     "exprealty": ["exprealtyofcaliforniainc", "exprealtyofcalifornia", "exprealty"],
     "lyonstahl": ["lyonstahlinvestmentrealestate", "lyonstahl"],
-    "pinnacleestate": ["pinnacleestatepropertiesinc", "pinnacleestateproperties"]
+    "pinnacleestate": ["pinnacleestatepropertiesinc", "pinnacleestateproperties"],
+    "cbre": ["cbre", "cbreinc"],
+    "jll": ["jll"],
+    "cushwake": ["cushmanwakefield", "cushmanwakefieldinc"],
+    "newmark": ["newmark", "newmarkgroup"],
+    "douglaselliman": ["douglaselliman"],
+    "bhhscaliforniaproperties": ["berkshirehathawayhomeservicescaliforniaproperties"],
+    "remax": ["remax"]
   }
 }
diff --git a/data/firm-ig-thumbs/bhhscaliforniaproperties-0.jpg b/data/firm-ig-thumbs/bhhscaliforniaproperties-0.jpg
new file mode 100644
index 0000000..43c9515
Binary files /dev/null and b/data/firm-ig-thumbs/bhhscaliforniaproperties-0.jpg differ
diff --git a/data/firm-ig-thumbs/bhhscaliforniaproperties-1.jpg b/data/firm-ig-thumbs/bhhscaliforniaproperties-1.jpg
new file mode 100644
index 0000000..f602e2b
Binary files /dev/null and b/data/firm-ig-thumbs/bhhscaliforniaproperties-1.jpg differ
diff --git a/data/firm-ig-thumbs/bhhscaliforniaproperties-2.jpg b/data/firm-ig-thumbs/bhhscaliforniaproperties-2.jpg
new file mode 100644
index 0000000..d1c30eb
Binary files /dev/null and b/data/firm-ig-thumbs/bhhscaliforniaproperties-2.jpg differ
diff --git a/data/firm-ig-thumbs/cbre-0.jpg b/data/firm-ig-thumbs/cbre-0.jpg
new file mode 100644
index 0000000..c1e8085
Binary files /dev/null and b/data/firm-ig-thumbs/cbre-0.jpg differ
diff --git a/data/firm-ig-thumbs/cbre-1.jpg b/data/firm-ig-thumbs/cbre-1.jpg
new file mode 100644
index 0000000..eba67a2
Binary files /dev/null and b/data/firm-ig-thumbs/cbre-1.jpg differ
diff --git a/data/firm-ig-thumbs/cbre-2.jpg b/data/firm-ig-thumbs/cbre-2.jpg
new file mode 100644
index 0000000..31d9eeb
Binary files /dev/null and b/data/firm-ig-thumbs/cbre-2.jpg differ
diff --git a/data/firm-ig-thumbs/coldwellbanker-0.jpg b/data/firm-ig-thumbs/coldwellbanker-0.jpg
new file mode 100644
index 0000000..11fe258
Binary files /dev/null and b/data/firm-ig-thumbs/coldwellbanker-0.jpg differ
diff --git a/data/firm-ig-thumbs/coldwellbanker-1.jpg b/data/firm-ig-thumbs/coldwellbanker-1.jpg
new file mode 100644
index 0000000..3709643
Binary files /dev/null and b/data/firm-ig-thumbs/coldwellbanker-1.jpg differ
diff --git a/data/firm-ig-thumbs/coldwellbanker-2.jpg b/data/firm-ig-thumbs/coldwellbanker-2.jpg
new file mode 100644
index 0000000..5a8ca91
Binary files /dev/null and b/data/firm-ig-thumbs/coldwellbanker-2.jpg differ
diff --git a/data/firm-ig-thumbs/compass-0.jpg b/data/firm-ig-thumbs/compass-0.jpg
new file mode 100644
index 0000000..e14146f
Binary files /dev/null and b/data/firm-ig-thumbs/compass-0.jpg differ
diff --git a/data/firm-ig-thumbs/compass-1.jpg b/data/firm-ig-thumbs/compass-1.jpg
new file mode 100644
index 0000000..da763ac
Binary files /dev/null and b/data/firm-ig-thumbs/compass-1.jpg differ
diff --git a/data/firm-ig-thumbs/compass-2.jpg b/data/firm-ig-thumbs/compass-2.jpg
new file mode 100644
index 0000000..23451f4
Binary files /dev/null and b/data/firm-ig-thumbs/compass-2.jpg differ
diff --git a/data/firm-ig-thumbs/cushwake-0.jpg b/data/firm-ig-thumbs/cushwake-0.jpg
new file mode 100644
index 0000000..1588827
Binary files /dev/null and b/data/firm-ig-thumbs/cushwake-0.jpg differ
diff --git a/data/firm-ig-thumbs/cushwake-1.jpg b/data/firm-ig-thumbs/cushwake-1.jpg
new file mode 100644
index 0000000..665e1e6
Binary files /dev/null and b/data/firm-ig-thumbs/cushwake-1.jpg differ
diff --git a/data/firm-ig-thumbs/cushwake-2.jpg b/data/firm-ig-thumbs/cushwake-2.jpg
new file mode 100644
index 0000000..40a1bc8
Binary files /dev/null and b/data/firm-ig-thumbs/cushwake-2.jpg differ
diff --git a/data/firm-ig-thumbs/douglaselliman-0.jpg b/data/firm-ig-thumbs/douglaselliman-0.jpg
new file mode 100644
index 0000000..26e4c8a
Binary files /dev/null and b/data/firm-ig-thumbs/douglaselliman-0.jpg differ
diff --git a/data/firm-ig-thumbs/douglaselliman-1.jpg b/data/firm-ig-thumbs/douglaselliman-1.jpg
new file mode 100644
index 0000000..b78eb76
Binary files /dev/null and b/data/firm-ig-thumbs/douglaselliman-1.jpg differ
diff --git a/data/firm-ig-thumbs/douglaselliman-2.jpg b/data/firm-ig-thumbs/douglaselliman-2.jpg
new file mode 100644
index 0000000..3e4986e
Binary files /dev/null and b/data/firm-ig-thumbs/douglaselliman-2.jpg differ
diff --git a/data/firm-ig-thumbs/exprealty-0.jpg b/data/firm-ig-thumbs/exprealty-0.jpg
new file mode 100644
index 0000000..dd2bbfb
Binary files /dev/null and b/data/firm-ig-thumbs/exprealty-0.jpg differ
diff --git a/data/firm-ig-thumbs/exprealty-1.jpg b/data/firm-ig-thumbs/exprealty-1.jpg
new file mode 100644
index 0000000..563e183
Binary files /dev/null and b/data/firm-ig-thumbs/exprealty-1.jpg differ
diff --git a/data/firm-ig-thumbs/exprealty-2.jpg b/data/firm-ig-thumbs/exprealty-2.jpg
new file mode 100644
index 0000000..7fcbc39
Binary files /dev/null and b/data/firm-ig-thumbs/exprealty-2.jpg differ
diff --git a/data/firm-ig-thumbs/jll-0.jpg b/data/firm-ig-thumbs/jll-0.jpg
new file mode 100644
index 0000000..432167a
Binary files /dev/null and b/data/firm-ig-thumbs/jll-0.jpg differ
diff --git a/data/firm-ig-thumbs/jll-1.jpg b/data/firm-ig-thumbs/jll-1.jpg
new file mode 100644
index 0000000..8385632
Binary files /dev/null and b/data/firm-ig-thumbs/jll-1.jpg differ
diff --git a/data/firm-ig-thumbs/jll-2.jpg b/data/firm-ig-thumbs/jll-2.jpg
new file mode 100644
index 0000000..fc18b80
Binary files /dev/null and b/data/firm-ig-thumbs/jll-2.jpg differ
diff --git a/data/firm-ig-thumbs/kellerwilliams-0.jpg b/data/firm-ig-thumbs/kellerwilliams-0.jpg
new file mode 100644
index 0000000..86a1c4b
Binary files /dev/null and b/data/firm-ig-thumbs/kellerwilliams-0.jpg differ
diff --git a/data/firm-ig-thumbs/kellerwilliams-1.jpg b/data/firm-ig-thumbs/kellerwilliams-1.jpg
new file mode 100644
index 0000000..a197157
Binary files /dev/null and b/data/firm-ig-thumbs/kellerwilliams-1.jpg differ
diff --git a/data/firm-ig-thumbs/kellerwilliams-2.jpg b/data/firm-ig-thumbs/kellerwilliams-2.jpg
new file mode 100644
index 0000000..5785798
Binary files /dev/null and b/data/firm-ig-thumbs/kellerwilliams-2.jpg differ
diff --git a/data/firm-ig-thumbs/lyonstahl-0.jpg b/data/firm-ig-thumbs/lyonstahl-0.jpg
new file mode 100644
index 0000000..e8f602e
Binary files /dev/null and b/data/firm-ig-thumbs/lyonstahl-0.jpg differ
diff --git a/data/firm-ig-thumbs/lyonstahl-1.jpg b/data/firm-ig-thumbs/lyonstahl-1.jpg
new file mode 100644
index 0000000..4219ea4
Binary files /dev/null and b/data/firm-ig-thumbs/lyonstahl-1.jpg differ
diff --git a/data/firm-ig-thumbs/lyonstahl-2.jpg b/data/firm-ig-thumbs/lyonstahl-2.jpg
new file mode 100644
index 0000000..1d1740c
Binary files /dev/null and b/data/firm-ig-thumbs/lyonstahl-2.jpg differ
diff --git a/data/firm-ig-thumbs/newmark-0.jpg b/data/firm-ig-thumbs/newmark-0.jpg
new file mode 100644
index 0000000..daafb03
Binary files /dev/null and b/data/firm-ig-thumbs/newmark-0.jpg differ
diff --git a/data/firm-ig-thumbs/newmark-1.jpg b/data/firm-ig-thumbs/newmark-1.jpg
new file mode 100644
index 0000000..148afb4
Binary files /dev/null and b/data/firm-ig-thumbs/newmark-1.jpg differ
diff --git a/data/firm-ig-thumbs/newmark-2.jpg b/data/firm-ig-thumbs/newmark-2.jpg
new file mode 100644
index 0000000..f2ce966
Binary files /dev/null and b/data/firm-ig-thumbs/newmark-2.jpg differ
diff --git a/data/firm-ig-thumbs/pinnacleestate-0.jpg b/data/firm-ig-thumbs/pinnacleestate-0.jpg
new file mode 100644
index 0000000..218de63
Binary files /dev/null and b/data/firm-ig-thumbs/pinnacleestate-0.jpg differ
diff --git a/data/firm-ig-thumbs/pinnacleestate-1.jpg b/data/firm-ig-thumbs/pinnacleestate-1.jpg
new file mode 100644
index 0000000..4bc2329
Binary files /dev/null and b/data/firm-ig-thumbs/pinnacleestate-1.jpg differ
diff --git a/data/firm-ig-thumbs/pinnacleestate-2.jpg b/data/firm-ig-thumbs/pinnacleestate-2.jpg
new file mode 100644
index 0000000..5c3373c
Binary files /dev/null and b/data/firm-ig-thumbs/pinnacleestate-2.jpg differ
diff --git a/data/firm-ig-thumbs/sothebysrealty-0.jpg b/data/firm-ig-thumbs/sothebysrealty-0.jpg
new file mode 100644
index 0000000..e1228eb
Binary files /dev/null and b/data/firm-ig-thumbs/sothebysrealty-0.jpg differ
diff --git a/data/firm-ig-thumbs/sothebysrealty-1.jpg b/data/firm-ig-thumbs/sothebysrealty-1.jpg
new file mode 100644
index 0000000..ffa0c73
Binary files /dev/null and b/data/firm-ig-thumbs/sothebysrealty-1.jpg differ
diff --git a/data/firm-ig-thumbs/sothebysrealty-2.jpg b/data/firm-ig-thumbs/sothebysrealty-2.jpg
new file mode 100644
index 0000000..879752a
Binary files /dev/null and b/data/firm-ig-thumbs/sothebysrealty-2.jpg differ
diff --git a/data/firm-ig-thumbs/theagencyre-0.jpg b/data/firm-ig-thumbs/theagencyre-0.jpg
new file mode 100644
index 0000000..f24c6ac
Binary files /dev/null and b/data/firm-ig-thumbs/theagencyre-0.jpg differ
diff --git a/data/firm-ig-thumbs/theagencyre-1.jpg b/data/firm-ig-thumbs/theagencyre-1.jpg
new file mode 100644
index 0000000..ea5113d
Binary files /dev/null and b/data/firm-ig-thumbs/theagencyre-1.jpg differ
diff --git a/data/firm-ig-thumbs/theagencyre-2.jpg b/data/firm-ig-thumbs/theagencyre-2.jpg
new file mode 100644
index 0000000..fa1fd51
Binary files /dev/null and b/data/firm-ig-thumbs/theagencyre-2.jpg differ
diff --git a/public/index.html b/public/index.html
index d35a1f4..2dc1ba1 100644
--- a/public/index.html
+++ b/public/index.html
@@ -585,7 +585,7 @@
     const normFirm=s=>String(s||'').toLowerCase().replace(/[^a-z0-9]/g,'');
     function firmHandle(firm){ const n=normFirm(firm); if(!n) return null;
       if(window.FIRM_IG_IDX[n]) return window.FIRM_IG_IDX[n];
-      for(const [a,h] of Object.entries(window.FIRM_IG_IDX)){ if(a.length>=5&&n.includes(a)) return h; } return null; }
+      for(const [a,h] of Object.entries(window.FIRM_IG_IDX)){ if(n===a || (a.length>=5 && n.includes(a)) || (a.length>=3 && n.startsWith(a))) return h; } return null; }
     function firmIgStrip(firm){ const h=firmHandle(firm); if(!h) return '';
       const c=window.FIRM_IG[h]; if(!c||!c.posts||!c.posts.length) return '';
       const items=c.posts.slice(0,3).map(p=>{ const cap=esc((p.caption||'').replace(/\s+/g,' ').slice(0,90))||'(no caption)';
@@ -1603,14 +1603,6 @@ function closeDrawer(){ $('#drawer').classList.remove('open'); $('#scrim').class
 // ── Inline list-row expansion + Agent CRM actions ──────────────────────────────────
 function postJSON(url,body){ return fetch(url,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body||{})}).then(r=>r.json()); }
 function toast(msg){ let t=document.getElementById('crmToast'); if(!t){ t=document.createElement('div'); t.id='crmToast'; t.className='crmToast'; document.body.appendChild(t); } t.textContent=msg; t.classList.add('on'); clearTimeout(t._t); t._t=setTimeout(()=>t.classList.remove('on'),1900); }
-function toggleExpand(row){
-  const exp=row.nextElementSibling; if(!exp||!exp.classList.contains('lexp')) return;
-  const id=row.dataset.id, body=exp.querySelector('.lexpbody');
-  const p=DATA.ranked.find(x=>x.id===id); if(!p) return;
-  if(!body.dataset.loaded){ body.innerHTML=expandBody(p); body.dataset.loaded='1'; }
-  const open=exp.classList.toggle('open'); row.classList.toggle('open',open);
-  const tog=row.querySelector('.exptog'); if(tog) tog.textContent=open?'▾':'▸';
-}
 // In-place refresh after any CRM save — repaints EVERY visible surface for this listing (list
 // agent cell + open list-row panel + card block) WITHOUT a full render() (which would collapse
 // expanded rows). Works for every asset type in either view.
diff --git a/scripts/refresh-firm-ig.js b/scripts/refresh-firm-ig.js
index 0d3f488..bf0e2e1 100644
--- a/scripts/refresh-firm-ig.js
+++ b/scripts/refresh-firm-ig.js
@@ -13,6 +13,24 @@ const ROOT = path.join(__dirname, '..');
 const GRAPH = 'https://graph.facebook.com/v23.0';
 const MAP = path.join(ROOT, 'data', 'firm-ig-map.json');
 const CACHE = path.join(ROOT, 'data', 'firm-ig-cache.json');
+const THUMBS = path.join(ROOT, 'data', 'firm-ig-thumbs');
+
+// Download an IG CDN image to a local same-origin file (IG blocks cross-origin
+// hotlinking + the CDN URLs expire, so we cache the bytes at refresh time and
+// serve a local path). Returns the web path or null on failure.
+async function cacheThumb(url, handle, i) {
+  if (!url) return null;
+  try {
+    const r = await fetch(url);
+    if (!r.ok) return null;
+    const buf = Buffer.from(await r.arrayBuffer());
+    if (!buf.length) return null;
+    fs.mkdirSync(THUMBS, { recursive: true });
+    const rel = `data/firm-ig-thumbs/${handle}-${i}.jpg`;
+    fs.writeFileSync(path.join(ROOT, rel), buf);
+    return rel;
+  } catch { return null; }
+}
 
 function readEnvVal(file, key) {
   try { return (fs.readFileSync(file, 'utf8').match(new RegExp('^' + key + '=(.+)$', 'm')) || [])[1]; }
@@ -75,8 +93,14 @@ async function fetchPosts(igId, tok, username) {
   for (const h of handles) {
     try {
       const data = await fetchPosts(ig.id, tok, h);
+      // Cache each thumbnail locally; fall back to the remote URL if download fails.
+      let thumbed = 0;
+      for (let i = 0; i < data.posts.length; i++) {
+        const local = await cacheThumb(data.posts[i].image, h, i);
+        if (local) { data.posts[i].image = local; thumbed++; }
+      }
       cache[h] = { ...data, fetchedAt: new Date().toISOString(), error: null };
-      ok++; console.log(`  ✓ @${h} — ${data.posts.length} posts, ${data.followers_count} followers`);
+      ok++; console.log(`  ✓ @${h} — ${data.posts.length} posts (${thumbed} thumbs cached), ${data.followers_count} followers`);
     } catch (e) {
       cache[h] = { ...(cache[h] || {}), error: e.message, fetchedAt: new Date().toISOString() };
       failed++; console.log(`  ✗ @${h} — ${e.message}`);

← 79bc0cf Consolidate everything into ONE tabbed Agent window (links O  ·  back to Commercialrealestate  ·  chore: refactor (drop dead toggleExpand), lint pass, v0.10.0 3db44ca →