Inspiration
Knowledge workers lose momentum from constant context switching, not just from “too much work.”
We were inspired by a simple question:
What if your tools could adapt to your cognitive state in real time, instead of treating every minute the same?
EchoMind was born from that idea: detect when a person is in deep focus, light work, scattered attention, or recovery, then proactively reduce noise and surface the right next action.
About the Project
EchoMind is an AI-powered cognitive load manager that combines real-time sensing, state classification, and adaptive task support.
It works in 3 loops:
- Sense: extract non-raw facial signals (EAR, blink rate, gaze variance, head pose).
- Classify: map signals (plus behavior features) into cognitive states with confidence + triggers.
- Adapt: suggest focus-preserving actions (DND, task prioritization, break prompts, defer low-value tasks).
A simple way to describe the internal scoring intuition is:
$$ \text{StateScore}_k = \sum_i w_i f_i + \sum_j v_j b_j - h \cdot \Delta(\text{state switch}) $$
Where facial features (f_i), behavioral features (b_j), and hysteresis (h) help prevent unstable flipping between states.
How We Built It
- Frontend: React + TypeScript + Vite
- Desktop: Electron
- State management: Zustand
- Sensing: MediaPipe Face Landmarker
- Local storage: SQLite (better-sqlite3) + Electron Store
- Adaptation logic: rule-based engine + optional LLM explanation layer
- Web hosting: Firebase Hosting
Key implementation highlights:
- Guided face calibration wizard (Rest / Blink / Look-around stages)
- Personalized baseline thresholds for better per-user accuracy
- Hysteresis and confidence gates to reduce rapid state oscillation
- Minimal overlay redesign with real session duration
- Desktop-first auth flow via browser OAuth and app handoff
- Public landing page + phase roadmap (“What’s next?”)
Challenges We Faced
- Packaged app blank screen caused by file path/base URL behavior under
file://. - OAuth redirect mismatch and desktop flow edge cases.
- Noisy/unstable state switching (e.g., Scattered ↔ Deep Focus jitter).
- Overlay UX issues (intrusive visuals, extra window frame artifacts).
- Build/release friction (Windows packaging locks and environment-specific issues).
What We Learned
- Personalized baselines are essential; fixed thresholds are not enough.
- Stability matters as much as raw detection accuracy.
- UX clarity (timing, overlays, sound cues, concise explanations) directly impacts trust.
- Desktop product quality depends heavily on packaging/auth details, not just model logic.
- “Interpretability first” (show triggers/reasoning) helps users accept adaptive AI behavior.
What’s Next
- Phase 2: schedule integration (calendar/task timeline-aware adaptation)
- Phase 3: optional EEG device fusion for richer confidence signals
- Expand multimodal sensing (posture, hand-on-chin style patterns) to improve robustness beyond face-only cues
Built With
- better-sqlite3
- css
- electron
- express.js
- firebase-hosting
- github
- google-oauth
- html5
- mediapipe
- node.js
- openai-api
- react
- sqlite
- tensorflow.js
- typescript
- vite
- windows
- zustand
Log in or sign up for Devpost to join the conversation.