transcript.md
↑ ContentsState Planner chat · https://stateplanner.com
- State: Tennessee (TN)
- Started: October 22, 2026, 12:27 AM UTC
- Runtime: 42 sec
- Status: completed
Prompt
Which Tennessee counties permitted the most new homes from 2020 through the latest year, how much of that was apartments of five units or more, and how does it compare with each county's population growth over the same years? Map new homes per 1,000 residents."
Model: Anthropic: Claude Haiku 5.5 (anthropic/claude-haiku-5.5, via openrouter)
Response
I'll start with the permit table's columns and the county population table's columns.
Next I'll check which years exist in each table and whether the county codes match.
The latest permit year is 2025, and 94 of 95 counties appear in permits. I'll pull the 2020–2025 totals per county, joined to population at 2020 and 2025.
The query failed because of a stray quote at the end of the SQL. Rerunning it corrected.
Pickett County has no permit rows, and several counties show zero. I'll check whether those zeros hold across all years or reflect counties whose permit offices don't report.
Zeros in Jackson, Morgan, Bledsoe, Hancock and Wayne are scattered, so those counties mostly show little or no permitting. Pickett has no rows at all. Next I'll map the per-1,000 rate in bands.
The map is drawn. Next I'll get the chart guide before a stacked bar of the top counties by new homes.
Where new homes were permitted, 2020–2025 (latest permit year is 2025)
Davidson, Knox, Rutherford, Montgomery and Hamilton permitted the most new homes in 2020–2025. Davidson alone accounts for about a quarter of the state's 295,540 units, and about half of the state's 89,921 units in buildings of five or more units.
Top 10 counties by new housing units, 2020–2025
| County | New units | In 5+ unit buildings | 5+ share | Units per 1,000 residents (2025) | Population change 2020–2025 |
|---|---|---|---|---|---|
| Davidson | 68,656 | 48,038 | 70% | 92.0 | +4.2% |
| Knox | 22,126 | 8,570 | 39% | 43.3 | +6.4% |
| Rutherford | 20,068 | 2,217 | 11% | 51.9 | +12.5% |
| Montgomery | 19,737 | 7,208 | 37% | 79.0 | +12.9% |
| Hamilton | 13,572 | 3,146 | 23% | 34.7 | +6.2% |
| Wilson | 12,852 | 1,087 | 8% | 73.4 | +17.7% |
| Williamson | 12,565 | 2,692 | 21% | 46.2 | +9.0% |
| Sumner | 12,359 | 2,786 | 23% | 57.3 | +9.2% |
| Shelby | 11,062 | 5,089 | 46% | 12.2 | −2.1% |
| Maury | 10,793 | 1,216 | 11% | 91.4 | +16.0% |
Population figures are Census July 1 estimates: 2020 (current release) and 2025.

The chart shows the top 15 counties' new units, split into 5+ unit buildings and everything else. Apartments make up the largest share in Davidson, Shelby and Montgomery; Wilson, Maury and Rutherford are mostly single-family and smaller buildings.
Permits per 1,000 residents compared with population growth
- The highest rates are Davidson (92.0), Maury (91.4), Montgomery (79.0), Sevier (72.2), Wilson (73.4) and Loudon (69.9). Several of these also grew fast, notably Maury (+16.0%), Wilson (+17.7%) and Montgomery (+12.9%).
- Davidson has the most units, but its rate sits near the top because its population is large. Its population grew only +4.2%, slower than the state's +5.6%.
- Shelby permitted 11,062 units, but at 12.2 per 1,000 its rate is among the lowest of the large counties, and its population fell (−2.1%).
- Sevier and Loudon permitted high rates with modest growth (+2.5% and +15.6%), so rate and growth do not always move together.

