RoofRx

Cool the right roofs first.

RoofRx ranks individual rooftops for a cool-roof coating, so a limited budget reaches the homes that gain the most.

The demo runs a heat model for 1,200 synthetic homes in your browser. Change the budget and watch the selection move.

Synthetic demo city and an idealised hot week. Indoor temperatures are modelled from assumed roof properties, not measured.

Treatment map

Relief as the budget grows

Click the chart to set the budget

View as table

Who gets picked

Work order

How RoofRx decides

Three steps, each simple enough to check by hand.

Read each roof

Every building needs a footprint area, a roof material and a ward. Material can come from a survey or from an image classifier trained on aerial crops. The classifier scripts are in the repository and have not been trained yet.

Model the heat

Sun on the roof raises its surface temperature. Heat flows into the home through the roof and out through walls and ventilation. Hourly steps give the hours per day indoor air stays above your threshold, before and after a coating.

Tsa = Tout + α·I / hout
C dTin/dt = U(Tsa − Tin) + H(Tout − Tin)

Spend the budget

Each roof gets a benefit (heat-hours avoided × area) and a cost (area × coating price). Roofs are taken in order of benefit per rupee until the money runs out. The ward-level baseline treats random roofs in the hottest wards first.

benefit = hours avoided × area
cost = area × price + fixed

What is built

Each part and where it stands.

Building dataFootprint area, roof material, ward, storeys, optional occupants. CSV upload or the synthetic city.Built and tested
Heat modelSol-air temperature and a lumped indoor balance, hour by hour, before and after a coating.Built, matches the Python model
OptimizerBenefit per cost, greedy selection inside the budget, compared with ward-level and random targeting.Built, matches the Python model
Map and work orderRanked roofs, relief chart and CSV export.This page
Roof classifierReads roof material from aerial image crops with a fine-tuned CNN.Scripts written, not trained
WeatherHourly temperature and sunshine from Open-Meteo, or the synthetic hot week.Real data on the hosted copy

Does the model behave?

Cool-roof programmes commonly report indoor drops of a few degrees. This table is what the model produces from its assumed inputs, so it is a plausibility check and not a validation. Peak-hour drops are large, and real sensors may show less.

What this is and is not

  • Modelled, not measuredIndoor temperatures come from a simple model. Validate it with indoor sensors before acting on it.
  • Assumed roof propertiesAbsorptance and heat-transfer values are placeholders until they are replaced with cited sources.
  • Synthetic cityThe 1,200 buildings and the hot-week weather are generated. The size of the gain depends on how the wards were generated, so it is not a finding about any real city.
  • Area stands in for peopleLarger roofs count as more occupants. Real population data would change the ranking.
  • Real weather, synthetic homesThe weather picker loads real hourly data. The buildings stay synthetic until you upload your own CSV.
  • A week is a snapshotSeven days of weather is not a hot-season average. Results can change a lot with the week you load.
  • Greedy selectionTaking roofs by benefit per rupee is a standard heuristic and is not guaranteed optimal.
  • Our own baselineThe ward-level comparison is a simple version we built. It is not a reimplementation of any city tool.