Inspiration

We didn't start from "let's build a benefits app." We ran research first - Reddit for the lived pain, Perplexity for structural causes, Consensus for scale - and one pattern dominated: people lose SNAP not because they stop qualifying, but because they miss a deadline or a reporting step they never knew existed, then get a closure notice written in agency-speak. Perplexity confirmed most denials are procedural, not substantive. That gap - the paperwork people don't know is ticking - became Provision.

What it does

Provision turns SNAP confusion into a clear next action for California and Texas recipients. It runs a 7-step onboarding (state, enrollment date, household size, income, reporting type, recent changes), then builds a state-aware renewal roadmap with deadlines and document checklists. Users describe a life change in plain language and get a "report this within X days or not" answer with a citation and a caseworker call script. They can photograph a notice and get a plain-language explanation of what it means and what to do. If benefits are already at risk, a recovery flow lays out the fair-hearing timeline and generates a hearing-request letter. Every screen shows whether a number is rule-based or an AI explanation.

How we built it

A React Native / Expo app (SDK 54) over a FastAPI backend. A deterministic rules engine (rules_engine.py) owns every threshold, deadline, and benefit range, computed from USDA FY2026 values; a knowledge base does keyword retrieval over curated CA (10) and TX (8) policy snippets; Gemini 3.1 Flash-Lite writes plain-language explanations grounded only in those snippets, and reads photographed notices via its vision API. A merge layer makes deterministic values override the model, and a confidence gate routes low-confidence or high-risk cases to a caseworker. The backend ships with ~127 automated tests, including domain-accuracy tests that verify every SNAP number against USDA published values. Backend deploys on Render (Docker); the Android app is built with Expo EAS.

Challenges we ran into

Keeping the LLM out of the numbers architecturally, not just by prompt; grounding answers in two states' real manuals with different reporting models (CA SAR vs TX quarterly); making the demo show upcoming deadlines instead of contradicting our own value proposition; and designing graceful degradation so every AI route returns a safe deterministic answer if Gemini is rate-limited mid-demo.

Accomplishments that we're proud of

A working hybrid system where the AI genuinely interprets a specific person's situation but is never trusted with a single threshold or deadline - and the UI makes that split visible to the user ("Rule-based" vs "AI explanation," "AI guidance · Not a caseworker decision"). Every SNAP figure is unit-tested against USDA FY2026 source values. The app degrades safely when the model is unavailable, treats user text as untrusted data against prompt injection, and ships real CA/TX policy citations on every answer. It runs end-to-end on a real device as an installable build, not a mockup.

What we learned

The winning move isn't a chatbot that answers questions; it's an AI that interprets a specific person's rules and tells them what to do, while never being trusted with the numbers. We learned to split the system: the LLM handles language, a deterministic engine owns every date and threshold - and that this split is also the strongest Responsible AI story we could tell.

What's next for Provision - SNAP Benefits Navigator

Expand beyond CA and TX to a state-by-state rule engine; add real push notifications for the 30/14/7/2-day deadline reminders; multilingual support starting with Spanish; and a community-organization view so case managers can help multiple clients. Longer term, optional direct submission of reports and forms to state portals.

Built With

  • cloudflared
  • custom-python-key-rotation-client
  • deterministic-snap-rules-engine
  • eas-update-/-web-export
  • expo.io
  • fastapi
  • gemini-3.1-flash-lite
  • netlify/vercel
  • pydantic
  • python
  • rag-knowledge-base-(ca-calfresh-+-tx-snap-manuals
  • react-native
  • render
  • typescript
  • usda-ers-snap-policy-database)
  • usda-fns
Share this project:

Updates