Map legend: each county is shaded by its 2020–2025 new housing units per 1,000 residents in 2025. Darker red means more units per resident. Bands: under 10, 10–20, 20–35, 35–50, 50–70, 70 and over. Grey means no permit data (Pickett County has no rows in the permit table). Click a county for its totals and 2025 population.
Notes and caveats
- Permits are authorizations to build, not starts or completions. Some permitted units are never built.
- "Per 1,000 residents" uses each county's 2025 population as the denominator for all six years of permits. Counties that grew over the period would show a somewhat higher rate using average population.
- Population figures are Census estimates, not counts.
- Jackson, Morgan, Bledsoe, Hancock and Wayne show near-zero permits; the table has few or zero permits there in most years, so their low rates are what the data reports.
- The 5+ unit column counts housing units in buildings of five or more units, the apartment category, not buildings.
Chart Queries
Top 15 counties by new housing units, 2020-2025, split by building size
WITH perm AS (
SELECT c.name,
sum(p.units_5plus) AS "Apartments 5+ units",
sum(p.units_total) - sum(p.units_5plus) AS "Other units"
FROM tn_bps_county_permits p
JOIN tn_census_counties c ON c.geoid = p.geoid
WHERE p.year BETWEEN 2020 AND 2025
GROUP BY c.name
ORDER BY sum(p.units_total) DESC
LIMIT 15
)
SELECT name AS "County",
"Other units" AS "Other housing units",
"Apartments 5+ units" AS "Units in 5+ unit buildings"
FROM perm,
LATERAL (
VALUES (1)
) v(x)
ORDER BY "Apartments 5+ units" + "Other units" DESC
charts/turn-1-top-counties-permits-5plus.csv
Picture: charts/turn-1-top-counties-permits-5plus.png
Exploratory Queries
Query 1 — Check which permit years exist from 2019 on and totals per year
SELECT p.year,
count(*) AS counties,
sum(p.units_total) AS units,
sum(p.units_5plus) AS units_5plus
FROM tn_bps_county_permits p
WHERE p.year >= 2019
GROUP BY p.year
ORDER BY p.year
| year | counties | units | units_5plus |
|---|---|---|---|
| 2019 | 94 | 41361 | 11262 |
| 2020 | 94 | 49719 | 15612 |
| 2021 | 94 | 57484 | 19690 |
| 2022 | 94 | 52637 | 17973 |
| 2023 | 94 | 47463 | 15036 |
| 2024 | 94 | 44863 | 11183 |
| 2025 | 94 | 43374 | 10427 |
Query 2 — Check population estimate years available from 2019 on
SELECT YEAR,
series,
count(*) AS counties,
sum(pop_estimate) AS pop
FROM tn_census_county_pop_est
WHERE YEAR >= 2019
GROUP BY YEAR,
series
ORDER BY YEAR
| year | series | counties | pop |
|---|---|---|---|
| 2019 | intercensal | 95 | 6862615 |
| 2020 | postcensal | 95 | 6927736 |
| 2021 | postcensal | 95 | 6966687 |
| 2022 | postcensal | 95 | 7063325 |
| 2023 | postcensal | 95 | 7153029 |
| 2024 | postcensal | 95 | 7251291 |
| 2025 | postcensal | 95 | 7315076 |
Query 3 — Per-county permits 2020-2025, 5+ share, population change and permits per 1,000
WITH perm AS (
SELECT geoid,
sum(units_total) AS units,
sum(units_5plus) AS units_5plus
FROM tn_bps_county_permits
WHERE YEAR BETWEEN 2020 AND 2025
GROUP BY geoid
),
pop AS (
SELECT geoid,
max(pop_estimate) FILTER (
WHERE YEAR = 2025
) AS pop_2025,
max(pop_estimate) FILTER (
WHERE YEAR = 2020
) AS pop_2020
FROM tn_census_county_pop_est
WHERE YEAR IN (2020, 2025)
GROUP BY geoid
)
SELECT c.geoid,
c.name AS county,
p.units AS units,
p.units_5plus AS units_5plus,
round(100.0 * p.units_5plus / nullif(p.units, 0), 1) AS share_5plus,
round(1000.0 * p.units / nullif(pp.pop_2025, 0), 1) AS per_1000,
pp.pop_2020,
pp.pop_2025,
round(100.0 * (pp.pop_2025 - pp.pop_2020) / nullif(pp.pop_2020, 0), 1) AS pop_chg_pct
FROM tn_census_counties c
LEFT JOIN perm p ON p.geoid = c.geoid
LEFT JOIN pop pp ON pp.geoid = c.geoid
ORDER BY p.units DESC NULLS LAST
| geoid | county | units | units_5plus | share_5plus | per_1000 | pop_2020 | pop_2025 | pop_chg_pct |
|---|---|---|---|---|---|---|---|---|
| 47037 | Davidson County | 68656 | 48038 | 70.0 | 92.0 | 716153 | 745904 | 4.2 |
| 47093 | Knox County | 22126 | 8570 | 38.7 | 43.3 | 480472 | 511453 | 6.4 |
| 47149 | Rutherford County | 20068 | 2217 | 11.0 | 51.9 | 343285 | 386352 | 12.5 |
| 47125 | Montgomery County | 19737 | 7208 | 36.5 | 79.0 | 221286 | 249935 | 12.9 |
| 47065 | Hamilton County | 13572 | 3146 | 23.2 | 34.7 | 367886 | 390833 | 6.2 |
| 47189 | Wilson County | 12852 | 1087 | 8.5 | 73.4 | 148654 | 175033 | 17.7 |
| 47187 | Williamson County | 12565 | 2692 | 21.4 | 46.2 | 249614 | 272061 | 9.0 |
| 47165 | Sumner County | 12359 | 2786 | 22.5 | 57.3 | 197416 | 215538 | 9.2 |
| 47157 | Shelby County | 11062 | 5089 | 46.0 | 12.2 | 929720 | 910226 | -2.1 |
| 47119 | Maury County | 10793 | 1216 | 11.3 | 91.4 | 101812 | 118131 | 16.0 |
| 47155 | Sevier County | 7319 | 1436 | 19.6 | 72.2 | 98848 | 101342 | 2.5 |
| 47147 | Robertson County | 5239 | 244 | 4.7 | 65.3 | 72958 | 80175 | 9.9 |
| 47179 | Washington County | 5036 | 1251 | 24.8 | 35.7 | 133211 | 141199 | 6.0 |
| 47009 | Blount County | 5011 | 423 | 8.4 | 34.8 | 135666 | 143820 | 6.0 |
| 47105 | Loudon County | 4459 | 517 | 11.6 | 69.9 | 55144 | 63764 | 15.6 |
| 47011 | Bradley County | 3931 | 62 | 1.6 | 34.0 | 108832 | 115465 | 6.1 |
| 47141 | Putnam County | 3719 | 389 | 10.5 | 42.9 | 80101 | 86612 | 8.1 |
| 47163 | Sullivan County | 3200 | 490 | 15.3 | 19.5 | 158238 | 163759 | 3.5 |
| 47043 | Dickson County | 3054 | 430 | 14.1 | 52.1 | 54452 | 58662 | 7.7 |
| 47003 | Bedford County | 2574 | 6 | 0.2 | 46.6 | 50381 | 55273 | 9.7 |
| 47001 | Anderson County | 2513 | 904 | 36.0 | 30.6 | 77347 | 82066 | 6.1 |
| 47047 | Fayette County | 2374 | 0 | 0.0 | 52.7 | 41868 | 45071 | 7.7 |
| 47051 | Franklin County | 2243 | 20 | 0.9 | 49.2 | 42842 | 45579 | 6.4 |
| 47089 | Jefferson County | 2180 | 32 | 1.5 | 36.3 | 54897 | 60024 | 9.3 |
| 47063 | Hamblen County | 2018 | 188 | 9.3 | 29.3 | 64553 | 68843 | 6.6 |
25 out of 95 are listed here.
Query 4 — Check whether zero-permit counties have zero or missing rows in all years
SELECT name,
count(*) AS years_present,
sum(units_total) AS units_all_years,
min(units_total) AS min_yr,
max(units_total) AS max_yr
FROM tn_bps_county_permits
WHERE name ILIKE ANY (
ARRAY['Jackson%', 'Morgan%', 'Bledsoe%', 'Pickett%', 'Hancock%', 'Wayne%']
)
GROUP BY name
ORDER BY name
| name | years_present | units_all_years | min_yr | max_yr |
|---|---|---|---|---|
| Bledsoe County | 11 | 0 | 0 | 0 |
| Hancock County | 36 | 140 | 0 | 49 |
| Jackson County | 25 | 12 | 0 | 8 |
| Morgan County | 36 | 43 | 0 | 19 |
| Wayne County | 36 | 328 | 0 | 80 |
Map Layer Queries
Counties by new homes per 1,000 residents — colored by "Rate band": Under 10 (#fee5d9), 10 to 20 (#fcae91), 20 to 35 (#fb6a4a), 35 to 50 (#de2d26), 50 to 70 (#a50f15), 70 and over (#67000d), No permit data (#cccccc)
WITH perm AS (
SELECT geoid,
sum(units_total) AS units,
sum(units_5plus) AS units_5plus
FROM tn_bps_county_permits
WHERE YEAR BETWEEN 2020 AND 2025
GROUP BY geoid
),
pop AS (
SELECT geoid,
max(pop_estimate) FILTER (
WHERE YEAR = 2025
) AS pop_2025,
max(pop_estimate) FILTER (
WHERE YEAR = 2020
) AS pop_2020
FROM tn_census_county_pop_est
WHERE YEAR IN (2020, 2025)
GROUP BY geoid
),
x AS (
SELECT c.name,
c.geom,
p.units,
p.units_5plus,
pp.pop_2020,
pp.pop_2025,
1000.0 * p.units / nullif(pp.pop_2025, 0) AS per_1000
FROM tn_census_counties c
LEFT JOIN perm p ON p.geoid = c.geoid
LEFT JOIN pop pp ON pp.geoid = c.geoid
)
SELECT geom,
name AS "County",
units AS "New housing units 2020-2025",
units_5plus AS "Units in 5+ unit buildings",
round(per_1000::numeric, 1) AS "Units per 1,000 residents",
pop_2025 AS "Population 2025",
CASE
WHEN per_1000 IS NULL THEN 'No permit data'
WHEN per_1000 < 10 THEN 'Under 10'
WHEN per_1000 < 20 THEN '10 to 20'
WHEN per_1000 < 35 THEN '20 to 35'
WHEN per_1000 < 50 THEN '35 to 50'
WHEN per_1000 < 70 THEN '50 to 70'
ELSE '70 and over'
END AS "Rate band"
FROM x
Picture: maps/turn-1-permits-per-thousand-counties.png
Used Data Sets
tn_bps_county_permits— last synced 2026-10-14 · 3,288 rowstn_census_counties— last synced 2026-09-27 · 95 rowstn_census_county_pop_est— last synced 2026-10-15 · 5,320 rows