[object Object]

← back to Rentv

rentv: top-up corpus (4466->4470, +4 new articles to id 34298) + regen news-posting playbook

0d30a3874d3e2cb43d65dc028129dcdd115320c3 · 2026-08-08 08:32:49 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 0d30a3874d3e2cb43d65dc028129dcdd115320c3
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Aug 8 08:32:49 2026 -0700

    rentv: top-up corpus (4466->4470, +4 new articles to id 34298) + regen news-posting playbook
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 data/news-posting-playbook.json | 364 ++++++++++++++++++++++++----------------
 data/news-posting-playbook.md   | 122 ++++++++------
 2 files changed, 295 insertions(+), 191 deletions(-)

diff --git a/data/news-posting-playbook.json b/data/news-posting-playbook.json
index b6037efb..23e5e047 100644
--- a/data/news-posting-playbook.json
+++ b/data/news-posting-playbook.json
@@ -1,49 +1,49 @@
 {
- "generated_at": "2026-08-05T20:28:36.053Z",
+ "generated_at": "2026-08-08T15:32:11.633Z",
  "corpus": {
-  "articles": 293,
-  "dated": 293,
+  "articles": 4470,
+  "dated": 4470,
   "date_span": {
-   "from": "2025-11-20",
-   "to": "2026-08-05"
+   "from": "2015-06-29",
+   "to": "2026-08-07"
   }
  },
  "cadence": {
-  "per_active_day": 1.73,
+  "per_active_day": 1.65,
   "by_weekday": {
-   "Sun": 55,
-   "Mon": 58,
-   "Tue": 67,
-   "Wed": 53,
-   "Thu": 60,
+   "Sun": 791,
+   "Mon": 944,
+   "Tue": 922,
+   "Wed": 911,
+   "Thu": 901,
    "Fri": 0,
-   "Sat": 0
+   "Sat": 1
   },
-  "busiest_weekday": "Tue",
+  "busiest_weekday": "Mon",
   "recent_months": [
    {
-    "month": "2026-06",
-    "posts": 39
+    "month": "2015-10",
+    "posts": 44
    },
    {
-    "month": "2026-01",
-    "posts": 37
+    "month": "2018-08",
+    "posts": 44
    },
    {
-    "month": "2026-03",
-    "posts": 37
+    "month": "2021-08",
+    "posts": 43
    },
    {
-    "month": "2025-12",
-    "posts": 36
+    "month": "2021-12",
+    "posts": 43
    },
    {
-    "month": "2026-07",
-    "posts": 36
+    "month": "2015-09",
+    "posts": 42
    },
    {
-    "month": "2026-05",
-    "posts": 35
+    "month": "2017-06",
+    "posts": 42
    }
   ]
  },
@@ -51,256 +51,340 @@
   "txn_type": [
    {
     "k": "Sale",
-    "n": 213,
-    "share": 72.7
+    "n": 2794,
+    "share": 62.5
    },
    {
     "k": "Development",
-    "n": 29,
-    "share": 9.9
+    "n": 864,
+    "share": 19.3
+   },
+   {
+    "k": "Financing",
+    "n": 596,
+    "share": 13.3
    },
    {
     "k": "Lease",
-    "n": 26,
-    "share": 8.9
+    "n": 166,
+    "share": 3.7
    },
    {
-    "k": "Financing",
-    "n": 25,
-    "share": 8.5
+    "k": "Purchase",
+    "n": 42,
+    "share": 0.9
+   },
+   {
+    "k": "Acquisition",
+    "n": 8,
+    "share": 0.2
    }
   ],
   "property_type": [
    {
     "k": "Multifamily",
-    "n": 81,
-    "share": 27.6
+    "n": 1488,
+    "share": 33.3
    },
    {
     "k": "Office",
-    "n": 80,
-    "share": 27.3
+    "n": 1079,
+    "share": 24.1
    },
    {
     "k": "Industrial",
-    "n": 64,
-    "share": 21.8
+    "n": 897,
+    "share": 20.1
    },
    {
     "k": "Retail",
-    "n": 46,
-    "share": 15.7
+    "n": 363,
+    "share": 8.1
    },
    {
-    "k": "Land",
-    "n": 8,
-    "share": 2.7
+    "k": "Mixed-Use",
+    "n": 273,
+    "share": 6.1
+   },
+   {
+    "k": "Medical/Life Science",
+    "n": 135,
+    "share": 3
    },
    {
     "k": "Hospitality",
-    "n": 7,
-    "share": 2.4
+    "n": 112,
+    "share": 2.5
    },
    {
-    "k": "Medical/Life Science",
-    "n": 4,
-    "share": 1.4
+    "k": "Land",
+    "n": 101,
+    "share": 2.3
    },
    {
-    "k": "Mixed-Use",
-    "n": 3,
-    "share": 1
+    "k": "Self-Storage",
+    "n": 18,
+    "share": 0.4
+   },
+   {
+    "k": "Office/Retail",
+    "n": 2,
+    "share": 0
+   },
+   {
+    "k": "Educational",
+    "n": 1,
+    "share": 0
+   },
+   {
+    "k": "Education",
+    "n": 1,
+    "share": 0
    }
   ]
  },
  "headline": {
-  "median_words": 11,
-  "median_chars": 67,
+  "median_words": 10,
+  "median_chars": 66,
   "words_p10_p90": [
-   8,
+   7,
    15
   ],
-  "leads_with_verb_share": 86,
+  "leads_with_verb_share": 74.9,
   "top_verbs": [
    {
     "verb": "buy",
-    "n": 40,
-    "share": 13.7
+    "n": 551,
+    "share": 12.3
    },
    {
-    "verb": "land",
-    "n": 33,
-    "share": 11.3
+    "verb": "trade",
+    "n": 377,
+    "share": 8.4
    },
    {
     "verb": "spend",
-    "n": 33,
-    "share": 11.3
-   },
-   {
-    "verb": "acquire",
-    "n": 24,
-    "share": 8.2
+    "n": 362,
+    "share": 8.1
    },
    {
     "verb": "close",
-    "n": 21,
-    "share": 7.2
+    "n": 261,
+    "share": 5.8
    },
    {
-    "verb": "trade",
-    "n": 19,
-    "share": 6.5
+    "verb": "acquire",
+    "n": 258,
+    "share": 5.8
    },
    {
     "verb": "sell",
-    "n": 10,
-    "share": 3.4
+    "n": 241,
+    "share": 5.4
+   },
+   {
+    "verb": "land",
+    "n": 213,
+    "share": 4.8
    },
    {
     "verb": "pay",
-    "n": 9,
-    "share": 3.1
+    "n": 162,
+    "share": 3.6
    },
    {
-    "verb": "breaks ground",
-    "n": 7,
-    "share": 2.4
+    "verb": "picks up",
+    "n": 103,
+    "share": 2.3
    },
    {
-    "verb": "fetche",
-    "n": 6,
-    "share": 2
+    "verb": "complete",
+    "n": 102,
+    "share": 2.3
    },
    {
     "verb": "lease",
-    "n": 6,
-    "share": 2
+    "n": 71,
+    "share": 1.6
    },
    {
-    "verb": "secure",
-    "n": 5,
-    "share": 1.7
+    "verb": "purchase",
+    "n": 68,
+    "share": 1.5
    }
   ],
-  "includes_dollar_share": 58.4,
+  "includes_dollar_share": 55.6,
   "top_formulas_by_txn": {
    "Sale": [
     {
-     "formula": "{WHO} in {AMOUNT} Transaction",
-     "n": 3,
-     "share": 1.4
+     "formula": "{WHO} in {AMOUNT} Deal",
+     "n": 46,
+     "share": 1.6
     },
     {
      "formula": "{WHO} for {AMOUNT}",
-     "n": 3,
+     "n": 40,
      "share": 1.4
     },
     {
-     "formula": "{WHO} {AMOUNT} {ST} Apartment Buy",
-     "n": 2,
-     "share": 0.9
+     "formula": "{WHO} in {AMOUNT} Transaction",
+     "n": 32,
+     "share": 1.1
     },
     {
-     "formula": "{WHO} {AMOUNT} {ST} Industrial Buy",
-     "n": 2,
-     "share": 0.9
+     "formula": "{WHO} in {CITY} Sells for {AMOUNT}",
+     "n": 14,
+     "share": 0.5
     },
     {
-     "formula": "{WHO} for {AMOUNT} /sf",
-     "n": 2,
-     "share": 0.9
+     "formula": "{WHO} {AMOUNT} Office Buy in {CITY}",
+     "n": 11,
+     "share": 0.4
     }
    ],
    "Financing": [
+    {
+     "formula": "{WHO}",
+     "n": 101,
+     "share": 16.9
+    },
     {
      "formula": "{WHO} {AMOUNT} Refi",
-     "n": 2,
-     "share": 8
+     "n": 9,
+     "share": 1.5
     },
     {
      "formula": "{WHO} {AMOUNT} Refi Loan",
-     "n": 2,
-     "share": 8
+     "n": 6,
+     "share": 1
+    },
+    {
+     "formula": "{WHO} {AMOUNT} in Financing",
+     "n": 4,
+     "share": 0.7
+    },
+    {
+     "formula": "{CITY} Res Community Lands {AMOUNT} Refi",
+     "n": 3,
+     "share": 0.5
+    }
+   ],
+   "Development": [
+    {
+     "formula": "{WHO} in {CITY}",
+     "n": 12,
+     "share": 1.4
     },
     {
      "formula": "{WHO}",
-     "n": 2,
-     "share": 8
+     "n": 4,
+     "share": 0.5
     },
     {
-     "formula": "{WHO} {AMOUNT} in New Financing on 538k sf {CITY} Life Science Campus",
-     "n": 1,
-     "share": 4
+     "formula": "{WHO} {SIZE} in {CITY} for Industrial Development",
+     "n": 3,
+     "share": 0.3
     },
     {
-     "formula": "{WHO} {AMOUNT} Refi on Recently Completed {CITY} Area Multifamily Development",
-     "n": 1,
-     "share": 4
+     "formula": "{WHO} on {SIZE} Affordable Housing Project in {CITY}",
+     "n": 3,
+     "share": 0.3
+    },
+    {
+     "formula": "{WHO} on {SIZE} Res Project in {CITY}",
+     "n": 3,
+     "share": 0.3
     }
    ],
    "Lease": [
     {
-     "formula": "{WHO} at 1.27 msf Facility in Visalia",
+     "formula": "{WHO}",
+     "n": 3,
+     "share": 1.8
+    },
+    {
+     "formula": "{WHO} at 1.27 msf Facility in {CITY}",
      "n": 1,
-     "share": 3.8
+     "share": 0.6
     },
     {
      "formula": "{WHO} 289k sf Bay Area Manufacturing Facility",
      "n": 1,
-     "share": 3.8
+     "share": 0.6
     },
     {
      "formula": "{WHO} for 650k sf {CITY} Office Tower Awarded to CBRE",
      "n": 1,
-     "share": 3.8
+     "share": 0.6
     },
     {
      "formula": "{CITY} Distribution Facility Leased by Auto Parts Distributor in {AMOUNT} Deal",
      "n": 1,
-     "share": 3.8
+     "share": 0.6
+    }
+   ],
+   "Acquisition": [
+    {
+     "formula": "{WHO} to Acquire RE/MAX in {AMOUNT} Transaction",
+     "n": 1,
+     "share": 12.5
     },
     {
-     "formula": "{WHO} 1.1 msf of Space at Luke Field in {CITY} , {ST}",
+     "formula": "{WHO} {ST} Property for Redevelopment into Class A Industrial Project",
      "n": 1,
-     "share": 3.8
+     "share": 12.5
+    },
+    {
+     "formula": "{WHO}",
+     "n": 1,
+     "share": 12.5
+    },
+    {
+     "formula": "{WHO} to Acquire Ten-X Commercial in {AMOUNT} Deal",
+     "n": 1,
+     "share": 12.5
+    },
+    {
+     "formula": "{WHO} {ST} Buildings for Redevelopment into Creative Office Space",
+     "n": 1,
+     "share": 12.5
     }
    ],
-   "Development": [
+   "Purchase": [
     {
-     "formula": "{WHO} with {SIZE} Res Community in {CITY}",
-     "n": 1,
-     "share": 3.4
+     "formula": "{WHO} {AMOUNT} on Two SoCal Apartment Properties",
+     "n": 2,
+     "share": 4.8
     },
     {
-     "formula": "{WHO} on New {SIZE} {CITY} Res Development",
+     "formula": "{WHO} {AMOUNT} on {CITY} Office Asset",
      "n": 1,
-     "share": 3.4
+     "share": 2.4
     },
     {
-     "formula": "{WHO} to Develop {SIZE} of Affordable Housing in {CITY}",
+     "formula": "{WHO} {AMOUNT} on {CITY} Class A Office Building",
      "n": 1,
-     "share": 3.4
+     "share": 2.4
     },
     {
-     "formula": "{WHO} on {CITY} High-Rise Res Development",
+     "formula": "{WHO} {AMOUNT} on Phoenix Area Medical Property Portfolio",
      "n": 1,
-     "share": 3.4
+     "share": 2.4
     },
     {
-     "formula": "{CITY} Social Housing Developer Wraps Up {AMOUNT} Res Buy in Downtown {CITY}",
+     "formula": "{WHO} {AMOUNT} on {CITY} Hotel Asset",
      "n": 1,
-     "share": 3.4
+     "share": 2.4
     }
    ]
   }
  },
  "completeness": {
-  "has_amount_share": 73.4,
-  "median_deal_size": 53000000,
-  "has_city_share": 92.8,
-  "has_state_share": 82.9,
-  "has_size_share": 63.1,
-  "median_story_words": 392
+  "has_amount_share": 79.3,
+  "median_deal_size": 58950000,
+  "has_city_share": 99,
+  "has_state_share": 98.7,
+  "has_size_share": 97.8,
+  "median_story_words": 390
  }
 }
