Inspiration

One of my grandparents recently fell for an internet scam — one that felt urgent, personal, and impossible to verify in the moment. Phishers today use publicly available information to craft messages that feel real, timed well, and targeted. That experience made it clear: older adults need more than warnings. They need a calm, knowledgeable companion that helps them understand what they're looking at and what to do next.

What it does

Guardian is a browser copilot for older adults navigating healthcare sites, government portals, and everyday online tasks. It:

  • Explains pages in plain language — summarizing what a page is asking and whether it looks safe
  • Flags scam signals — detecting urgency tactics, suspicious domains, phishing patterns, and risky form fields
  • Guides step-by-step — telling the user exactly which button to click next, grounded in what's actually on the screen
  • Remembers task context across sessions — so if a user was halfway through booking a doctor's appointment yesterday, Guardian picks up where they left off
  • Connects to Google Calendar — surfacing upcoming appointments as context so guidance is always relevant
  • Autonomously navigates the web — a background browser agent can fill and navigate complex flows on the user's behalf, pausing before any form submission for confirmation

How we built it

Guardian runs across two runtimes. The frontend is a Next.js 16 app with a Chrome extension that injects a copilot panel into any page. Each message is routed through an intent classifier that decides whether to run a scam check, appointment lookup, memory recall, or general guidance flow. A Gemini model then generates the response, grounded in the user's profile, task memory, and what's visible on the page.

For autonomous navigation, we built a Python FastAPI backend that runs Browser Use with Playwright. This lets Guardian actually interact with pages — filling forms, clicking through steps — while a hard rule prevents it from ever auto-submitting without explicit user confirmation.

Persistent memory lives in Supabase: a user_profiles table for long-term preferences and conditions, a task_memory table that always reflects the user's current task, and a user_context_entries table for structured notes written during onboarding.

Challenges we ran into

The hardest challenge was keeping guidance specific without being overwhelming. Generic safety warnings are useless — they either scare users unnecessarily or get ignored. We had to tune the intent router, scam signal extractor, and prompt structure together so the assistant says something genuinely actionable every time.

Memory was another challenge. Task memory needs to update continuously as the user navigates, but it also has to stay coherent — not repeating itself, not losing the thread when the user switches tabs or comes back the next day.

Accomplishments that we're proud of

Guardian does more than warn — it explains, guides, and acts. We're proud of the layered architecture that ties persistent memory, real-time page context, calendar data, and autonomous browsing into a single response that feels calm and helpful rather than alarming or robotic.

What we learned

Safety tools fail when they're vague or loud. Short, specific, step-by-step guidance — grounded in what the user is actually looking at — works far better than generic warnings. We also learned that memory and continuity matter as much as any single response: knowing what a user was trying to do yesterday makes every interaction more useful.

What's next for Guardian

We want to sharpen page detection with richer DOM analysis, expand the browser agent to handle more complex multi-step flows, and build out caregiver dashboards so family members can review scam flags and task history. Voice support is also in progress — for users who find typing difficult, being able to just ask Guardian a question out loud changes everything.

Built With

  • api
  • claude
  • fastapi
  • gcal
  • google
  • llm
  • nextjs
  • react
  • supabase
  • tailwind
Share this project:

Updates