Inspiration
Watching a loved one with dementia struggle to recognize familiar faces is heartbreaking. We wanted to build something that could act as a gentle, always-present memory companion—like a friend whispering in your ear, "That's Sarah, your granddaughter. Last week you talked about her new job."
What it does
ForgetMeNot is a web-based AR application designed for smart glasses (like Meta Ray-Bans). It:
- Recognizes faces in real-time using on-device AI
- Displays contextual info (name, relationship, last conversation summary) as a floating overlay
- Summarizes conversations using Google Gemini AI so caregivers can log interactions
- Runs entirely in-browser—no server, no cloud uploads, keeping patient data private
How we built it
- Frontend: React + Vite + TypeScript for a fast, type-safe UI
- Face Recognition: face-api.js running client-side (no images leave the device!)
- Database: IndexedDB via Dexie.js for local, private storage
- AI Summarization: Google Gemini API to condense conversation notes into friendly reminders
- AR Simulation: Fullscreen camera view with smooth, physics-based overlays that follow faces
Challenges we ran into
- Stale Closures in React: The face recognition loop kept "freezing" because React's closures captured old state. We solved this with
useRefto always read the latest values. - Camera Race Conditions: React's StrictMode caused double-mounting, interrupting the video stream. We implemented an
isMountedpattern to prevent stale async operations. - Matching Threshold Tuning: Finding the right balance between false positives and missed recognitions required a lot of trial and error.
Accomplishments that we're proud of
- 100% client-side AI: Face data never leaves the user's device, ensuring privacy for vulnerable patients
- Real-time performance: Smooth 60fps overlay animations with efficient face detection loops
- Accessible design: Large fonts, high contrast, warm colors—designed for elderly users
What we learned
- How to handle async operations safely in React components
- The nuances of browser-based face recognition and descriptor matching
- The importance of designing for accessibility from day one
What's next for ForgetMeNot
- Cloud sync for caregivers to share data across devices
- Voice assistant integration to speak the person's name aloud
- Native Meta glasses SDK integration for true AR experience
- Emotion detection to suggest conversation starters based on the person's mood
Built With
- dexie.js
- face-api.js
- google-gemini-api
- indexeddb
- react
- typescript
- vite
Log in or sign up for Devpost to join the conversation.