💡Inspiration

Every community is full of help — food banks, crisis lines, free clinics, shelters, rent assistance. The cruel irony is that the people who need it most are often the least able to find it. When you're overwhelmed, scared, or in crisis, you don't have the energy to dig through a dozen government websites or guess the right agency's name. The help is there — it's just buried behind jargon, phone trees, and "where do I even start?"

That's exactly what our track named: Help is Hard to Find — Make Support Obvious. We built Beacon so that finding support takes one honest sentence instead of an afternoon of searching.

🧭 What it does

You tell Beacon what's going on in plain, everyday words — typed or spoken. Its AI reads your situation, figures out what kind of help you actually need (and how urgent it is), and instantly:

Shows real, free support near you — one tap to call, get directions, see hours and "open now" status. Writes you a script — exactly what to say when you call or walk in, in the first person, so the scariest part feels manageable. Gives concrete next steps — small, doable actions for right now. Knows when it's serious — for genuine crisis, mental‑health, or safety situations it surfaces 988 and trained counselors first, with care — but it never over‑alarms someone who just needs groceries or help with rent. No account. No forms. No judgment.

✨ What makes it different

You don't need to know what to search for. Most resource finders make you pick a category and a ZIP code. Beacon meets you in plain language and does the translating.

It tells you what to say. Knowing a hotline exists isn't the hard part — making the call is. The generated script removes that barrier.

Care, not alarm. We tuned it so material hardship doesn't trigger a flashing suicide‑hotline banner; support is matched to the real need. Private by design, works anywhere. It runs on a local AI with no account and no cloud — and still works even with no AI backend at all.

🛠️ How we built it

Frontend: a fast, framework‑free app built with Vite + vanilla JavaScript — a calm, accessible UI with a live Leaflet map, voice input via the Web Speech API, and views for searching, a resource directory, saved support, history, and settings.

AI core (3 graceful tiers): one shared module powers everything — (1) a local Ollama model (llama3.2) for free, private, on‑device understanding; (2) a built‑in offline keyword matcher so it never breaks.

Backend: Vercel serverless functions (/api/triage, /api/ai-status) with zero runtime dependencies. The AI returns structured JSON that we validate before rendering.

Deploy: push to GitHub → Vercel auto‑detects Vite + the functions → live.

🧗 Challenges we ran into

"Ollama can't live on Vercel." Our real AI runs locally, but the cloud has no Ollama. Rather than drop the AI, we designed degradation — local model → cloud Claude → offline matcher — so one codebase is smart locally and always works when deployed. Making AI output safe and reliable. Early on the model wrote the "what to say" script in the counselor's voice, missed multiple needs, and sometimes over‑escalated. We rewrote the prompt to force first‑person scripts and capture every need, and we gated the crisis banner so we never put a suicide hotline in front of someone who simply needs food. Real AI with no API keys. Keeping it free and private meant running a model on‑device — and making that experience match production.

🏆 Accomplishments that we're proud of

A tool that genuinely works end‑to‑end with real AI, no API keys required, that still deploys to the public web. Handling crisis with restraint and care — our hardest and most important design decision, done responsibly. A private‑by‑default product in a space where people are at their most vulnerable. A polished, accessible experience (reduced‑motion support, keyboard‑friendly, high contrast) shipped in a hackathon timeframe.

📚 What we learned

Prompt engineering is product design — small wording changes decided whether the output was safe, kind, and usable. Graceful degradation beats all‑or‑nothing. Designing for the worst‑case environment (no AI, no internet) made the whole thing more trustworthy. Designing for people in distress demands restraint — fewer choices, calmer color, and never amplifying alarm.

🚀 What's next for Beacon

Live local data: real geolocation + verified listings via 211 / Open Referral, so hours and eligibility stay current. Multilingual support, because help shouldn't require English. Low‑connectivity modes: SMS and offline‑first for the people who need it most. Opt‑in saving that respects the privacy promise. Partnerships with local organizations to keep the directory trustworthy.

Made using

  • JavaScript
  • HTML
  • CSS
  • Vite
  • Node.js
  • Vercel
  • Ollama AI model
  • Claude
  • Leaflet.js
  • OpenstreetMap
  • Cartodb
Share this project:

Updates