\ No newline at end of file
diff --git a/data/news-posting-playbook.md b/data/news-posting-playbook.md
index b4b373dc..3422a7f7 100644
--- a/data/news-posting-playbook.md
+++ b/data/news-posting-playbook.md
@@ -1,80 +1,100 @@
 # How to Post a CRE News Event — evidence from the rentv.com archive
 
-_Auto-derived from 293 rentv.com articles (2025-11-20 → 2026-08-05). Generated 2026-08-05. Source of truth for news posting across all RE builds (rentv · crcp · homesonspec · usre)._
+_Auto-derived from 4,470 rentv.com articles (2015-06-29 → 2026-08-07). Generated 2026-08-08. Source of truth for news posting across all RE builds (rentv · crcp · homesonspec · usre)._
 
 ## 1. Cadence — how often to post
-- **~1.73 posts per active day.**
-- Busiest weekday: **Tue**. Weekday spread: Sun 55 · Mon 58 · Tue 67 · Wed 53 · Thu 60 · Fri 0 · Sat 0.
+- **~1.65 posts per active day.**
+- Busiest weekday: **Mon**. Weekday spread: Sun 791 · Mon 944 · Tue 922 · Wed 911 · Thu 901 · Fri 0 · Sat 1.
 - Post on **weekdays**; CRE news is a business-hours cadence, not weekends.
 
 ## 2. What to cover — category mix
 Deal type (lead with these, in this proportion):
