Inspiration

When I lived in NYC, I went to parks often. But because of the buildings around it, the park was shaded most of the time. Over time, I figured out what times there was optimal sunlight, and worked my schedule around that. We built the Shadow Ledger model to help others figure out when and where skyscrapers shade a park.

What it does

Shadow Ledger is a cost-benefit model for skyscrapers. Cities often let developers build taller in exchange for new housing, which is the benefit. But tall towers also block sunlight on streets and parks, which hurts people and the climate. That's the cost. This model measures both. For every sunny hour of 2025, we work out every building's shadow and how much public ground it covers: streets, sidewalks, plazas and parks. Then we divide that shade by the number of homes in the building. That gives shade per home, and each building gets an A–F grade compared with others in its city. You can:

  • Move through any day of the year and watch the shadows change in 3D
  • Click any building to see its grade
  • See which parks lose the most sun, and which towers are responsible
  • Search an address to check your own block

How we built it

Data pipeline (Python): downloads building footprints and heights, home counts, parks, and a year of hourly weather for each city. New York uses official city data (NYC Open Data and PLUTO tax lots). The other seven cities use OpenStreetMap. Weather comes from Open-Meteo's historical archive. Sun and shadow math (JavaScript): we wrote our own code to calculate where the sun is at any moment and the shadow each building casts. Background processing: the full-year calculation runs in Web Workers, so the 3D map stays smooth while it works. 3D map: built with three.js, with buildings at their real heights and live shadows.

Challenges we ran into

Missing data outside New York: in OpenStreetMap, many buildings have no height, and most don't list how many apartments they have. So we had to estimate heights from floor counts and estimate homes from building type and floor area. Those grades are labeled approximate.

Accomplishments that we're proud of

Writing our own shadow engine instead of relying on GIS software. Making it something anyone can use, just by searching an address

What we learned

We figured out how to calculate the sun's position and cast shadows from scratch.

What's next for Shadow Ledger

Finding better data outside New York. Add more climate factors in addition to sunlight loss in parks. For ex., how much rooftop solar power nearby buildings lose.

Built With

  • 3d
  • ai
  • databases
  • math
  • modeling
Share this project:

Updates

Submission history