Devpost submission: SnowBuddy YYC

Tagline: No neighbour left snowed in. Calgary volunteers matched with neighbours who can't safely shovel, before the 24-hour bylaw clock runs out.

Track / theme: WarriorHacks 2.0, solve an issue in your community

Links:

Inspiration

After every snowfall, Calgary gives property owners 24 hours to clear the sidewalk. For seniors, people using a walker or wheelchair, or anyone recovering from surgery, that shovel is a real fall risk. Plenty of neighbours and students would help. The City even thanks them through its Snow Angels program, but its own FAQ says it does not maintain a list of Snow Angels and can't match you with one. So the people who need help and the people who'd give it never find each other. We built the missing match.

What it does

  • Live bylaw clock: reads real Calgary weather from Open-Meteo, detects when the last snowfall ended, and counts down the 24-hour window. A clearly labelled storm simulation shows the clock running on a dry day.
  • Ask for help in about a minute: a 3-step form asks for a first name, a community, why shovelling is hard, what needs clearing (sidewalk, walkway, steps, corner lot) and when. It ends with a preview of exactly what neighbours will see. No account and no public address. A family member can post on someone's behalf.
  • Live board and map of Calgary: Leaflet + OpenStreetMap, list and map views in sync. Filter by status, search 90 communities, and sort by urgency, distance or newest. Seniors and people with mobility issues are flagged as priority.
  • Privacy by design: pins are deliberately approximate, offset a few hundred metres inside a 450 m community circle. The exact address and private note unlock only for the one volunteer who claims the request.
  • Volunteer flow: take the Snow Buddy pledge (outdoor work only, salt icy spots, release if you can't make it). The board then re-sorts by distance from your home, with a 3 km radius on the map. Claim with undo, then mark the walk cleared with a checklist and a thank-you note.
  • Impact dashboard: sidewalks cleared, metres made safe, neighbours helped, volunteer hours, the share cleared inside 24 hours, median time to claim, the last 7 days, and the top communities and volunteers. It all updates live.
  • Built for older users: one-tap larger text, big touch targets, keyboard and screen-reader support, reduced-motion and forced-colours support, and a mobile list/map toggle.

How we built it

  • Plain HTML, CSS and JavaScript with no framework and no build step, served by GitHub Pages straight from main. It even runs from a double-clicked index.html.
  • Map: Leaflet 1.9.4 (vendored) with OpenStreetMap tiles, custom pins, privacy circles and a volunteer home radius.
  • Weather: the Open-Meteo forecast API (free, no key). Our snow-event detection walks hourly snowfall backwards, joins short gaps, and derives the event end and the bylaw deadline in Calgary time.
  • Data: state lives in localStorage and syncs across tabs. The demo data is seeded deterministically: 90 real community centroids, a storm spike earlier in the week, repeat neighbours, and a realistic share of late clears.
  • Video and screenshots: a scripted Playwright pipeline drives the real app. The voiceover is Kokoro neural TTS, the background music is procedurally generated, and the mix is done in ffmpeg. It's all in tools/ and reproducible.
  • We built it with help from an AI coding assistant.

Challenges we ran into

  • Turning weather into a bylaw deadline. "Within 24 hours of snowfall" means 24 hours after the snow stops. So we had to find the end of a snow event in noisy hourly data, with flurries, gaps and trace amounts.
  • Privacy versus usefulness. Volunteers need to know roughly where to go, but no one's address should ever be public. The solution was a deterministic fuzz plus a privacy circle, with details released only on claim.
  • Designing for older users without making the app feel clinical: large-text mode, plain language and generous tap targets, while still keeping a strong visual identity.

Accomplishments that we're proud of

  • A complete, polished loop from ask to match to cleared, running on live weather with zero setup and zero API keys.
  • Privacy and safety are built into the flow rather than bolted on: the pledge, approximate pins and the claim-to-unlock step.
  • Grounded in the real gap the City itself describes.

What we learned

  • Civic problems often need a match, not more information.
  • Accessibility decisions such as text size, tap targets and plain wording shape the whole design, not just the polish.
  • You can get a lot from free open data (OpenStreetMap, Open-Meteo) with no backend at all.

What's next for SnowBuddy YYC

  • Text and email alerts to nearby volunteers the moment the snow stops.
  • A real backend with phone-verified accounts and volunteer screening through community associations.
  • Secure, expiring address hand-off by SMS after a claim.
  • Pilots in Bridgeland-Riverside and Renfrew, recruiting through SAIT, MRU and UCalgary volunteer programs, and partnering with 311 and Snow Angels.
  • Recurring whole-winter pairings and more languages.

Built with

html5, css3, javascript, leaflet, openstreetmap, open-meteo, localstorage, github-pages, playwright, ffmpeg, kokoro-tts

Share this project:

Updates

Submission history