-- **Sale** — 72.7%
-- **Development** — 9.9%
-- **Lease** — 8.9%
-- **Financing** — 8.5%
+- **Sale** — 62.5%
+- **Development** — 19.3%
+- **Financing** — 13.3%
+- **Lease** — 3.7%
+- **Purchase** — 0.9%
+- **Acquisition** — 0.2%
 
 Property type:
-- Multifamily — 27.6%
-- Office — 27.3%
-- Industrial — 21.8%
-- Retail — 15.7%
-- Land — 2.7%
-- Hospitality — 2.4%
-- Medical/Life Science — 1.4%
-- Mixed-Use — 1%
+- Multifamily — 33.3%
+- Office — 24.1%
+- Industrial — 20.1%
+- Retail — 8.1%
+- Mixed-Use — 6.1%
+- Medical/Life Science — 3%
+- Hospitality — 2.5%
+- Land — 2.3%
+- Self-Storage — 0.4%
+- Office/Retail — 0%
+- Educational — 0%
+- Education — 0%
 
 ## 3. The headline — the single most important element
-- **Length: aim 11 words (~67 chars).** Typical range 8–15 words.
-- **86% of headlines carry an explicit deal VERB.** Use one. Top verbs:
-  - buy (13.7%)
-  - land (11.3%)
-  - spend (11.3%)
-  - acquire (8.2%)
-  - close (7.2%)
-  - trade (6.5%)
-  - sell (3.4%)
-  - pay (3.1%)
-- **58.4% put the \$ amount right in the headline.** If there's a price, lead with it.
+- **Length: aim 10 words (~66 chars).** Typical range 7–15 words.
+- **74.9% of headlines carry an explicit deal VERB.** Use one. Top verbs:
+  - buy (12.3%)
+  - trade (8.4%)
+  - spend (8.1%)
+  - close (5.8%)
+  - acquire (5.8%)
+  - sell (5.4%)
+  - land (4.8%)
+  - pay (3.6%)
+- **55.6% put the \$ amount right in the headline.** If there's a price, lead with it.
 
 ### Proven headline formulas by deal type
 **Sale**
