Inspiration

I was motivated because I am in a relationship with a single mother, and one of the reasons I care so deeply about her is the strength she shows day in and day out. I have tried to apply for government assistance myself. It is an arduous process. I could not imagine doing it while also worrying that a missed letter or a dropped childcare slot could put housing — and stability with her kids — at risk. In Miami-Dade that is not a hypothetical. About two in five households with children here are single-parent homes. United Way Miami’s ALICE data says 84% of single-female-headed households with children cannot cover the basics. MIT’s living wage is about $42/hour for one adult and one child and about $52/hour for one adult and two kids. Infant care runs on the order of $13,500 a year. The programs exist — School Readiness at the Early Learning Coalition of Miami-Dade/Monroe, DCF ACCESS, WIC, 211 / United Way Miami / JCS, Head Start, VPK, Miami-Dade Transit — but they live on five websites, with six-month revalidations, PDFs, and letters she is supposed to decode on a break. Missing one step can cost the job that was supposed to get her out. This project is a brain that can hold that maze at once. Not another resource directory.\

What it does

Miami Dade Single Mom Financial Stabilizer Agent turns a messy week of benefits, childcare, and shift work into at most three next actions: what to do, where (portal, phone, office), by when, and what to bring.

Six functions (Gemma lane in the repo; hosted demo on Gemini):

Letter reader — Paste or describe a DCF, ELC, M-DCPS, or landlord notice. The agent names the sender, the deadline, the documents, and what happens if she misses it. Eligibility map — From ZIP, kids’ ages, hours, and a rough income band, it maps School Readiness, SNAP/TANF/Medicaid, WIC, Head Start/Early Head Start, VPK, and 211 rent/utility help. It never guarantees approval. Revalidation tracker — Flags the ELC six-month revalidation, explains that Active is not a paid Monday seat, and drafts the change-of-hours note so a new night shift does not break the 20-hour rule. Document checklist — Checks a pay stub, lease, birth record, or employment letter against the official packet and marks HAVE / MISSING / UNCLEAR. Shift-and-transit planner — Handles “I start nights at a Beach hotel / MIA Monday, two kids, ZIP 33147.” It does not pretend 8 a.m.–3 p.m. center care solves a night shift. Metrobus/Metrorail are constraints. Private phone teammate — Short answers. No passwords. Income, kids, and status treated as sensitive. Always hands her ELC CCR&R 305-646-7220, 211, or DCF ACCESS, plus a one-line script for the clerk.

In addition to the six built-in Gemma functions, we have the following tri-lingual functionality:

Language lock: default UI and starter prompts stay English. English in → English out. Spanish in → Spanish out. Haitian Creole in → Haitian Creole out. Unclear → English. Program names stay in English inside every reply. It is not DCF, ELC, M-DCPS, a lawyer, or a caseworker with authority. Human review stays at those offices.

How we built it

Problem lock: Miami-Dade coordination gap — subsidy + benefits + transit + shift work as one workflow. Hosted demo: React / Express app plus Google Cloud Agent Platform. Live model: Gemini. Tools: search + URL context on allowlisted Miami-Dade / Florida pages (elcmdm.org, Family Portal / ACCESS, 211 Miami, M-DCPS, Miami-Dade Transit). Gemma path: gemma/letter_reader.py runs the same six-function prompt on a gemma-* model id so the GDG / Kaggle chip is real, not a caption. Product is the prompt: three-action output, crisis routing (211 first; 911 / Florida Abuse Hotline if a child is in danger), hard geofence, language match. Offline reasoner: if the API is down, a Miami-Dade rule engine still answers the core scenarios instead of going blank.

Challenges we ran into

I originally built it for Orange County, FL as that is closest to where I reside. I was constantly worried about drift in the beginning - two Orange Counties. Early search answers leaked California 211 (898211) and Orlando programs. We had to pin Florida 211 (call 211 / 211miami.org) and M-DCPS / Metrobus in both the hosted agent and the specialists.

English in, Spanish out. Default starter prompts are English, but the agent answered in Spanish. The offline reasoner treated words like “Miami” as a Spanish trigger, so any real local question flipped languages. We locked the rule: match the user’s latest message; default English; do not treat a place name as a language. We verify with three turns — English Active-status, Spanish Active-status, Haitian Creole Active-status — and only ship if A stays English.

Designer Get Code is read-only. Sub-agent geo rules do not live in the console form. The source of truth had to stay in the repo.

Waitlist honesty. ELC Miami-Dade/Monroe has recently cleared a long School Readiness queue. We could not copy an Orlando waitlist story. The wound here is documents, the 20-hour rule, portal clicks, letters, and night-shift care.

Vision vs paste. Letter-reader is specified for photos; the reliable studio path is pasted letter text. We disclose that instead of faking a camera pipeline.

Accomplishments that we're proud of

A working agent that, on “my School Readiness status says Active,” answers not a Monday seat, gives three actions, and cites ELC Miami-Dade — in the language she used.

Instructions that stay in Miami-Dade, refuse to guarantee approval, and still hand her a phone number when a fetch fails.

Six functions that match EmpowHER: a specific community, a working prototype, and a clear line between AI suggestion and human ELC/DCF review.

A Gemma folder judges can run, not just a sentence that says “we used Gemma.”

What we learned

The bottleneck is not “more programs.” It is translation under time pressure, on a phone, in more than one language — and translation only helps if the model does not invent a language she did not speak.

Grounding is a product feature. Without an allowlist, the model helps the wrong county. Without a language lock, it helps the right county in the wrong voice.

“Active” and “pending family acceptance” are interface words. Getting them wrong costs a slot. Disclose the stack: Gemini for the hosted demo, Gemma for the privacy path. Judges should not have to guess.

What's next for Miami Dade Single Mom Financial Stabilizer Agent

Photo-in letter reader with a mock ELC/DCF notice.

On-device Gemma for income and kids’ data.

Partner review with someone who has sat in an ELC service center or 211 queue — then a thin phone UI.

I would love to get this in front of someone within the state/county levels of government and build this out from prototype to an actual, production-grade agent that the county will actually utilize.

Built With

Share this project:

Updates

Submission history