How the score and the numbers are made
Every result comes from public records and rules written in code. The same parcel and the same data always give the same answer. Weights and defaults below are read straight from the engine's config (Ease Score v0.2, cost assumptions v0.1).
The short version
- We gather the facts for the lot: zoning, lidar slope, hazard maps, street frontage, water service, transit, permits, Zoning Board decisions, nearby sales.
- For each housing option (single-family, duplex, 3–4 units, townhouse row, ADU, rehab of the existing building) we test whether a building fits the lot and which approvals it needs.
- Seven factors are scored 0 to 100 and combined with fixed weights into the Development Ease Score. Higher means easier.
- Deal-breakers are shown as red flags above the score. Serious but workable issues become “Review required” callouts.
- Money is kept separate: the pro forma answers “does it pencil?” from costs and nearby sales.
- Plain-English sentences are written from those computed results. Nothing in them is new information.
The score measures how hard a site is to develop, not whether to buy it.
Seven factors
Score = the sum of (weight × factor score) over the factors that have data, divided by the sum of those weights. The weights add up to 100.
| Factor | Weight | How it is scored |
|---|---|---|
| Zoning permission | 25 | How the district treats the use (by right, administrator exception, special exception, conditional use, or use variance) times how a building fits the lot: by right, with a contextual setback, with a dimensional variance weighted by that district's Zoning Board grant rate, or not at all. |
| Terrain and buildable ground | 20 | Share of the lot steeper than 25% from USGS 1-meter lidar, read through a curve; multiplied by 0.5 when the buildable area inside the setbacks is smaller than the smallest footprint for the housing type. |
| Geohazards | 15 | Starts at 100 and is multiplied down for each hazard on the lot: landslide-prone overlay, mapped mine workings, 1982 slope-movement area, 100-year floodplain, a cleanup site on or next to the lot, and combined-sewer area. |
| Access and infrastructure | 15 | Street frontage (opened street, paper street, city steps, or none) times water and sewer service (inside, unknown, or outside), plus a small bonus near frequent transit. |
| Approval burden and time | 15 | Starts at 100 and loses points for each approval beyond a building permit, a required geotechnical report, a historic district, and a demolition. Also yields months to a permit. |
| Lot and acquisition readiness | 5 | Vacant or teardown-ready lots score highest; for a rehab, the county's condition rating sets the score. Tax delinquency and public ownership adjust it. |
| Market activity | 5 | Percentile rank of nearby valid sales and completed permits. |
Bands
| Band | Score |
|---|---|
| Easy | 75–100 |
| Moderate | 55–74 |
| Hard | 35–54 |
| Very hard | 0–34 |
Zoning permission
Use permission comes from the City's §911.02 Use Table. The permission score is multiplied by the lot-fit factor.
| Code | Meaning | Points |
|---|---|---|
| P | Permitted by right | 100 |
| A | Administrator exception | 80 |
| S | Special exception (Zoning Board hearing) | 60 |
| C | Conditional use (City Council) | 45 |
| N | Not permitted; needs a use variance | 0 |
Lot fit: by right ×1, with a contextual front setback ×0.95, with a dimensional variance ×(0.5 + 0.5 × the district's Zoning Board grant rate) × 90% (a variance path never scores like a sure thing), no fit ×0. With fewer than 5 decided cases in the district, the citywide record for the same kind of request is used, labeled with its case count and years; only when neither exists does the grant rate default to 60%, and it says so. Hazard cap: when at least 50% of the lot is landslide-prone or at least 40% is steeper than 25%, the score is held to Moderate or lower and labeled.
Geohazard multipliers
| Condition on the lot | Multiplier |
|---|---|
| City landslide-prone overlay | ×0.65 |
| Over mapped mine workings | ×0.7 |
| Inside a 1982 mapped slope-movement area | ×0.85 |
| In the 100-year floodplain | ×0.7 |
| Cleanup site on or next to the lot | ×0.75 |
| Combined-sewer area | ×0.95 |
Red flags and review callouts
In the requirements checklist, an item is marked Required only when a cited law requires it. Other items are shown as advisories.
Evidence and ranges
- Unknown is not zero. A factor without data is marked missing and left out of the average. It is never scored as zero or as fine.
- Ranges. When a factor is missing, the result also shows the range the score would span if that factor were 0 or 100.
- Preliminary. If the factors with data carry less than 60% of the weight, the result is labeled “Preliminary — insufficient evidence.”
- City-only layers. Zoning, landslide-prone areas, historic districts and combined sewers are mapped for the City of Pittsburgh only. Outside the City they are unknown, never “none.”
- Receipts. Each factor bar opens a receipt: the inputs, the rule applied, and the sources with dates.
Months to a permit
The estimate adds time for each approval step to the building-permit part. Hearing-based approvals use the Zoning Board record (about 1.2 months from hearing to decision, plus about 2.3 months from decision to permit). Other step times are heuristics and are labeled as estimates.
For the building permit itself, no public City dataset records when an application was filed, so real processing times cannot be measured. Inside the City we use the published review target and label it “City target, not measured.” Outside the City we fall back to a labeled 3-month estimate.
Does it pencil?
The pro forma is separate from the Ease Score. A cheap site in a weak market and a hard site in a strong market are different answers, so the two are never blended. Every default below is editable on the parcel page and shows its source label.
Costs
- Construction: a build-quality slider per finished square foot (Production (spec) $185, Basic $200, Good spec $250, Better $310, High-end $400, Custom $525). The five from Basic up are published Pittsburgh builder ranges; Production (spec) is NAHB 2024 construction cost + typical builder overhead and profit; cross-check: Pittsburgh basic range $175–225. The default is Good spec, $250.
- Backtest: we ran the pro forma on 518 new homes built in Allegheny County in 2020–2025 that then sold (March 2021 to August 2026), each priced at its actual sale price. At default assumptions, 94% of real completed homes show a loss; at the Production (spec) rate of $185 per square foot, 78%. Real builders built and sold these homes, so the default costs are on the high side for production and spec builders: the pro forma leans toward “does not pencil.”
- Hillside adders fire from the lidar slope: moderate slope $20 and steep slope $45 per square foot of building footprint (the foundation area, not every floor), plus $15,000 of retaining walls per building on a steep or stepped site, each with the reason shown.
- Undermined lots: the mine grouting or mine subsidence insurance path; the premium comes from the PA DEP rate chart.
- Soft costs: architecture and engineering 8% of hard cost; the Pittsburgh building permit fee at $6 per $1,000 of construction value; survey, title, legal and insurance 3%.
- Contingency: 7% on a flat lot, 12% on a hillside or hazard site, 15% for a rehab.
- Financing: construction loan at the Bank Prime Loan Rate plus 1%, 80% of cost, with 50% of the loan drawn on average.
- Items with no local cost yet (demolition, geotechnical report, dumpsters and street permit) are listed as “Not included” and the estimate is marked partial. They are never counted as zero.
- Rehab cost is estimated from the building's condition in the County assessment (condition tier, year built, finished area). Ranges are our assumptions: edit them with a contractor's walk-through. New-construction rates are never used for a rehab.
Ranges
Every cost line and total is shown as low to high with a likely figure, rounded to $1,000 per line and $10,000 for totals. Cost ranges come from each input's documented range (builder tiers, site adders, soft-cost shares). The sale value range is the 25th to 75th percentile of the comparable sales per square foot when there are at least 8 of them, otherwise ±15%, labeled as an assumption. The profit (or gap), margin and yield ranges combine the cost and value ranges as independent uncertainties: each side moves by the square root of (value change² + cost change²), so a low value is not paired with a high cost.
The verdict
For a home built to sell: profit = sales − total cost − selling costs. If profit is zero or less, the answer is No. If the margin on cost is under 10%, it is Barely. Otherwise Yes. For a rental the page stops at yield on cost, because there is no local market cap rate to judge it against yet. The math is written out as sentences, for example “sales − total cost − selling costs = profit.”
Totals are checked against recent Allegheny County projects as a sanity check, never as defaults.
How homes are valued
New construction
A new home is valued only from sales of new homes: valid arm's-length sales in the last 3 years of homes built no more than 10 years before the sale, at least 600 sq ft and $20,000, nearest first. We need at least 5, widening the search from ¼ mile to 3 miles and saying how far it went. Sales in the same City neighborhood (or municipality) are used alone when there are at least 5; otherwise market-tier areas (below). We widen until 8 sales, keep the nearest 12, and drop sales whose price per square foot is beyond 1.5× the middle-half spread; dropped sales are listed with the reason. When the lot's own area has too few new sales, comps come only from areas in the same market tier: the median price per square foot of existing-home sales there is within ±35% of the lot's area (an assumption you can edit; at least 10 sales in 3 years, else 5 years; an area still without a tier borrows the median tier of its 3 nearest areas). This is the way appraisers pick comparable neighborhoods; no income, race or other demographic data is used. If too few sales qualify, areas priced no higher are allowed; if there are still too few, no value is estimated — sales from richer markets nearby are never used just because they are close. Comps are kept within ±40% of the planned home's size when enough remain.
When there are too few, the value is left blank. Older-home prices are then shown only as a labeled floor, never as the value of a new build.
After-repair value (rehab)
A rehab is valued from nearby valid sales of the same use in Good, Very Good or Excellent condition (county assessment rating), with living area within 35% of the building. We need at least 5; with fewer, all Good-or-better sales nearby are used with a note. As-is sales of older homes are not used as the value after a rehab.
How the Planner ranks a parcel
A parcel's rank uses its best strategy that adds homes: new single-family, duplex, 3–4 units, townhouse row, or ADU. A rehab of the existing building is shown alongside, never in place of it. ADU only becomes the ranked option when no other strategy has a zoning answer — ADU zoning is not transcribed yet, so without this rule ADU would float to the top of most parcels on missing data, not on merit. Outside the City, where no zoning is loaded at all, the same rule applies: the best of single-family, duplex, 3–4 units or townhouse ranks the parcel, and ADU only stands in when none of them has an answer.
Blockers are the factors and callouts actually holding the ranked strategy back: every red flag, a v0.2 hazard band cap, then the first factor losing at least one score point and any other losing at least two. A data gap (for example, sewer service marked unknown) is never listed as a blocker — missing evidence is not the same as a problem. “Only blocked by X” on the filter rail means every one of a parcel's blockers is in the set X.
Each blocker can link to a Policy scenario that would relax it — a minimum-lot-size or lot-too-small blocker links to no minimum lot size, a parking blocker links to no parking minimum near transit, and a use-not-permitted, special-exception, conditional-use or too-small-to-fit blocker links to attached homes by right on narrow lots. When several of a parcel's blockers have a lever, the link combines them. Setbacks and slope have no lever yet, so they carry no link.
Policy levers
A lever never changes the engine. It rewrites the zoning-rules row a parcel is scored with, only for the parcels it applies to; with every lever off, a parcel scores exactly as it does on its own parcel page. Six levers, defined exactly as the code applies them:
- Attached homes by right on narrow lots. On existing single-unit lots (districts R1D and R1A) at or under a chosen width, a side-by-side attached pair becomes permitted by right; in R1D, the existing townhouse-row width limit also rises to that width when it is currently lower. Parks (district P) are excluded from every lever.
- Minimum lot size. A district's minimum lot area and minimum lot area per unit are scaled down to a chosen share of the current number (0% removes the minimum).
- Parking minimums. Off, none within a quarter mile of a frequent-transit stop (the Ease Score's own transit test), or none anywhere.
- ADUs by right. One accessory dwelling unit (up to 800 sq ft, a scenario setting: our zoning table has no ADU rules) beside a detached single-family house in R1D, R1A, R2, R3 and RM. It is counted as one more home per eligible lot, not rescored. The low end counts only lots where an area check (lot area minus the house footprint and the front yard) holds the smallest ADU, 14 × 16 ft, with the district's side and rear yards and 10 ft from the house — a labeled proxy, since the lot-fit test has no priced ADU path. Its pencil test prices 800 sq ft at nearby new-construction prices with no land cost. When another lever also adds homes on the lot, the path with more homes counts, never both.
- Contextual front setback. In the same residential districts, the front setback becomes the neighbors' average by right. Neighboring buildings are not measured; the engine's own contextual-setback assumption (5 ft, the value every parcel page uses for §925.06) stands in for it. Because the baseline already credits that setback where a lot needs it, by-right gains are small.
- One more story. In the same residential districts, the height limit rises by one story and 10 ft. The lot-fit test's building types top out at three stories (placeholder sizes), so where a district already allows three this lever cannot add homes in the model; its result is a floor.
Capacity is shown as a range: the low end counts only homes needing no lot split, the likely figure counts every lot-fit gain the batch could test, and the high end adds lots that ran past the per-parcel time budget, estimated at the average gain. Capacity is how many homes a rule change would allow by right, not how many would get built.
The pencil test is a screening test, not an underwriting: sale price per square foot from at least five nearby new-construction sales, construction cost from the “Good spec” tier range in the same cost-assumptions config the Developer pro forma uses, land at the county's assessed value, and a 10% margin floor. It never runs financing, absorption or a hold period.
The fiscal ledger multiplies a new home's added assessed value by each taxing body's current millage (county, municipality, school district). Assessed value is estimated as sale value times the county's assessment ratio for recent new-construction sales, minus the assessed value of anything the new home replaces. A tax abatement lever, where turned on, is illustrative and fiscal-only: it does not change how many homes a rule allows or whether they pencil.
Nonprofit affordability math
Rent limits follow HUD Income Limits and the LIHTC 30% rule: household size is imputed at 1.5 persons per bedroom (1 for an efficiency), the income limit for that household size at the chosen AMI band is looked up (30% and 50% and 80% are HUD's published limits; 60% is 1.2× the 50% limit, HUD's Multifamily Tax Subsidy convention), and the maximum gross rent is 30% of that income divided by 12. A placeholder tenant-paid utility allowance by bedroom count (labeled “Assumption, edit me”) is subtracted from gross rent to get the rent the project collects.
Need compares households at or below 50% of the area median (HUD CHAS, all tenures) against the count of rental units in the tract already affordable at that band; the receipt labels this comparison rough.
The funding gap is total development cost, from the same pro forma the Developer seat uses, minus the permanent loan the restricted rents can support (net operating income ÷ a debt-coverage ratio ÷ the annual payment per dollar borrowed). Turning a capital source on subtracts its typical amount — labeled “Typical, not an award” — from the remaining gap, capped at what is left. Every source's eligibility checks (AMI limits, tenure, site, minimum project size) run in plain words before its amount is offered.
Cost comes from the same precomputed site-fit layout the Developer parcel page prices when one exists for the lot; otherwise it falls back to a labeled standard program (homes sized by bedroom count as floors over the lot's buildable footprint), never a live, unpriced guess.
The plain-English layer
The parcel page answers four questions (Can you build here? Does it pencil? What's in the way? What next?) and gives a two-sentence summary: what the lot allows by right, and what might be possible with zoning relief.
- The engine writes a template sentence for every answer from the computed results.
- An AI model may reword those sentences to read more naturally, using only the computed data.
- A validator rejects any sentence that contains a number not found in that data, and the template is shown instead.
- How nearby Zoning Board precedent is described is fixed by the counts, not chosen by the model.
Full details are on the AI tools used page.
Sources
Parcels, assessments and sales from Allegheny County via WPRDC; zoning, hazard overlays, permits and Zoning Board decisions from the City of Pittsburgh; flood maps from FEMA; lidar from USGS; mine, water-service and cleanup records from PA DEP; neighborhood data from the U.S. Census Bureau; transit from Pittsburgh Regional Transit. Each report lists the source and date behind every number.
The full list with licenses and access dates is in the project's sources ledger and data inventory. Gaps are on the Limitations page.
Decision support only, not legal, financial, zoning or engineering advice. Confirm zoning with the permitting office, costs with local bids, and financing with your lender.