-  - `{WHO} in {AMOUNT} Transaction`  _(1.4%)_
+  - `{WHO} in {AMOUNT} Deal`  _(1.6%)_
   - `{WHO} for {AMOUNT}`  _(1.4%)_
-  - `{WHO} {AMOUNT} {ST} Apartment Buy`  _(0.9%)_
-  - `{WHO} {AMOUNT} {ST} Industrial Buy`  _(0.9%)_
-  - `{WHO} for {AMOUNT} /sf`  _(0.9%)_
+  - `{WHO} in {AMOUNT} Transaction`  _(1.1%)_
+  - `{WHO} in {CITY} Sells for {AMOUNT}`  _(0.5%)_
+  - `{WHO} {AMOUNT} Office Buy in {CITY}`  _(0.4%)_
 
 **Financing**
-  - `{WHO} {AMOUNT} Refi`  _(8%)_
-  - `{WHO} {AMOUNT} Refi Loan`  _(8%)_
-  - `{WHO}`  _(8%)_
-  - `{WHO} {AMOUNT} in New Financing on 538k sf {CITY} Life Science Campus`  _(4%)_
-  - `{WHO} {AMOUNT} Refi on Recently Completed {CITY} Area Multifamily Development`  _(4%)_
+  - `{WHO}`  _(16.9%)_
+  - `{WHO} {AMOUNT} Refi`  _(1.5%)_
+  - `{WHO} {AMOUNT} Refi Loan`  _(1%)_
+  - `{WHO} {AMOUNT} in Financing`  _(0.7%)_
+  - `{CITY} Res Community Lands {AMOUNT} Refi`  _(0.5%)_
+
+**Development**
+  - `{WHO} in {CITY}`  _(1.4%)_
+  - `{WHO}`  _(0.5%)_
+  - `{WHO} {SIZE} in {CITY} for Industrial Development`  _(0.3%)_
+  - `{WHO} on {SIZE} Affordable Housing Project in {CITY}`  _(0.3%)_
+  - `{WHO} on {SIZE} Res Project in {CITY}`  _(0.3%)_
 
 **Lease**
