Properties
title: User Journeys aliases: [Journeys, User Flows] tags: [3netra/wiki, ux, journeys, diagrams] product: 3netra Meta Android App source_repository: 3Netra-ai/3n_meta_android source_ref: origin/prod source_revision: b48aada8fd5427b5db0c02945569963c4ae543c8 last_verified: 2026-08-06 up: "[[Home]]"
User Journeys
Journey Map (Aiden's campus day)
journey
title Aiden's campus day with 3netra
section Morning arrival
Onboard & pair glasses: 5: Aiden, Instructor
Campus navigation cue: 4: Aiden
section Class
What do I see (scene): 5: Aiden
Read lecture slides/whiteboard (OCR): 5: Aiden
Classroom/lecture mode + PDF notes: 4: Aiden, Instructor
Who's here (face ID): 5: Aiden
Feelings (emotion): 4: Aiden
section Campus life
Library/quad description: 4: Aiden
section Afternoon
Lecture notes + AI summary: 4: Aiden
Today's Story recap: 5: Aiden
Glasses Gesture Map (product specification, not hardware verification)
| Gesture | Action | Mode | Status |
|---|---|---|---|
| Single tap (right temple) | "What do I see?" | Scene | 🟡 callable method; Home invokes it, but no DAT callback registration was found |
| Double tap (right temple) | "Read what's written" | OCR/Read | 🟡 callable method only |
| Hold 2s (right temple) | "Who is in front of me?" / voice command | Person ID / mic | 🟡 callable method starts Android recognition; no DAT callback found |
| Single tap (left temple) | "What is happening here?" | Activity | ⏳ |
| Double tap (left temple) | "How does that person feel?" | Emotion | 🟡 callable method only |
| Voice "Hey Netra" | Wake word activation | — | ⏳ planned (service removed) |
Journey 1 — First-Time Setup (~3 min)
- Student/disability support coordinator installs app → Login/Signup (email+password, OTP, or Google)
- Permission rationale screen (BT, location, camera, mic, notifications) with FERPA/COPPA banner
- Onboarding: Netra welcome → academic level selection (tunes vocabulary for high school/college) → glasses pairing (Meta View app must be paired first; auto-connect scans for "Meta"/"RB Meta" devices)
- (Optional) companion selection + nickname — see 05-Avatars-Companions
- Home: "👋 Hey, {name}! Ready to explore your campus?"
Journey 2 — Student core loop (hands-free)
- Gesture or voice triggers
BluetoothServiceheadless pipeline (no UI needed) - When hardware capture succeeds, the app invokes Supabase
chat-vision; the Android client currently discards its answer and substitutes fixed success text - Scene UI speaks through Android TTS. Speaker routing and Sarvam behavior are not device-tested
- Every result logged → feeds My Story
Journey 3 — "What do I see?" (UI path)
Home → 🔍 → scene_description/Scene → the student taps a mode chip → capture attempt → fixed "AI response received" on a successful Edge Function call → Android TTS + attempted session log. First-load auto-capture is commented out. Mode chips let the student select Scene/Read/Emotions/People.
Journey 4 — Reading the board (Classroom mode)
Home exposes a Classroom quick action, but SceneDescriptionScreen has no Classroom chip/prompt branch and falls back to generic scene behavior. BluetoothService contains a Classroom/PDF branch, yet no verified UI or gesture route reaches it. The PDF helper uses legacy public external-storage writes and is not a reliable modern-Android export flow.
Journey 5 — Recognizing a classmate or professor
Instructor/disability support coordinator (PIN-gated) registers classmates & faculty: Friends tab → + → Admin PIN → name → CameraX capture → FaceNet embedding → Supabase. Student: 👤 Who's here? → FaceNet calculates an embedding and fetches registered embeddings from Supabase for cosine comparison (>0.5). A match is read aloud locally; otherwise the code invokes the Edge Function. It is neither local-only nor verified as instant, and successful Edge calls still resolve to fixed success text in this client.
Privacy caveat
The active enrollment path stores embeddings in Supabase (face_embeddings), while the encrypted on-device store exists but is secondary in this flow — see 11-Security-Privacy-Compliance#Critical gaps.
Journey 6 — "Be My Eyes" chat
Chat tab → type question and/or attach gallery image or video → askAssistant samples/compresses media → Supabase chat-vision → fixed success text on client-side success. Trash clears in-memory history. No response-time target has implementation or test evidence.
Journey 7 — Lecture notes
Home → 📝 Notes → Start Recording (device speech recognizer) → live transcript pane → Summarize Now → SupabaseAiService.summarizeLecture; the current client returns fixed success text rather than decoding the model summary.
Journey 8 — End-of-day "Today's Story"
My Story tab renders the day's sessions as an academic timeline (mode emoji, time, narration). 🔊 Read My Day Out Loud compiles "Here is your day so far… That's everything I saw today!" and speaks it — designed for review or sharing.
Journey 9 — Educator & Disability Support Specialist
- Face library management (PIN-protected): register/remove classmates & professors
- Settings: some preferences persist locally; server settings synchronization is attempted. The high-contrast and reduce-motion preferences are explicitly local-only.
- Dashboard layer (
SupabaseDashboardRepository): code exposes settings/audit calls, but no active educator surface or authorization workflow is verified. - Planned: web Educator Portal, Disability Support Portal summaries, weekly academic reports
Journey 10 — Emergency SOS (scaffolded)
Intended: hold temple 2s → EmergencyAlertManager (TRIGGER_SOS intent) → payload {student_id, GPS, recent_summaries, status:"active"} → Supabase emergency_alerts → emergency contact notified.
Current state Service exists, GPS + summaries are TODO stubs, and no UI/gesture triggers it yet. Do not represent as operational — see 12-Risks-Decisions.
Navigation ⬅️ 03-Frontend-Navigation · 🏠 Home · ➡️ 05-Avatars-Companions
