Inspiration

Every year, over 40% of Americans who qualify for benefits like SNAP, Medicaid, and LIHEAP never apply. Not because help isn't available, but because the systems are confusing, jargon-heavy, and often English-only. Meet Maria – a single mother of two in Texas. She lost her job, she is behind on rent, and her income falls well under the poverty threshold. But when she searches online, she finds government websites filled with impenetrable tables and bureaucratic language. She gives up. Her family goes without. Maria is not an edge case. She represents the majority of eligible Americans. We built Benefits Navigator to change that – to transform confusing bureaucracy into clear, compassionate, and actionable guidance.

What it does

Benefits Navigator is a fully bilingual (English/Spanish), WCAG 2.1 AA-accessible web app that helps users discover which federal benefit programs they may qualify for – in minutes, not hours. Users fill in just 4 fields (household size, monthly income, state, and primary concern). They instantly receive: A visual reasoning trace showing the exact 2026 Federal Poverty Level (FPL) math with threshold bars – so they understand why, not just what. A multi-program comparison across SNAP, Medicaid, Housing, LIHEAP, and Childcare – with likelihood ratings and "next steps". A personalized document checklist exportable as a PDF to hand to a caseworker. Real, verified community resources (food banks, legal aid, 211) for their state. A Stress Check with 988/211 crisis resources. A Benefits Bingo gamified discovery tool with confetti. Every result explicitly states: AI suggests possible programs → Caseworker decides eligibility. The final call is never made by AI.

How we built it

We built Benefits Navigator as a single-file, fully client-side web application using pure HTML5, CSS3, and Vanilla JavaScript (ES6). No frameworks, no server, no database – just one index.html file that runs entirely in the browser and stores data locally via localStorage. The architecture is deterministic-first, AI-optional: Path A (Default – no API key): The app uses getMockEligibility(), which computes real 2026 FPL math using the formula FPL = $15,060 + (householdSize - 1) × $5,380. It then checks income against 130% FPL for SNAP, 138% for Medicaid, 150% for LIHEAP, and 50% AMI for Housing. Path B (Optional Gemini API): Users can optionally add a Gemini 2.0 Flash API key via OpenRouter for live AI-generated natural language guidance. We styled the app with Tailwind CSS for dark/light theme support, used jsPDF for PDF generation, and deployed it live on Netlify.

Challenges we ran into

The hardest challenge was epistemic – not technical. How do you build an AI system that is genuinely helpful without being overconfident? AI language models naturally sound more certain than they should. To solve this, we built sanitizeAI() – a code-level post-processor that runs regex replacements on every AI response (and mock response) before it reaches the UI. It converts any definitive language like "you qualify" into probabilistic language like "you MAY qualify". This is not a prompt instruction that the model can ignore. It is an architectural guardrail that cannot be bypassed. Another challenge was ensuring the FPL math was always correct. We built runSelfCheck() – a runtime function that re-derives all four formulas and validates them against 2026 guidelines, displaying a live pass/fail in the footer.

Accomplishments that we're proud of

Building sanitizeAI() – a working, code-level Responsible AI guardrail that enforces probabilistic language on every single response. Judges can open DevTools and verify it live. Creating runSelfCheck() – a runtime self-validator that proves our FPL math is correct with a visible pass/fail, building trust through transparency. Delivering a fully functional human-in-the-loop system where flagged results persist in localStorage, a live flag count badge appears in the footer, and the admin panel (#flags) is accessible. Achieving full bilingual support (English/Spanish) with a single click, plus WCAG 2.1 AA compliance – all in pure vanilla JavaScript without any frameworks. Deploying a live, working application that covers 12 states and reaches an estimated 165+ million Americans, all while working completely offline.

What we learned

We learned that Responsible AI is architectural, not cosmetic. A disclaimer at the bottom of a page is not enough. True RAI requires code-level enforcement (like sanitizeAI()), visible human handoff points (like Flag for Human Review), and transparent reasoning (like the reasoning trace with threshold bars). We also learned that the "benefits cliff" is a deeply human problem. People don't need a black box – they need clarity, compassion, and a clear path to a real human caseworker. Benefits Navigator bridges that gap by making the math visible, the language careful, and the human decision-maker explicit.

What's next for Benefits Navigator – Responsible AI for Public Benefits

With more time, we would focus on three key improvements: Real state-level eligibility data – We currently use national FPL formulas, but actual Medicaid and other thresholds vary by state. Integrating a proper state policy database would increase accuracy significantly. Authenticated caseworker integration – Right now, the flag-for-review system writes to localStorage, meaning flags don't actually reach a human. Building a real backend with caseworker accounts would close that loop and make the human-in-the-loop system fully operational. Multilingual expansion beyond English and Spanish – The communities with the lowest benefit uptake often speak Haitian Creole, Vietnamese, Arabic, or Mandarin. Expanding to these languages would serve those who need help most. We also aim to pilot this tool with actual Community Action Agencies to gather real user feedback and improve the document checklist and resource database.

Built With

  • canvas-confetti
  • claude
  • gemini-api-(via-openrouter)
  • github
  • html
  • javascript
  • jspdf
  • lightweight-charts
  • netlify
  • responsive-design)-google-fonts-(space-grotesk
  • tailwind-css
Share this project:

Updates