Skip to content

RealtyPad — growth drivers (qualitative demand signals)

Hard rules

  • Never invent. Every driver needs a real source (source + preferably source_url). Prefer null / skip over fiction.
  • Do not log “prices are rising” or YoY chips — that is get_agent_manual(workflow=trends) / market Growth. Log the cause (mall, employer, transit, rezoning, etc.).
  • Prefer status=dismissed over hard delete when a story goes stale or was wrong.
  • Read existing drivers via list_deal_growth_factors (or get_deal overview/full) before re-searching; update/dismiss instead of duplicating.
  • Do not set triage status / Status note — that is underwrite/triage.
  • After leaving inbox (status != new), deals with no active drivers emit soft gap missing_growth_drivers (has_gap=missing_growth_drivers / Soft gaps queue). Dismissed-only does not clear it — add or reactivate an active driver.
  • Ready package (import / research automation): Hosted goal=import and goal=research must leave at least one active growth driver before done. Soft gap stays soft for UW list filters, but when the planner calls done with the gap open, a code rail sends the worker to research a growth driver first (once), then the critic done gate decides. Prefer real sourced drivers after trends are fresh — never invent.

Owns vs does not

Owns Does not own
Searching + logging qualitative demand signals Market YoY / refresh_deal_trends (trends)
Grading strength × direction; dismissing stale items Money fields / comps / tax (research)
Feeding Drivers into Overall via CRUD auto-rescore Status / aggressiveness / buyer gate (underwrite)

What a growth driver is

Deal-scoped evidence that could move future demand, rents, or values beyond what ZHVI/ZORI/AirROI already show:

  • New retail / residential / mixed-use development
  • Named employer relocating or expanding nearby
  • Infrastructure (highway, transit, airport, utilities)
  • Policy / zoning / school bonds / tax incentives
  • Amenities (park, hospital, university)
  • Demographic shifts (migration, age mix) with a cited report
  • Other sourced signals

Search playbook

Run after trends are fresh (ensure_geo_markets + gap-fill as needed). Use deal address / city / county:

  1. Local news — “{city} development”, “{employer} relocating {county}”, mall / industrial park announcements.
  2. City / county planning — permits, rezoning agendas, CIP / bond packages.
  3. Chamber / economic development — employer wins, site selectors.
  4. Transit / infrastructure — DOT, transit authority, airport expansions.
  5. Schools / hospitals / universities — campus expansions when they move housing demand.

Prefer Firecrawl or allowlisted listing/MCP sources. Respect robots.txt; no ToS-hostile scrapes without approval.

Grading

Two axes on every row:

Axis Values Meaning
strength strong / weak / neutral How credible and material
direction positive / negative Expected effect on demand/price for this asset class

Strength guide

Strength Use when
strong Funded / under construction / permitted; large named employer with timeline; bond passed
weak Early rumor, RFP, soft LOI, “exploring”, unfunded concept
neutral Noted for context; impact unclear or balanced

Direction: positive = supports rents/values/demand for this strategy; negative = headwind (plant closure, flood plain expansion, competing oversupply if sourced).

Points (auto): strong ±100, weak ±40, neutral 0. Drivers = mean of active rows (−100…+100). Dismissed rows excluded.

Scoring (do not hand-edit)

Overall (when both Growth and Drivers present):

econ_adj + 0.35×Growth + 0.15×Drivers

Growth only → 0.5×Growth (legacy). Drivers only → 0.25×Drivers. Growth chip stays market YoY; Drivers is separate.

Checklist

Growth drivers:
- [ ] 1. `get_deal` core for `score_summary.drivers` + `list_deal_growth_factors`
- [ ] 2. Trends already fresh (or call trends workflow first)
- [ ] 3. Search news / planning / chamber / infra (cite URLs)
- [ ] 4. add_deal_growth_factor(s) with title, category, strength, direction, source(+url), as_of
- [ ] 5. Dismiss stale/duplicate drivers (status=dismissed)
- [ ] 6. Brief: what logged, Drivers score, what still speculative

MCP

Step Tool
Load get_deal (core), list_deal_growth_factors
Add add_deal_growth_factor / add_deal_growth_factors (bulk ≤100)
Update / dismiss update_deal_growth_factor (status=dismissed)
Hard delete delete_deal_growth_factor (rare)

Categories: development | employer | infrastructure | policy | amenity | demographic | other

UI: Deal detail Growth drivers tab. Also on Home summary.

Anti-patterns

  • Logging “ZHVI up 5%” as a driver
  • Inventing an employer move without a URL
  • Marking rumors as strong
  • Leaving obsolete “coming soon” malls as active for years — dismiss them