loading…
PARIS-PAINTING
Historic Home Market

Historic Home Market

Opportunity calculator
Every ZIP is calculated on its own stock and its own measured job size, then summed. Change any assumption and everything below re-runs.

1 · Which homes are we talking about

These filters belong to this tab only and do not touch the map. Nothing here is inherited from the Substrate map, so the number below always matches what you see on this page.
Built before 1940
Building value at least any
Living area at least any
Siding
Wood/frame
Stucco
Asbestos
Fiber cement
Brick
Alum/vinyl
Not recorded
Keep unknown size

How that number is built

StepHomesRemoved
Every row is a real filter, not an estimate. The starting number is every parcel the three counties classify as a single-family, owner-occupied home — duplexes, condos, townhomes, apartments, rentals and commercial are already excluded before this table begins.

2 · What is out there

Homes in scopemeasured
Repaint each year — wood, asbestos & fiber cementassumption10%
Repaint each year — stucco, brick & masonryassumption10%
Repaint each year — siding not recordedassumption10%
Of those, hire a pro rather than DIYassumption100%
= exterior jobs available per year
Ramsey and Washington record siding; Hennepin does not, so most Minneapolis homes fall in “not recorded”. Stucco and masonry hold paint far longer than wood in this climate — these are separate dials because one number for the whole metro is not defensible.
Average job sizemeasured per ZIP
Total exterior market on this stock

3 · What we take of it today

Paris exterior revenue on this same stock, 2026measured
Homes we painted, as a share of the stockmeasured
= our share of the exterior market
Both lines count only jobs on homes that pass the same filters, so the numerator and denominator always describe the same houses. Jobs on duplexes, rentals, new builds and out-of-county addresses are excluded from both.

4 · What we could take

Target penetration of the stock, per yearassumption2.4%
Interior + carpentry that rides along, per $1 exteriormeasured 0.16817%
Job size growth per yearassumption3%
Revenue at target, this year’s prices
Multiple of what we do on this stock today

5 · Projected forward

Penetration ramps in a straight line from today’s measured rate to your target by the final year. Job size grows at the rate above. This is revenue from this filtered stock only — it is not the whole company.
YearPenetrationJobsAvg jobExterior+ attachedTotal

Every ZIP, calculated independently

Stock and Paris both respect your map filters. Market = that ZIP’s stock × repaint share × pro share × that ZIP’s own average job size. Share = Paris exterior on this stock ÷ market. Min cycle is the slowest repaint cycle that ZIP can possibly have: it is the share of the stock we alone repaint each year, so the true cycle cannot be below it. At target = revenue if that ZIP hit your target penetration, minus what it already does.
ZIPCityStockUntouchedAvg jobMin cycleMarketParis nowShareUpside at target
Avg job in italics is modelled from building value because that ZIP has fewer than 25 exterior jobs since 2024. Rows with no measured Paris revenue on the filtered stock show — rather than 0%.

Is there anything outside Minneapolis and St Paul?

Short answer: not much volume, a few real pockets. Of paintable pre-1940 single-family owner-occupied homes in Hennepin and Ramsey, sit in Minneapolis and St Paul. Robbinsdale and Mound are nearly untouched; Edina proves a small wealthy pocket can be worked hard.
CityPaintable pre-1940UntouchedMedian valueOur jobs 24–26Penetration/yrOur $/job
Hennepin and Ramsey only — Washington, Dakota, Anoka, Carver, Scott and St Croix are not loaded yet.
Revenue & the path to $30M
Sold jobs only, by sold date, from the 17 August 2026 export. 12,552 sold jobs, $80.9M lifetime.
2025 actual
$15.90M
2,307 jobs · $6,892 avg
2026 projected
$18.96M
2,584 jobs · $7,338 avg
vs 2025
+19.3%
jobs +12.0%
Booked to 17 Aug
$12.82M
1,709 jobs
Yes — 2026 is tracking meaningfully better than 2025. $12.82M is booked through 17 August. Over 2021–25 the first 7.5 months carried 67.6% of full-year sold revenue (weighted toward the last two years). That puts 2026 at $18.96M, with a range of $18.2M to $20.1M depending on which year's seasonality you believe. Job count lands near 2,584, up 277 on 2025.

