Data and methods

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.2).

The short version

  1. We gather the facts for the lot: zoning, lidar slope, hazard maps, street frontage, water service, transit, permits, Zoning Board decisions, nearby sales.
  2. For each housing option (single-family, duplex, 3–4 units, townhouse row, ADU; renovating the existing building is listed as not evaluated) we test whether a building fits the lot and which approvals it needs.
  3. Seven factors are scored 0 to 100 and combined with fixed weights into the Development Ease Score. Higher means fewer barriers.
  4. Deal-breakers are shown as red flags above the score. Serious but workable issues become “Review required” callouts.
  5. Money is kept separate: the pro forma answers “does it pencil?” from costs and nearby sales.
  6. Plain-English sentences are written from those computed results. Nothing in them is new information.

The score measures barriers to building, not whether it's a good investment.

No numeric score where zoning is not loaded. Zoning rules are transcribed for the City of Pittsburgh only. Elsewhere (and for the few City parcels with no zoning district) there is no Ease Score: the parcel reads “Partial screen: zoning not available for [municipality]” with the known facts only (lot, slope, hazards, existing building, market). In the Planner and Developer tables these parcels read “Partial”, are never counted in a band and sort after every scored parcel.

Market strength is a separate signal beside the score, never part of it: Strong, Moderate or Weak from the count and median $/sq ft of recent new-construction sales nearby (the same comparable set the pro forma prices from), against the default construction cost per sq ft. The receipt beside it states the rule and the numbers. When the pro forma does not pencil, the headline says so (“[band], but doesn't pencil at today's prices”).

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 weights (from the engine config)
FactorWeightHow it is scored
Zoning permission25How 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 ground20Share 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.
Geohazards15Starts 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 infrastructure15Street 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 time15Starts 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 readiness5Vacant or teardown-ready lots score highest; for a rehab, the county's condition rating sets the score. Tax delinquency and public ownership adjust it.
Recent sales and permit activity5Percentile rank of nearby valid sales and completed permits (a volume measure, separate from the new-home price signal beside the score).

Bands

BandScore
Few barriers75–100
Some barriers55–74
Significant barriers35–54
Major barriers0–34

Zoning permission

Use permission comes from the City's §911.02 Use Table. The permission score is multiplied by the lot-fit factor.

CodeMeaningPoints
PPermitted by right100
AAdministrator exception80
SSpecial exception (Zoning Board hearing)60
CConditional use (City Council)45
NNot permitted; needs a use variance0

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 lotMultiplier
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

Red flags are deal-breakers: a FEMA floodway on at least 5% of the lot, no legal street access, or an active cleanup site on the lot. They appear above the score with the label “Blocked unless resolved” and name the way out. They never change the number.
“Review required” callouts cover issues that add cost, time or a study but can be handled: landslide-prone ground, undermined land, historic districts and similar. Each lists the code sections that apply, a checklist, and cost notes. The mine grouting figure is an editable default ($30,000–$50,000), not a quote. The geotechnical report default ($7,000 landslide-prone or steep, $4,000 undermined only) is an assumption; get quotes from a geotechnical engineer.

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: the cost to build per finished square foot, with the builder's fee removed: published Pittsburgh builder ranges divided by about 1.20 (NAHB 2024 builder overhead and profit). Tiers: Basic / builder-grade $160 ($150–$170; published retail $178–$200), Standard infill $190 ($165–$210; published retail $200–$250), Mid-range $240 ($210–$270; published retail $250–$325), High-end $320 ($270–$375; published retail $325–$450), Custom / luxury $420 ($375–$470; published retail $450–$565). The default is Standard infill, $190.
  • Hillside adders fire from the lidar slope under the building footprint (the lot's average slope when there is no footprint yet): over 15%, $20 per square foot of footprint; 25% or more, $45 per square foot of footprint plus $15,000 of retaining walls per building, each with the reason shown. Water and sewer laterals: $10,000 per house (assumption; confirm with a contractor).
  • Undermined lots: the mine grouting or mine subsidence insurance path; the premium comes from the PA DEP rate chart.
  • Soft costs: architecture and design 4% of hard cost, at least $8,000; structural engineer $8,000 when the slope under the building is over 15%; civil and grading plan $8,000 when about 5,000 sq ft or more is disturbed or the site is steep; survey $2,500; geotechnical report $7,000 (landslide-prone or steep) or $4,000 (undermined only); builder's risk and liability insurance 1.5% of hard cost; title and closing 1.5% of the land price.
  • Permits: inside the City, the PLI 2026 fee schedule ($6 per $1,000 of construction value, minimum $130, maximum $8,000, plus electrical, mechanical and certificate of occupancy) and Pittsburgh Water $610. Outside the City, a flat $12,000 per house for permits and tap-in fees, flagged “confirm with the municipality.”
  • Contingency: 10% of hard and site cost; 15% in the landslide-prone overlay or on a steep site; 15% for a rehab.
  • Financing: construction loan at the latest bank prime rate in our data (Federal Reserve, FRED) plus 1.0 point (7.8% only if prime is not loaded), interest-only, 80% of cost, with 55% of the loan drawn on average over 10 months for one home; lender fees 1% of the loan.
  • Sale and taxes: no sales commissions; the seller's half of the realty transfer tax (City 5% total, 4.5% in the Baldwin-Whitehall School District, elsewhere the municipality's rate). Property taxes while holding use the City's 2026 total of 27.307 mills (City 9.67 + parks 0.50 + library 0.25 + Pittsburgh Public Schools 10.457 + Allegheny County 6.43).
  • Items with no local cost yet (demolition, dumpsters and street permit) are listed as “Not included” and the estimate is marked partial. They are never counted as zero.
  • Costs are the cost to build and exclude builder fees, general contractor markup and sales commissions. If you hire a builder, add their fee (often 15–25%). Soft costs, fees and taxes follow published local schedules where available and labeled assumptions elsewhere. Confirm with local bids.
  • Rehab is not estimated automatically; enter your own budget. The condition inside a building is unknown and needs an inspection, so renovating it is shown as “not evaluated” and never ranks as the best option. The county condition rating is shown as a fact only.

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. Below zero, it doesn’t pencil. From zero up to the 15% target margin on cost, it is a thin margin. At or above the target it pencils. 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.

Backtest

We tested our cost model against 518 homes that were actually built and sold in Allegheny County since 2020 (3 sales under $100 per square foot were set aside as likely non-market, leaving 515). Our earlier model's cost estimates ran a median 53% above what those homes actually sold for. The current model is roughly break-even on single-lot infill homes (96 homes; median margin −0.6%). Because real builders earned a profit on those homes, our estimates are likely conservative. Subdivision homes built by large production builders on pre-graded lots cost less to build than one-off infill (419 homes; 78% show a loss under our costs), so EaseScore is not calibrated for them.

Method: new single-family homes, townhouses and rowhouses built in 2020 or later, each at its first valid sale after completion (at least $75,000 and 600 sq ft). The engine prices each home with its own size, lot, slope, overlays, taxes and land estimate, and uses its actual sale price as the value. Margin = (sale price − selling costs − our total cost) ÷ our total cost; a loss means our total cost is above what the home sold for, net of selling costs. Run at a 7.75% construction loan rate; the current default is 8.0%.

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 or lower, never a richer one: the median price per square foot of existing-home sales there is no higher than the lot's area and at most 35% below it (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, any lower-priced area is 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)

Only after you enter your own rehab budget (total or per sq ft), the result is labeled “based on your rehab budget” and the 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 “Standard infill” 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”) 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.