-  - `{WHO} at 1.27 msf Facility in Visalia`  _(3.8%)_
-  - `{WHO} 289k sf Bay Area Manufacturing Facility`  _(3.8%)_
-  - `{WHO} for 650k sf {CITY} Office Tower Awarded to CBRE`  _(3.8%)_
-  - `{CITY} Distribution Facility Leased by Auto Parts Distributor in {AMOUNT} Deal`  _(3.8%)_
-  - `{WHO} 1.1 msf of Space at Luke Field in {CITY} , {ST}`  _(3.8%)_
+  - `{WHO}`  _(1.8%)_
+  - `{WHO} at 1.27 msf Facility in {CITY}`  _(0.6%)_
+  - `{WHO} 289k sf Bay Area Manufacturing Facility`  _(0.6%)_
+  - `{WHO} for 650k sf {CITY} Office Tower Awarded to CBRE`  _(0.6%)_
+  - `{CITY} Distribution Facility Leased by Auto Parts Distributor in {AMOUNT} Deal`  _(0.6%)_
 
-**Development**
-  - `{WHO} with {SIZE} Res Community in {CITY}`  _(3.4%)_
-  - `{WHO} on New {SIZE} {CITY} Res Development`  _(3.4%)_
-  - `{WHO} to Develop {SIZE} of Affordable Housing in {CITY}`  _(3.4%)_
-  - `{WHO} on {CITY} High-Rise Res Development`  _(3.4%)_
-  - `{CITY} Social Housing Developer Wraps Up {AMOUNT} Res Buy in Downtown {CITY}`  _(3.4%)_
+**Acquisition**
+  - `{WHO} to Acquire RE/MAX in {AMOUNT} Transaction`  _(12.5%)_
+  - `{WHO} {ST} Property for Redevelopment into Class A Industrial Project`  _(12.5%)_
+  - `{WHO}`  _(12.5%)_
+  - `{WHO} to Acquire Ten-X Commercial in {AMOUNT} Deal`  _(12.5%)_
+  - `{WHO} {ST} Buildings for Redevelopment into Creative Office Space`  _(12.5%)_
+
+**Purchase**
+  - `{WHO} {AMOUNT} on Two SoCal Apartment Properties`  _(4.8%)_
+  - `{WHO} {AMOUNT} on {CITY} Office Asset`  _(2.4%)_
+  - `{WHO} {AMOUNT} on {CITY} Class A Office Building`  _(2.4%)_
+  - `{WHO} {AMOUNT} on Phoenix Area Medical Property Portfolio`  _(2.4%)_
+  - `{WHO} {AMOUNT} on {CITY} Hotel Asset`  _(2.4%)_
 
 _Placeholders: {WHO}=the actor/company · {AMOUNT}=price · {CITY}/{ST}=location · {SIZE}=units/SF/acres._
 
 ## 4. A complete post — the checklist
 Every rentv-grade CRE post should carry:
