---
name: "neighborhood_investment_analysis"
description: "Judge a neighbourhood for investment before judging any property in it: draw and record the boundary, build a dated evidence table for closed sales, achieved and asking rent, vacancy from counts, zoning, flood hazard, pipeline supply and demand anchors, run the bundled evidence checker, state the risks and the limits of what area data can prove, and turn the area read into a property level diligence plan. Use when screening an area, a suburb, a tract or a small market for rental, value-add, flip or small commercial investment, or when a property pitch leans on area claims that need checking first."
---

# Neighborhood Investment Analysis

## Purpose

Most bad property buys start one level up. The property model looked fine and the area was never checked on its own: rent came from asking listings, vacancy came from a city average, zoning came from the listing text, and new supply down the road never entered the picture.

This skill judges the area first, with its own evidence, before any property is underwritten. It ships a checker, `scripts/area_check.py`, that grades the evidence behind a brief: required categories present, every row sourced and dated, stale rows flagged, thin samples flagged, wide margins of error flagged, vacancy computed from counts, and a gross rent figure that is labelled gross every time it appears.

Use the property level skill for the property itself once the area passes. Area evidence can kill a thesis, narrow it, or clear the way for property diligence. Area evidence cannot value a house, set its rent, or promise a return.

## Workflow

### 1. State the thesis and the strategy before gathering data

Write down, in one or two sentences, what would have to be true about this area for the investment to work, and which strategy it serves: buy and hold rental, value-add, flip, or small commercial.

Each strategy reads the same area differently. A rental thesis lives or dies on achieved rent, vacancy and pipeline supply. A flip thesis lives or dies on closed sales depth and how fast similar homes sell. A small commercial thesis adds foot traffic, business mix and parking or access rules. Name the two or three facts that would kill the thesis. Those facts get checked first.

### 2. Draw the boundary and write it down

Define the area with named streets, census tracts, or both, and record what sits just outside it. Name the competing area tenants or buyers also consider.

Rules for the boundary:

- Draw it before looking at sales or rent figures. Never redraw it so a favourable sale or a cheap listing falls inside.
- Keep the boundary fixed for the whole brief. Every evidence row uses that geography, or carries a note explaining why its geography differs.
- Run one sensitivity note: what changes if the boundary moves one tract in any direction. A conclusion that flips when one tract moves is a weak conclusion, and the brief must say so.
- Treat ZIP codes with care. A ZIP can cover several distinct areas, and a tract read and a ZIP read of the same streets can disagree.

### 3. Build the evidence table, one dated row per fact

Open `references/evidence-table.md` and fill it before writing any verdict. Required categories: sales, rent, vacancy, zoning, hazard, supply, demand.

Every row carries an indicator, a value, the geography, a period end or a check date, a named source, and a count or margin of error where one exists. A fact with no source or no date goes on the gaps list, not in the table.

Separate measures that sound alike:

- Achieved rent from leases, rent rolls or manager records, kept apart from asking rent from listings. Never average the two.
- Closed sales, kept apart from asking prices and pending sales. Asking prices show what sellers want. Closed sales show what buyers paid.
- ACS gross rent, which bundles utilities the tenant pays separately, kept apart from contract rent in a listing. The two are different measures and a brief that mixes them overstates or understates rent.

### 4. Read sales evidence with its limits attached

Record the closed sales count beside every median. A median from 4 sales is a story about 4 sales. The checker flags under 5 sales as very thin and under 10 as thin.

Price indexes need the same discipline. The FHFA House Price Index is a weighted repeat sales index built from conventional conforming mortgages. It measures price change, not a price level, not a median, and not the value of any one property, and its flagship series does not directly cover condos, multi-unit property, commercial property or land. Repeat sales indexes are also re-estimated each release and recent points revise the most, so treat the newest points as provisional. Full sourcing in `references/sources.md`.

An area sales read can support a price level range for a period and a direction of travel. It cannot support a forecast, and the brief never turns a past change into a promised future one.

### 5. Read rent and vacancy from counts where counts exist

Compute rental vacancy from counts with the Census formula: vacant for rent divided by renter occupied plus vacant for rent plus rented but not yet occupied, times 100. Run it with:

`python3 scripts/area_check.py vacancy --vacant-for-rent 48 --renter-occupied 920 --rented-not-occupied 32`

That example returns 4.8 percent. Seasonal, recreational, occasional use, migrant and other vacant units sit outside this formula, so a total vacancy figure from another source will read higher and the brief should say which definition a figure uses.

Handle ACS vacancy and rent figures with their margins of error showing. ACS is a sample survey with a lag, small areas only get 5-year estimates, and tract level vacancy margins of error can run 3 percentage points or more. Quote the range the margin allows, not the point estimate alone. Use 5-year estimates for tracts, and compare change over time only across non-overlapping 5-year periods.

Cross-check the survey read with a current local snapshot: manager achieved rents, current listings with days listed, and how long vacant units in the boundary have sat. Label the snapshot with its date and its count, and keep it in its own row.

### 6. Check zoning, hazard and infrastructure from official records

