Inspiration

Toronto’s shelter system is a high stakes operational network that needs day to day capacity decisions under uncertainty. We were motivated by a simple planning question: when the system is close to full most of the time, how do we identify where pressure is persistent, where capacity is offline, and where targeted changes can improve resilience with limited resources.

What it does

We built an interactive dashboard that turns daily shelter occupancy records from 2024 to 2025 into:

  1. system level pressure tracking over time
  2. sector and location comparisons
  3. rule based intervention labels such as add capacity, fix operations, seasonal or flex, and repurpose
  4. a scenario tool that simulates incremental bed additions and allocates them to high pressure service groups to estimate impact on near full days

How we built it

We cleaned and standardized the daily records, then recomputed key capacity fields to keep definitions consistent:
Available capacity = actual capacity minus unavailable capacity
Occupancy rate = occupied capacity divided by available capacity, capped at 100 percent We summarized pressure at a service group level using:
Mean occupancy, Days at or above 99 percent full, p95 occupancy, and Unavailable share We implemented the dashboard in R Shiny with a shared filter panel, multiple analytic tabs, downloadable tables, and Plotly charts for interactive exploration.

Challenges we ran into

  1. Data quality issues such as occupancy rates above 1 and cases where unavailable capacity exceeded actual capacity
  2. Choosing metrics that reflect operational pressure without being dominated by extreme days
  3. Making the scenario allocation stable so the added beds always sum exactly to the user input
  4. Communicating limitations clearly, especially the lack of waitlist or turn away data

Accomplishments that we're proud of

  1. A clean, end to end pipeline from raw records to interpretable pressure metrics
  2. A decision map that links metrics to concrete intervention types
  3. A scenario simulation that shows how targeted additions can reduce near full days at the system level
  4. A dashboard workflow that supports quick drill down from citywide signals to specific locations

What we learned

We learned that operational resilience can be measured with simple, transparent metrics that stakeholders can understand. We also learned that offline capacity is a distinct problem from demand pressure and should be surfaced explicitly. Finally, we learned that a small amount of targeted expansion can have outsized system level impact when pressure is concentrated in a subset of services.

What's next for Team 45

  1. Add uncertainty reporting for scenario outputs, such as sensitivity to allocation rules
  2. Incorporate travel and accessibility context to evaluate geographic equity
  3. Extend the time window and add season specific summaries for planning
  4. If data becomes available, integrate turn away or waitlist signals to better measure unmet need

Built With

  • r
  • shiny
Share this project:

Updates