Same city. 6° apart. The only difference is trees.
We kept seeing the same story: a heat wave, a map of the city where some neighbourhoods run far hotter than others, and a tree-planting plan meant to fix it. The reporting is consistent about the problem. It is much quieter about the decision underneath — which streets, which species, and what happens in year five. So we built that decision and ran it.
The same story, in city after city.
This started as a pattern in the news and on social feeds rather than a client brief. Every heat wave brings the same two maps side by side — surface temperature, and tree canopy — and they are the same map.
In Toronto, CBC reported this July on a canopy that covers about 30% of the city against a 40% target for 2050, with roughly 120,000 trees going in each year. The city now publishes a Tree Equity Score by neighbourhood: the Beach and Baby Point score 100, while Downsview sits at 57 and New Toronto at 56 — both flagged highest priority. The forecast is the part that makes it urgent: southern Ontario is projected to see 55 to 60 days a year above 30°C by 2080, against an average of 14 today.
In Asheville, BPR reported the same month on an Urban Forest Master Plan explicitly aimed at heat inequity, still taking shape: the canopy assessment lands in summer 2026, a draft by December, the final plan in January 2027. The engagement numbers are the detail that stopped us. Of 2,375 people reached, 90% were white, 77% were homeowners, and 60% had household incomes over $50,000. Seventy per cent of them named lowering heat as a major concern.
Read those two together and the shape of the problem shows up. The city asks who wants trees. The people who answer are disproportionately the people who already have them. The survey is a measure of who has time to answer a survey, not of who is hot. Nobody in either story is doing anything wrong — and that is exactly what makes it a decision problem rather than a scandal.
A city is never one temperature.
Two streets minutes apart can sit 6°C apart on the same afternoon: 32°C under canopy, 38°C over asphalt. Leafy blocks stay cool, paved blocks store heat and release it through the night, and the night is what kills — heat takes more lives than any other kind of weather. The cool half of a city is usually the half that was invested in decades ago, which is why the canopy map and the income map tend to rhyme.
One budget. 60,000 spots.
A planting plan has to choose streets, species and sequencing at the same time, under one capital budget. The combinations run past anything a room full of people can hold — and the species choice alone is a genuine trade-off, not a preference:
The highest cooling per tree by a wide margin, and the highest cost. Needs deep soil and open sky, which the densest, hottest blocks are least likely to have.
Roughly two-thirds the cooling at half the cost. Fits most residential streets without rebuilding the sidewalk to get it in the ground.
About a third of the cooling for a quarter of the cost. Fits under power lines — which is exactly where the budget-driven plan quietly ends up putting everything.
The math will not choose. Someone has to.
Solve for the cheapest cooling per dollar and the plan stays in the easy half of the city: wide verges, deep soil, low planting cost, high survival. It is genuinely the optimal answer to the question asked — and it widens the gap the plan was funded to close.
Add an equity constraint and the plan pushes into the heat, where planting costs more and each tree buys less cooling. That answer is also provably optimal. Both are correct; they are answers to different questions.What optimization does here is not pick the winner. It puts the real price of the choice on the table — degrees, dollars and blocks — so the trade-off is made deliberately by someone accountable instead of arriving by default through a survey's response bias.
Planting is the cheap part.
Young trees die without care. Watering through the first summers decides what actually survives, and the hot half of a city typically has the least of it — fewer maintenance dollars, fewer volunteers, less irrigation, more heat stress on the sapling.
So we age each plan: ten summers, a thousand runs, drought and maintenance budgets varied against published street-tree survival curves. Unwatered saplings in the hot half are gone by year five. A ribbon-cutting count of trees planted is not a measure of canopy — it is a measure of intent.
Fewer trees. More shade that survives.
Same city, same budget. The only difference is that the second plan was tested against a decade before it was committed to.
The plan that holds buys fewer trees, funds the watering out of the same envelope, spreads the species so one bad decade cannot take the whole cohort, and aims the shade at where people actually stand — stops, crossings, schoolyards, the walk to the bus — rather than at whichever blocks were easiest to plant.
Optimized by math. Pressure-tested by simulation.
Surface temperature, canopy cover, block-level population and 60,000 plantable spots become one question: which spots, which species, and who pays for the watering?
A mixed-integer program maximizes cooling per dollar under the real budget. Then it runs again with an equity constraint — close the gap between the hottest and coolest blocks. Both are provably optimal. They are not the same plan.
Agentic simulation ages each plan through a decade of drought, heat and maintenance budgets, using published sapling-survival curves. Unwatered saplings in the hot half are gone by year five, and the plan that looked best on paper is not the plan still standing.
Feed the mortality back in and re-solve. The answer buys fewer trees, funds the watering, and spreads the species so one bad decade cannot take the whole cohort at once.
Where the AI is, and where it isn't. No language model chooses a street. AI builds the model — reading the operation and translating it into an objective and constraints a planner can read in plain language — and then attacks the result with agentic simulation. The decision in the middle is an exact solver: deterministic, auditable, and the same answer every time from the same inputs.
Built to be checked.
The context is public and cited. The city is a composite, and every solver figure is illustrative output — we would rather a forestry team corrected the model than quoted it.
Hoffman et al. 2020, mapping surface heat against historical redlining across 108 US cities; NOAA; Trust for Public Land. The 6°C street-to-street gap is within the range these studies report for paved versus shaded blocks in the same city.
Roman & Scatena and USDA Forest Service work on urban street-tree mortality — the basis for the survival curves the simulation ages each plan against.
The skew in who answers a canopy survey echoes the published demographics of a 2026 US city forestry plan (see Asheville, above): 90% white, 77% homeowners, 60% with household income over $50,000.
Mixed-integer program over 60,000 candidate spots and three species classes under a fixed capital budget, solved twice under different objectives. Simulation: 1,000 runs × 10 years of drought, heat and maintenance funding.
A composite city, not a forecast for any real one, and not work we have done for anyone. Context figures are published and cited; all solver and simulation output is illustrative.
Your city already has this decision on a spreadsheet.
Canopy targets, a capital budget, a maintenance line that gets cut first, and a survey that hears from the wrong half. The loop does not tell you which future to want. It tells you what each one costs, and which one is still standing in ten years.
An illustrative case built on public research. A composite city, not a forecast for any real one, and not work we have done for anyone. Reporting on Toronto and Asheville is cited and linked above; all solver and simulation output is our own model, not a municipal plan.
Have a decision like this?
We take on a small number of design partners. Bring the plan you are afraid to run.