-
-
Shady Business
-
Comparison of 3 routes between Bruin Bear and Bunche Hall
-
Comparison of 3 routes between Bruin Bear and Bunche Hall
-
Showcase of collapsing two routes (recommended and shadiest) when requirements met
-
Comparison of 3 routes between Drake Stadium and Royce Hall
-
Loading page of mobile app
-
UI for entering destination
Inspiration
When another Los Angeles heatwave hits, even a walk between classes can feel exhausting. At UCLA, getting to a lecture, grabbing lunch, or heading back to your dorm often means crossing sunny plazas and wishing you had taken a shadier path.
We built Shady Business for everyone who has thought, “There has to be a less sunny way to get there.” Our idea is simple: give students more control over their everyday walks. Running late? Choose Fastest. Prefer a little more shade without a long detour? Try Recommended. Happy to take the extra time to avoid the sun? Pick Maximum Shade.
Because the best route across campus depends on more than where you’re going—it also depends on how you want to get there.
What it does
Shady Business helps users search for UCLA destinations, compare walking routes with different amount of shade, and follow their selected route with live GPS guidance.
The app offers three routing policies:
- Fastest: minimizes estimated walking time.
- Recommended: balances walking time and modeled direct-sun exposure, with a stronger preference for shade as the temperature rises using dynamic weights.
- Maximum Shade: finds the lowest modeled sun exposure among explored routes that satisfy a maximum detour limit.
Users can start from their current location or preview a walk between campus places. Route cards show estimated time, distance, and available sun-exposure information.
During navigation, the app follows the user's location, displays progress and upcoming directions, reports modeled shade status, and handles weak GPS or off-route conditions. After arrival, users can plan another walk.
How we built it
Routing that balances speed and shade
We built a Python FastAPI backend around an OpenStreetMap pedestrian network, using NetworkX to calculate connected walking paths. Route geometry follows actual graph edges rather than straight lines between destinations.
At or below 65°F, Recommended selects Fastest. As the temperature rises, we gradually increase the penalty for direct-sun exposure, balancing a shorter walk against a shadier one. Recommended allows up to 15% additional walking time below 77°F, 25% from 77°F to below 86°F, and 35% at 86°F or above.
Maximum Shade chooses the route with the least estimated time in direct sunlight among the walking paths our algorithm explores. To keep detours reasonable, it allows no more than 60% additional walking time and no more than 12 extra minutes, whichever limit is stricter.
If Maximum Shade is within one minute of Recommended and offers meaningfully less sun exposure, the interface combines their labels and makes the shadier route the default choice, provided enough shade data is available to compare them.
Our solver explores candidates using several time-versus-sunlight weights, removes duplicate paths, and selects eligible routes. Maximum Shade therefore represents the least sunlight found in this bounded search, rather than a claim of global optimality.
Modeling shadows
We combine building footprints and heights with tree locations and crown dimensions to estimate where shadows fall at the selected departure time. Using the sun’s position, we project those shadows onto campus walkways and divide each route into shaded, sunny, and unknown sections. These estimates help compare sunlight exposure across routes, while missing data stays explicitly marked as unknown rather than being mistaken for shade.
Expanding the dataset with aerial imagery and AI
Structured tree inventories left gaps in our initial shade dataset. We built an AI-assisted imagery pipeline to identify missing vegetation and expand the information available to the shadow engine.
The pipeline identifies inventory gaps, processes aerial imagery with Gemini, extracts tree-crown outlines and estimated dimensions, converts image positions into geographic coordinates, and compares detections against existing tree records. Confidence checks and duplicate filtering determine which estimates can enter a supplemental dataset. The AI enriches the geographic inputs; deterministic geometry and graph algorithms still calculate shadows and choose routes.
After this campus imagery expansion, the unknown-shade share fell from above 40% to 0% on the evaluated routes. This measures modeled coverage, rather than field-validated prediction accuracy.
Native frontend
We implemented the mobile app with Expo, React Native, and TypeScript, using @rnmapbox/maps for native map rendering and expo-location for foreground GPS.
The frontend connects campus search, route comparison, preview, directions, navigation, and arrival into one continuous flow. It renders backend-generated route geometry and exposure segments, animates location movement, and follows the user with the navigation camera.
Temperature can come from the National Weather Service forecast or a manual override. Typed API contracts keep coordinates, durations, exposure values, and uncertainty consistent between the mobile app and backend.
Challenges we ran into
Our biggest challenge was distinguishing missing information from actual sunlight. A location without a recorded tree is not necessarily exposed, so we had to represent uncertainty throughout the data pipeline, route scoring, API, and interface.
Aerial imagery introduced additional uncertainty: overlapping crowns, ambiguous shadows, and estimated heights required filtering and comparison against existing records.
We also needed shade-aware routing to remain practical. Minimizing sunlight alone could produce excessive detours, so we combined exposure penalties with explicit walking-time limits.
On mobile, GPS noise and camera movement required careful handling so that progress and shade indicators remained understandable.
Accomplishments that we're proud of
We connected pedestrian routing, geometric shadow modeling, AI-assisted geographic data enrichment, and native GPS guidance in one application.
Our recommendation policy makes the speed-versus-shade tradeoff explicit and testable. The interface also handles cases where multiple policies select the same path, rather than presenting artificial alternatives.
We are especially proud of preserving uncertainty throughout the system while building a pipeline that can reduce those data gaps.
What we learned
We learned that building useful shade-aware navigation starts with understanding the gaps in our data. Existing tree and building datasets can contain detailed records while still leaving entire areas uncovered. Filling those gaps requires identifying missing coverage, gathering additional aerial imagery, and combining new estimates with existing geographic data. Detecting a tree in a photo is only the beginning: it must be positioned, checked, deduplicated, and converted into usable geometry before it can improve shadow calculations and route recommendations.
We also learned that coverage and accuracy are different. Reducing unknown segments makes the model more complete, but field observations are still needed to check whether predicted shade matches real conditions. Connecting this data pipeline to a working mobile app taught us to carry uncertainty through every layer—from shadow modeling and route selection to the information users see while walking. A useful recommendation needs both a thoughtful algorithm and enough reliable data to support it.
What's next for Shady Business
Our vision is to make shade a standard part of everyday navigation across Los Angeles and eventually other heat-exposed cities. We plan to expand beyond UCLA into more neighborhoods and explore a Google Maps companion extension that brings shade-aware route choices into the journeys people already take. Whether someone is commuting, exploring a new neighborhood, or walking to lunch, we want to help them choose a route that balances their time with their comfort.
We also envision a community-powered shade map that improves as people contribute. Users could upload photos of their surroundings, while we gather additional aerial imagery to expand our dataset and refine shade estimates. Alongside this, we plan to introduce spoken directions and voice recognition so users can find destinations, compare routes, and navigate hands-free. Together, these features would turn Shady Business from a campus walking app into a growing platform for more comfortable urban travel.
Built With
- astral
- expo.io
- fastapi
- mapbox
- networkx
- openstreetmap
- python
- react-native
Log in or sign up for Devpost to join the conversation.