Inspiration

Every summer, UAE law stops outdoor work from 12:30 to 15:00. Most building sites treat this midday break as their whole heat plan. But the heat does not stop at 15:00, and Gulf mornings can be humid enough to be dangerous. We wanted to know if the break is enough on its own.

We also noticed that tall towers cast long shadows across the sites next to them. A site manager has no easy way to see where that shade falls at each hour.

What it does

Shade makes a work plan for one building site on one summer day. It works out where building shadows fall every 15 minutes and how hot each work spot gets, in sun or in shade. Then it places each crew at a spot and a time where the work is safe. It keeps the midday break too.

The web page shows the site map with shadows moving across it. A map layer marks where each kind of work is safe at each time of day. Every worker gets a timeline, and the whole plan downloads as a spreadsheet. You can switch between a site in Dubai and a site in Abu Dhabi, and between real summer days.

Shade compares three plans on each day:

  • Ban only follows the midday break and nothing else.
  • Heat plan keeps every worker under a safe heat limit, but treats every spot as if it is in full sun.
  • Shade plan keeps every worker under the limit and uses the real shade at each spot.

How we built it

  • Building outlines and heights come from OpenStreetMap. Shapely and pyproj cast each building's shadow from the sun's position every 15 minutes.
  • Weather comes from the Open-Meteo archive. The thermofeel library turns air temperature, humidity, wind and sun into WBGT, a standard measure of heat stress, for each spot in sun or shade.
  • Two published limits decide how long a crew may work. A rule from NIOSH, the US workplace safety agency, sets the safe minutes per hour. A heat strain model from ISO 7933 sets how long one stretch of work may last before a rest.
  • The Google OR-Tools CP-SAT solver assigns workers and tasks to spots and 15-minute slots. It obeys both limits and the midday break, and keeps overtime as low as it can.
  • The web page is static, built with MapLibre GL, GSAP and plain JavaScript, and hosted on GitHub Pages.
  • The backend is Python 3.12 with uv, tested with pytest.

Challenges we ran into

  • Our first version ran on a made-up typical July day. That could not tell us anything about real risk. We switched to real archive weather and scanned about 170 real days to find the ones where heat limits change the plan.
  • Humid days were the hardest. On 24 July 2025, shade barely helped, because humid air limits work in the shade as well as in the sun. The solver could not prove its answer was the best possible that day, even with four minutes per plan. We mark that result as rough on the page.
  • Many buildings in OpenStreetMap have no height. Shade falls back to the number of floors, and then to a default. Building height sets the length of each shadow, so this matters.

Accomplishments that we're proud of

  • We showed that the midday break alone is not safe. On every day we tested, workers still went over a safe heat limit. Across the crew, that came to between 29 and 39 worker-hours a day at the Dubai site, and between 12 and 23 at the Abu Dhabi site. One worker-hour is one worker for one hour.
  • Both heat plans removed all of those unsafe hours. On five of the seven days, they needed less than one extra hour of work to do it.
  • Shade helped most on the hottest day, 28 June 2026 in Dubai. The shade plan needed about one hour of overtime. The heat plan needed about three and a half. The shade plan also finished 15 of the 16 tasks inside the shift, while the heat plan finished 12.
  • Every number in the planner cites its source.
  • We built the whole project during OFFGRID, and the commit history shows every step.

What we learned

  • The midday break covers the strongest sun, but not every hour of heat stress. Humid mornings and late afternoons can still push workers over the limit.
  • Shade gives a clear gain on the hottest days and a small one on most others. On very humid days it barely helps at all.
  • Real days told us more than an average day could. They showed us both the day where shade helps most and the day where it fails.
  • Saying plainly where the tool does not help makes the results easier to trust.

What's next for Shade

  • Add more cities across the Gulf.
  • Send every site a fresh plan each morning from that day's forecast. The build can already fetch a forecast for one site up to 16 days ahead.

Built With

Share this project:

Updates

Submission history