Atlas Growth Intelligence (urban-growth-signals)
Core question. Is this place growing, declining, stabilising or transforming, and what evidence supports that?
Keep three claims apart:
- A wealthy place is not necessarily growing.
- A growing place is not necessarily emerging.
- A pattern is not a forecast.
Findings to report
- Growth. Population, households, real income, housing stock or jobs are expanding (or contracting).
- Momentum. Growth is speeding up or slowing down compared with an earlier period.
- Structural transition. The composition is changing even if population is stable. Examples: affluence upgrading, tenure shift, education upgrading, commercial intensification.
- Emergence. Several independent dimensions point to the place becoming a different kind of neighbourhood or commercial centre.
- Anomalies. The place behaves unlike its peers, or its signals diverge. For example, home values rise while jobs fall.
Procedure
-
Resolve the geography.
- A ZIP:
area_change(action="growth_profile", zipcode="11530"). - "Around" a place or address: get its point first (
find_geography(action="geocode", query=...)). Then call growth_profile withlatitude,longitude,mode(walk or drive) andminutes(1 to 30). - A bare point: the ZIP that contains it.
- A ZIP:
-
Profile.
area_change(action="growth_profile", ...). Read these fields ofresult:classification: growth_state, momentum, transitions, growth_character, emergence_stage;signals: growth, momentum, relative, structural, convergence, divergences, transitions;sufficiency;evidence_detail: dated records by dimension.
-
Emergence. For a place:
area_change(action="emergence", zipcode=...). For discovery, such as "find emerging ZIPs in Dallas":area_change(action="emergence", metro="Dallas", limit=20), optionally withstate,stageandmin_confidence. -
Compare.
area_change(action="growth_compare", zipcodes=["11530", "11237"]). It compares ZIPs only; profile each catchment on its own and compare ZIPs with ZIPs. -
Explain each headline finding before stating it, especially anything surprising:
area_change(action="growth_explain", topic=..., <same geography>). Topics are:growth_state,momentum,growth_character,emergence;- a transition:
affluence_upgrading,commercial_intensification, …; - a divergence:
values_up_jobs_down, …; - any metric name.
Report the competing explanations it returns.
-
Context (optional).
housing_market(action="rent_history", zipcode=...)for the rent path.housing_market(action="affluence_context", zipcode=...)for value levels.crime(action="context", zipcode=...)for reported crime; it is context, never a growth signal.area_profile(population, income_distribution, ...) on a context fromcontext.resolvefor current composition.places(action="count", context=...)for today's commercial inventory, which is not a history.
Rules for the answer
- Give every number with its period, geography and source, all of which the records carry.
- Records with status
not_significant,insufficient_history,unavailable,suppressedorwithheldare not evidence of change. Say so. Never fill them in. - Records with status
proxyare county series. Call them county context; they never prove local change. - A transition with
significance: not_tested(tract-weighted catchment values carry no margin of error) is a direction, not a significant shift. Say so. - Affluence comes from real income and from the constant-dollar share above $200k (2024 dollars). Never infer it from a nominal income bracket: inflation alone moves households across a fixed dollar line.
- Remote work (
remote_work_shift) is a national pattern. Report it, but never let it make a place "transforming". - Convergence counts independent dimensions only: demographic, economic, housing, commercial, mobility, urban fabric. Rents and home prices together are one dimension.
- Say "emerging" only when the emergence stage says so, or when at least three dimensions converge with a supported transition. Otherwise say "growing", "transforming" or "stable".
- Peer-relative statements use the returned percentiles: 70th or above is above peers, 30th or below is below.
- Do not forecast or claim causes. The engine (
growth_v1) is descriptive and analytical, not backtested. Use "consistent with" and "suggests", and give the competing explanations. - Name the standing gaps when they matter: there is no history of places opening or closing (commercial change comes from Census ZIP Business Patterns), and demographic acceleration needs a third ACS period.
Output format
Start with a short verdict, then this block, then the evidence and caveats.
skill: urban-growth-signals
location: <name>
geography: <ZIP nnnnn | drive 10-minute catchment around …>
classification:
growth_state: <growing|declining|stable|transforming|insufficient_evidence>
momentum: <accelerating|decelerating|steady|mixed|insufficient_evidence>
growth_character: <label or null>
emergence_stage: <stage or n/a>
signals:
- name: <e.g. Affluence upgrading>
type: <growth|momentum|structural_transition|emergence|anomaly>
direction: <positive|negative|flat|mixed>
evidence: [<metric (period, source)>, ...]
status: <supported|not_significant|not_tested|insufficient_history|unavailable|national_pattern>
confidence: <sufficiency level>; predictive use not validated
gaps: [<...>]