QuietCost — The Cost of Doing Nothing
USAII Global AI Hackathon 2026 · Graduate Track · Challenge 2: AI for Systems & Society Direction A: The Cost of Doing Nothing Simulator
Inspiration
Every year, cities debate whether they can afford to invest in permanent supportive housing. That's the wrong question. The real question the one nobody puts a number on is can we afford not to?
When someone experiencing homelessness isn't in stable housing, they don't disappear from the budget. The cost just moves into emergency shelters, jail cells, and ER visits. We wanted to build something that made that shift visible, with real numbers, not opinions. That's where QuietCost came from.
What it does
QuietCost is a fiscal simulation platform that answers one specific question for policymakers:
"How much more does it cost taxpayers if we wait N years before acting, compared to acting now?"
Users pick a scenario — Act Now, Delay Intervention (1–10 years), or Do Nothing — and the platform runs a full simulation to project costs and outcomes across a 10-year horizon. Every result is shown as a probability range, never a single confident number, because homelessness outcomes are inherently uncertain and we refuse to pretend otherwise.
After each run, a Gemini-powered layer translates the raw simulation output into a plain-language policy brief grounded strictly in our model's own numbers, clearly labeled as AI-generated, and never presented as a recommendation.
How we built it
The core of QuietCost is a 6-state Discrete-Time Markov Chain representing where a person can be at any point in time: Stable Housing, Emergency Shelter, Street Homelessness, Jail/Justice System, Acute Healthcare, or Deceased (absorbing state). Each state carries a real annual cost, from $12,000/year for stable housing up to $85,000/year for acute healthcare.
We run 1,000 Monte Carlo iterations per scenario over a 10-year, monthly time-stepped horizon, then compute:
$$ \text{NP-CoD} = \text{Cost}{\text{scenario}} - \text{Cost}{\text{act_now}} $$
— the Net Present Cost of Delay: the additional taxpayer burden attributable specifically to waiting, always computed from two full simulation runs rather than hardcoded.
Transition probabilities aren't guessed they're calibrated from 11 real datasets, including HUD's System Performance Measures, HUD PIT Counts, Vera Institute incarceration data, CDC mortality tables, and HUD Fair Market Rents. Because official point-in-time counts are known to undercount unsheltered populations, we also surface three "invisible population" multipliers (0.8×, 1.0×, 1.5×) so users can see how undercounting changes the picture.
Stack: Next.js 15 + React 19 + TypeScript on the frontend, FastAPI + Pandas/NumPy/SciPy on the backend, deployed on Vercel and Hugging Face Spaces respectively, with the Gemini API powering the post-simulation policy brief.
Challenges we ran into
- Avoiding false precision. It would have been easy to output a single "$12.4 billion" number. Forcing every output through Monte Carlo confidence intervals and resisting the urge to simplify took real discipline in the UI design.
- Calibrating against real data instead of synthetic guesses. Merging 11 datasets across different formats (PDF, Excel, CSV) with different geographic granularities into one coherent transition-probability table was by far the most time-consuming part of the build.
- Keeping the AI honest. We wanted Gemini's summaries to be genuinely useful without ever drifting into the AI making a policy call. We solved this by strictly grounding every Gemini prompt in the model's own computed output — it summarizes, it never invents or recommends action on its own authority.
- Designing for "do not use" conditions. Responsible AI isn't just a guardrail you bolt on we built auto-disable logic directly into the simulation: it refuses to run when data is older than 18 months, missingness exceeds 25%, or the population is below 100.
Accomplishments that we're proud of
- Built a full Markov chain + Monte Carlo simulation engine from scratch, calibrated against real HUD, CDC, and Vera Institute data rather than synthetic placeholders.
- Made every single output range-based instead of point-based there is no path through the UI that shows a single confident number.
- Hard-coded responsible AI constraints directly into the simulation logic (auto-disable on stale or insufficient data) rather than treating them as documentation.
- Shipped a full-stack, production-deployed application Next.js frontend on Vercel, FastAPI backend on Hugging Face Spaces within the build window, not just a notebook or static mockup.
- Built an AI summary layer that is genuinely useful to a non-technical policymaker while staying strictly grounded in the model's own output, with zero independent claims from the AI.
- Bounded by available data. Our simulation is only as accurate as the datasets feeding it HUD, CDC, and Vera Institute data are detailed but not exhaustive, and don't capture every regional or individual variation. We can't claim 100% accuracy, and we don't try to. This is exactly why QuietCost never outputs a single number every result is a range, explicitly acknowledging the uncertainty introduced by data limitations.
What we learned
- That responsible AI in a policy context isn't about adding a disclaimer it's an architectural decision. Every choice, from "always show a range" to "auto-disable on stale data," had to be built into the system itself, not bolted on afterward. We also learned a lot about how undercounted populations and disconnected datasets quietly distort policy decisions long before any AI gets involved.
- We also learned that a model is only as honest as the data behind it; being transparent about that boundary mattered as much as the simulation itself.
What's next for QuietCost
Extending the model to other domains named in the challenge brief workforce development and early childhood education and building per-CoC (Continuum of Care) calibration so individual cities and regions can run this simulation against their own local data rather than national averages.
Log in or sign up for Devpost to join the conversation.