- Zoning: check the official zoning map and the municipal code for the subject blocks, and record the check date. Verify that the planned use, and the legal unit count behind any rent claim, is allowed there today. Listing text is not a zoning source. Record pending rezoning applications in the boundary as a separate row, as a risk or an opening, with the application date.
- Hazard: check the FEMA Flood Map Service Center for the subject blocks. Record the zone, the map panel and its date, the base flood elevation where one exists, and any letter of map amendment. Part of an area in a Special Flood Hazard Area changes the insurance cost for financed buys there, and that cost belongs in the brief as a quoted premium range where one can be obtained, not as a zone letter alone. Zone X is lower risk and still carries risk, and the brief says so in plain words.
- Infrastructure and plans: read the city capital plan and permit portal. Funded work with dates counts as evidence. Announced work with no funding, no date, or only press coverage gets labelled as an announcement. Check vacant land inside and beside the boundary: its future use is unknown, zoning can change, and a stalled development can sit unresolved, so vacant land is recorded as an open risk, never as a quiet plus.
- Supply: count permitted and under construction rental units headed into the boundary and compare that count with the existing rental stock in the same boundary. Three hundred new units means one thing against ten thousand existing rentals and another thing against nine hundred.

### 7. Read demand without inventing it

Record the demand anchors a reader can verify: major employers and institutions inside or near the boundary with the dated source behind any jobs claim, transit or road access as it stands today, and population or household change measured across non-overlapping ACS periods with margins of error showing.

Flag concentration plainly. An area where one employer, one plant, or one institution drives most rental demand carries a single point of failure, and any dated filing, closure notice or expansion notice for that anchor goes into the table with its date.

### 8. Run the checker and fix the evidence, not the verdict

Put the brief into JSON following `references/input-schema.md`, then run:

`python3 scripts/area_check.py check brief.json --markdown evidence-check.md`

Read the verdict correctly:

- `PASS_EVIDENCE` means the evidence is complete, dated and sourced enough to form a view. It says nothing about whether the area is good.
- `CAUTION` means a row is stale, thin or noisy. Form a view only with that limit written into the brief next to the figure it affects.
- `INSUFFICIENT` means a required category is missing or a row has no source or date. Stop. The output is a gaps list and a plan to fill it, with no area verdict.

Never edit a figure, drop a row, or widen a boundary to move a verdict. Replace weak evidence with stronger evidence, or report the weakness.

### 9. Write the area verdict and the property diligence plan

Land on one of three verdicts, with the evidence rows behind it cited by indicator:

- Proceed to property diligence: the killing facts from step 1 were checked and did not kill the thesis.
- Proceed with named constraints: the thesis survives only in a narrower form, for example only outside the flood blocks, only at a lower rent assumption, or only with a longer lease-up period in the model.
- Do not proceed: a checked fact breaks the thesis at current prices and terms. State the fact, not a mood about the area.

Then translate every material area finding into a property level check. Flood finding becomes an elevation certificate and an insurance quote for the specific address. Zoning finding becomes a written legal unit confirmation for the specific property. Vacancy finding becomes the vacancy allowance floor for the property model, at or above the measured area rate. Pipeline finding becomes a lease-up and rent growth assumption the property model must survive. Achieved rent finding becomes lease and deposit verification on the specific property, never a copy of the area median into its rent line.

Close with what would change the verdict: two or three dated, checkable facts that would move a do not proceed to a fresh look, or a proceed to a stop.

Worked pairs are in `references/worked-briefs.md`: a strong area and a weak area that both pass the evidence check, and a thin area that gets no verdict at all.

## Output Contract

Return all of the following:

1. The thesis and strategy statement, with the facts named in advance that would kill the thesis.
2. The boundary note: boundary as drawn, why, the competing area, and the one tract sensitivity note.
3. The completed evidence table from `references/evidence-table.md`, every row sourced and dated, asking and achieved rent in separate rows, closed sales apart from listings.
4. The checker output as run, with its verdict quoted exactly and read correctly in the text that follows it.
5. The risk and constraint notes: zoning, hazard, supply pipeline, demand concentration, vacant land, and any regulatory limit on the planned use that an official source states, each tied to its evidence row.
6. The area verdict: proceed, proceed with named constraints, or do not proceed, with the killing or clearing facts cited.
7. The property level diligence plan: one check per material area finding, in the order a buyer would do them.
8. The limits paragraph and the change test: what the area data cannot prove in this brief, and the dated facts that would change the verdict.
9. The gaps list, even when it is empty. An empty gaps list is a claim, and it should be made on purpose.

## Operating Rules

- Never invent a sale, a rent, a vacancy rate, a zoning rule, a permit count or a jobs figure. A number with no dated source gets cut or moved to the gaps list.
- Never use the racial, ethnic, religious or other protected class makeup of an area as an investment signal, a reason to include or exclude an area, or a way to describe an area to a buyer or renter. The Fair Housing Act bars steering, redlining and blockbusting, and those bars shape this work: judge areas on price, rent, vacancy, physical stock, zoning, hazard, supply and access facts, and point readers to official statistics and district reports for any question only they can judge.
- Never describe an area with subjective safety or quality labels as a finding. Cite a dated official statistic with its source, or leave the point out.
- Never quote a price index as a value, a median or a forecast. An index shows past change for the sample it covers, and the brief names that sample.
- Never present gross rent divided by price as a return. Label it gross, before costs, tax, vacancy and financing, every time it appears, or leave it out.
- Never copy an area median rent or an area median price into a property model as that property figure. Area figures set the test a property figure must pass. Property figures come from property evidence.
- Never let a seller, agent or listing claim stand as the source for zoning, vacancy or achieved rent. Each of those has an official or records based source, and the brief uses it.
- Date the brief and name its shelf life. Sales, rent snapshots and permit counts go stale on the limits the checker applies, and a brief past those limits gets rebuilt, not reused.
- Keep the verdict and the evidence verdict apart in every sentence that reports them. Confusing `PASS_EVIDENCE` with a good area is the single most damaging error this skill can make.
