Inspiration
While looking through the Florida Community Resource Map, we found a real food pantry listing (S4P Synergy) with a dead website link. A broken link doesn't mean the pantry closed, but the page gave no hint either way. That gap is exactly what Genie is built to close.
What it does
Genie is a Chrome extension for the Florida Community Resource Map. It automatically checks each listing's website, on both the detail page and the search results list, and shows one of three honest statuses: Active, Confirmed closed, or Uncertain. A dead link is never treated as proof of closure. When Genie finds and verifies a real replacement page for the same service, it swaps the visible link, labels it "Updated link by Genie," and keeps the original link and evidence one click away. It never touches FCI's actual records, only what you see in your own browser.
How we built it
We split the work: a Python/FastAPI backend and a Chrome extension, built against an API contract we agreed on up front. The backend checks the original link safely, then uses Gemini's grounded search to find candidate replacement pages, fetches those pages itself, and asks Gemini a second time whether the evidence actually matches the listing. Every quoted source has to come word for word from a page we actually fetched. On the extension side, the results list cards don't expose a website or ID in their markup, so instead of scraping the DOM we read the page's own internal search API response directly.
Challenges we ran into
The hardest rule to enforce was ours: a broken link should never look like proof of closure. We had to bake that into the prompts, into a check for explicit closure language, and into the response format itself, which rejects a classification with no real evidence behind it. We also ran into CORS issues between the extension and the backend, a Gemini model that timed out under its default settings, and no clean way to read listing data off the results page until we found the site's own internal API.
Accomplishments that we're proud of
We verified a real case start to finish, not a scripted demo: a dead listing link, found and confirmed by Gemini, replaced with the actual current page, with matching sources, address, and phone number. We're proud that the system fails safely. When evidence is thin, Genie says uncertain instead of guessing, because guessing wrong about a food pantry has real consequences.
What we learned
Letting a model recall an organization from memory isn't verification. Grounding it in independently fetched pages and checking its citations is what makes the answer trustworthy. Most of the hard work here turned out to be ordinary engineering (schema checks, timeouts, caching), not the prompt itself.
What's next for Genie
Covering map popups, tuning cost and speed for a larger scale, and talking with FCI about whether verified fixes could someday be offered back to them as suggested edits, rather than staying local to the browser.
Built With
- fastapi
- gemini
- github
- httpx
- pydantic
- python
- react
- typescript
Log in or sign up for Devpost to join the conversation.