Where the revenue comes from

Segment202420252026 proj2026 jobs2026 avg job% of 2026
Res Ext lead paint is 57% of revenue and it is where the growth is. Interior splits almost evenly between lead and non-lead and runs at roughly half the job size. Commercial and multi-family is under 2% and shrinking. There is no siding-replacement line below because the CRM does not track one — see the note at the bottom.

Revenue by year, and how much is res ext lead paint

Where the growth came from

YearRevenueGrowthBiggest contributors to the change
Two-thirds of the last three years of growth is one segment. Res Ext lead paint added $3.18M in 2024, $0.94M in 2025 and a projected $2.12M in 2026. Interior lead was the surprise second engine in 2025 at +$0.91M. Commercial has gone backwards two of the last three years.

What one lead-paint customer is actually worth

First job wasHouseholdsFirst job $Follow-on $Lifetime multipleCome back
The measured waterfall is real but smaller than it feels — so far. Households first won on a res-ext lead-paint job have spent 1.11× their first job to date, with 13.6% buying again. Of that follow-on money, 50% is more exterior and 42% is interior, so the interior pull-through is genuine. But this number is censored. Our records start in 2018 and a repaint cycle is longer than that, so almost nobody has come due for a second exterior yet. The 2018 cohort, now 8.6 years old, is at 1.22× and 24% repeat — the highest of any cohort, and still climbing. Follow-on accrues at roughly 2–3% of first-job value per year with no second-cycle wave visible yet. Treat 1.11× as a floor, not the answer.

What $30M by 2029 requires

YearRevenueGrowthJobs at flat AJSJobs if AJS +5%/yr
16.6%/yr gets there from $18.96M. We have run 21.7%/yr since 2022, so $30M by 2029 sits below our own trend line. The lever that matters most is average job size: at +5%/yr we need about 3,300 jobs in 2029 instead of 4,088.

Things this data cannot tell you

Siding replacement is not tracked. There is no siding job type in the CRM. Across all 33,849 rows the words siding / Hardie / LP Smart appear 107 times, almost all of them customer surnames or lost-reason notes, totalling $286k of sold work that is already counted inside Res Ext. If siding replacement is going to be part of the $30M, it needs its own job type before it can be measured.

Carpentry is mostly invisible for the same reason. Only 149 projected 2026 jobs carry a carpentry job type, worth $0.57M. Carpentry sold as part of a painting project is inside the Res Ext line and cannot be separated from this export.

The CRM lead-paint checkbox is wrong 35% of the time. Of 7,695 sold jobs matched to a county parcel, the checkbox says “not lead” on 2,688 homes that were actually built before 1978. It almost never errs the other way (6 cases). Every lead figure on this page uses the county build year, not the checkbox.

Coverage. 69.4% of sold jobs match a Hennepin or Ramsey parcel. Dakota, Washington, Anoka, Carver, Scott and St Croix have no parcel data loaded, so jobs there fall back to the checkbox and are under-counted as lead.
Keep homes with no recorded size
Square footage is recorded by Ramsey County only. Hennepin records none, so switching this off removes every Hennepin home.
Wood/frame
Stucco
Asbestos
Fiber cement
Brick
Alum/vinyl
Not recorded
Ramsey County records siding. Hennepin does not — those homes are “not recorded”.
Everything
Only untouched
Homes
Our jobs
Untouched Reached Sold job
Scroll or pinch to zoom, drag to pan, double-click to zoom in, arrow keys to nudge. Single-family owner-occupied only — condos, duplexes, apartments, townhomes, commercial and rentals are out. Aluminum/vinyl is off by default because those homes do not get repainted — switch it on to see them.

Biggest untouched clusters