-- ✅ **Deal amount** — present in 73.4% of posts (median deal $53,000,000).
-- ✅ **City** (92.8%) and **state** (82.9%) — always geo-anchor the asset.
-- ✅ **Size** — units/SF/acres, in 63.1% of posts.
-- ✅ **Body** — median ~392 words; lead sentence states who/what/where/how-much, then the parties + details.
+- ✅ **Deal amount** — present in 79.3% of posts (median deal $58,950,000).
+- ✅ **City** (99%) and **state** (98.7%) — always geo-anchor the asset.
+- ✅ **Size** — units/SF/acres, in 97.8% of posts.
+- ✅ **Body** — median ~390 words; lead sentence states who/what/where/how-much, then the parties + details.
 - ✅ **Deal type + property type** tags (for filtering + SEO topical hubs).
 
 ## 5. Rule of thumb
-> A CRE news post = **{WHO} {VERB} {LOCATION} {PROPERTY-TYPE} for {AMOUNT}** in the headline, 392-word body that answers who/what/where/how-much in sentence one, geo-anchored and typed. Post on weekdays, lead with the biggest-$ deals.
+> A CRE news post = **{WHO} {VERB} {LOCATION} {PROPERTY-TYPE} for {AMOUNT}** in the headline, 390-word body that answers who/what/where/how-much in sentence one, geo-anchored and typed. Post on weekdays, lead with the biggest-$ deals.

← df51072f auto-data-snapshot: 2026-08-08T08:25:55 (7 data files) — dat  ·  back to Rentv  ·  test+a11y: deal-registry regression suite (env-injectable pa 29208e0f →