Date: 12 mars 2026 Version: 1.0 Scope: MVP (Phase 1) + Roadmap (Phase 2-4)
- Vue d'ensemble
- Matrice Fonctionnalités x Personas
- Détail des Fonctionnalités MVP
- Roadmap Phases 2-4
- Feature Priority Matrix
- Effort vs Impact
┌──────────────────────────────────────────────────┐
│ TIER 1: SENIOR CORE (Essential) │
│ ├─ Analysis (SMS, Email, Photos) │
│ ├─ Training Scenarios │
│ ├─ Results Feedback │
│ └─ Accessibility (Voice, Large fonts) │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ TIER 2: FAMILY & TRACKING (Important) │
│ ├─ Family Dashboard │
│ ├─ Analysis History │
│ ├─ Profile Management │
│ └─ Notifications │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ TIER 3: INSTITUTIONAL & ADVANCED (Future) │
│ ├─ White-label │
│ ├─ Reporting & Compliance │
│ ├─ API & Integration │
│ └─ Advanced Analytics │
└──────────────────────────────────────────────────┘
✅ = Critère essentiel pour persona
⚠️ = Critère important (nice-to-have)
❌ = Pas applicable
⭐ = Déjà implémenté
🔜 = Planifié Phase 2+
| Fonctionnalité | Status | Priority | Raison |
|---|---|---|---|
| Message Analysis | ⭐ MVP | 🔴 CRITIQUE | Besoin #1 (détection) |
| SMS Detection | ⭐ MVP | 🔴 CRITIQUE | 90% des arnaques |
| Email Detection | ⭐ MVP | 🔴 CRITIQUE | 2e type d'arnaque |
| Photo Upload | ⭐ MVP | 🟠 HAUTE | Capture screenshot |
| Voice Input (🎙️) | ⭐ MVP | 🟠 HAUTE | Accessibility (pas typage) |
| Voice Output (TTS) | ⭐ MVP | 🟠 HAUTE | Accessibility (malvoyants) |
| Risk Score (0-100) | ⭐ MVP | 🟠 HAUTE | Feedback immédiat |
| Coaching Feedback | ⭐ MVP | 🟠 HAUTE | Explique pourquoi |
| Training Scenarios | ⭐ MVP | 🟠 HAUTE | Education interactive |
| Gamification (XP) | ⭐ MVP | 🟡 MOYENNE | Motivation |
| Large Fonts (20px+) | ⭐ MVP | 🔴 CRITIQUE | WCAG A11Y |
| High Contrast | ⭐ MVP | 🔴 CRITIQUE | WCAG AAA |
| Simple Navigation | ⭐ MVP | 🔴 CRITIQUE | Cognitive load |
| French (fr-CA) | ⭐ MVP | 🔴 CRITIQUE | Language native |
| Analysis History | 🔜 Phase 2 | 🟡 MOYENNE | Track progrès |
| Quiz Module | 🔜 Phase 2 | 🟡 MOYENNE | Deep learning |
| Resources Tab | 🔜 Phase 2 | 🟡 MOYENNE | Education content |
| Offline Mode | 🔜 Phase 3 | 🟢 BAS | Rare need |
| Multiple Languages | 🔜 Phase 3 | 🟢 BAS | English minorities |
Summary for Senior: 13/18 features in MVP, rest in Phases 2-3
| Fonctionnalité | Status | Priority | Raison |
|---|---|---|---|
| Family Dashboard | ⭐ MVP | 🔴 CRITIQUE | Raison #1 pour aidant |
| Member List | ⭐ MVP | 🔴 CRITIQUE | Voir qui on protège |
| Analysis Visibility | ⭐ MVP | 🟠 HAUTE | Voir quand analyse |
| Risk Summary | ⭐ MVP | 🟠 HAUTE | "Mom has 5 high-risk" |
| Alert Notifications | 🔜 Phase 2 | 🟠 HAUTE | "Dad analyzed suspicious SMS" |
| Check-in Messages | 🔜 Phase 2 | 🟠 HAUTE | "How can I help?" |
| Invite Family | ⭐ MVP | 🟡 MOYENNE | Add members |
| Manage Permissions | 🔜 Phase 2 | 🟡 MOYENNE | Control sharing |
| Own Analysis | ⭐ MVP | 🟡 MOYENNE | Family learns too |
| Shared Quiz | 🔜 Phase 2 | 🟢 BAS | Fun bonding |
| Educational Tips | 🔜 Phase 2 | 🟡 MOYENNE | What to teach parent |
| How-to Guides | 🔜 Phase 2 | 🟡 MOYENNE | Explain arnaque types |
| Analytics Export | 🔜 Phase 3 | 🟢 BAS | Report for advisor |
Summary for Family: 4/13 in MVP, 9/13 in Phase 2+
| Fonctionnalité | Status | Priority | Raison |
|---|---|---|---|
| Group Management | 🔜 Phase 2 | 🔴 CRITIQUE | Manage 50+ clients |
| Bulk User Import | 🔜 Phase 2 | 🟠 HAUTE | Add all at once |
| Activity Dashboard | 🔜 Phase 2 | 🟠 HAUTE | Track client engagement |
| Compliance Reports | 🔜 Phase 2 | 🟠 HAUTE | Audit trail |
| Risk Alerts | 🔜 Phase 2 | 🟠 HAUTE | Flag at-risk clients |
| Analytics & Metrics | 🔜 Phase 2 | 🟠 HAUTE | Monthly reporting |
| API Access | 🔜 Phase 3 | 🟡 MOYENNE | Integration needs |
| White Label Option | 🔜 Phase 3 | 🟡 MOYENNE | Custom branding |
| SSO Integration | 🔜 Phase 3 | 🟡 MOYENNE | Existing directory |
| Bulk SMS Alerts | 🔜 Phase 3 | 🟢 BAS | Reach all clients |
| Training Materials | 🔜 Phase 2 | 🟡 MOYENNE | Staff onboarding |
| Support Helpline | 🔜 Phase 2 | 🟡 MOYENNE | Technical issues |
Summary for Institution: 0/12 in MVP, 11/12 in Phase 2+
| Fonctionnalité | Status | Priority | Raison |
|---|---|---|---|
| White-Label | 🔜 Phase 3 | 🔴 CRITIQUE | Customer branding |
| Custom Logo/Colors | 🔜 Phase 3 | 🟠 HAUTE | Brand consistency |
| SMS Integration | 🔜 Phase 3 | 🟠 HAUTE | Send via SMS alerts |
| Deep Linking | 🔜 Phase 3 | 🟠 HAUTE | From app → ScamGuard |
| API for Analysis | 🔜 Phase 3 | 🟡 MOYENNE | Real-time checking |
| Real-time Alerts | 🔜 Phase 3 | 🟡 MOYENNE | Notify bank of risk |
| Compliance Reports | 🔜 Phase 3 | 🔴 CRITIQUE | Regulatory proof |
| Audit Trail | 🔜 Phase 3 | 🔴 CRITIQUE | GDPR/PIPEDA ready |
| Data Residency | 🔜 Phase 2 | 🟠 HAUTE | Canada servers only |
| DPA Agreement | 🔜 Phase 2 | 🔴 CRITIQUE | Data processing agreement |
| Customer Analytics | 🔜 Phase 3 | 🟡 MOYENNE | See usage metrics |
| Fraud Intelligence | 🔜 Phase 4 | 🟢 BAS | Receive threat feeds |
Summary for Bank: 0/12 in MVP, all Phase 2+
Description: Analyse de messages SMS suspects
User Story:
AS A Senior
WHEN I receive a text message I'm unsure about
I WANT TO analyze it in ScamGuard
SO THAT I can know if it's a scam
Implementation:
Input: SMS text (up to 160 chars)
Process:
1. Send to Lambda
2. LLM analysis (OpenAI → Gemini fallback)
3. Keyword detection (last resort)
4. Risk score calculation
Output:
{
risk_score: 0-100,
is_scam: boolean,
explanation: "Pourquoi c'est une arnaque",
indicators: ["urgency", "account_threat", "link_request"]
}Success Criteria:
- ✅ Detection in <2 seconds
- ✅ Accuracy >85%
- ✅ Handles 500+ concurrent requests
- ✅ Works with common SMS scams (banking, Amazon, Apple)
Description: Analyse de messages email
Input Types:
- Copier-coller le texte
- Upload screenshot
- Photo de l'écran
Detection: Same as SMS, but longer context
Special: Email header analysis (if provided)
Description: Capture screenshot, analyze content
Technical:
Input: Image (JPG/PNG)
Process:
1. Compress if >2MB
2. Encode to Base64
3. Send to LLM with vision capabilities
4. Extract text + context
5. Analyze for scam
Output: Same as SMS/Email
Use Case:
Senior: "I got this image on WhatsApp, is it real?"
→ Takes screenshot
→ Uploads to ScamGuard
→ Vision API reads text
→ Analyzes content
→ Returns score + explanation
Configuration:
// Entire analysis read aloud
const speakResult = (text) => {
const utterance = new SpeechSynthesisUtterance(text);
utterance.lang = 'fr-CA'; // Quebec French
utterance.rate = 0.85; // Slower for seniors
utterance.pitch = 1.0; // Normal pitch
window.speechSynthesis.speak(utterance);
};
// Auto-triggered on results
// Manual button (🔊) for re-readingWhen Used:
- Results screen loads ("Score: 85/100, This is scam")
- Training scenario loads (reads fake message)
- Feedback reads aloud (coaching message)
Configuration:
const recognition = new window.webkitSpeechRecognition();
recognition.lang = 'fr-CA';
recognition.continuous = false; // Single phrase
recognition.interimResults = false; // Final onlyFlow:
1. Senior clicks 🎙️ Dicter
2. Permission dialog appears (first time)
3. Microphone active (visual feedback: "🛑 Écoute...")
4. Senior speaks response
5. Text appears in textarea
6. Can add more or submit
Browser Support:
- ✅ Chrome
- ✅ Edge
⚠️ Firefox (limited)- ❌ Safari (fallback to text input)
Current Scenarios (3 in MVP):
-
SMS Bancaire
- Text: "Votre compte est bloqué. Cliquez ici."
- Type: Banking scam
- Red flags: Urgency, action required, generic greeting
-
Annonce Amazon
- Text: "Votre compte Amazon a été suspendu. Confirmez vos coordonnées."
- Type: Account suspension
- Red flags: Demand for personal info, suspension threat
-
Email Apple
- Text: "Paiement refusé. Mettez à jour carte bancaire."
- Type: Payment scam
- Red flags: Financial threat, update data request
Mechanics:
1. Senior clicks "M'entraîner"
2. System picks random scenario
3. Displays fake message with TTS reading
4. Provides textarea + voice option for response
5. Senior submits response
6. LLM analyzes response quality:
- Did they recognize it as scam?
- Did they give good advice?
- Did they suggest correct action?
7. Returns score + feedback
8. Awards XP
9. Returns to home
Scoring Logic:
// Evaluation criteria
Good responses:
- "This is a scam - don't click"
- "Delete the message, it's fake"
- "Call the bank directly (not the number in SMS)"
Poor responses:
- "I don't know"
- "Maybe click to check" ❌
- "Ignore it" (too vague)
Scoring:
- Identifies as scam: +50 points
- Explains why: +30 points
- Suggests action: +20 points
- Max: 100 points
XP Awarded:
- Score ≥60: +10 XP
- Score 40-59: +5 XP
- Score <40: +2 XPXP System:
Activities:
├─ Analyze message: +2-5 XP
├─ Training scenario: +5-10 XP
├─ Quiz completion: +20 XP
└─ Good streak (5 in a row): +15 XP bonus
Leveling:
├─ Level 1: 0-50 XP (Novice)
├─ Level 2: 50-150 XP (Apprentice)
├─ Level 3: 150-300 XP (Guardian)
├─ Level 4: 300-500 XP (Expert)
└─ Level 5: 500+ XP (Master)
Badges (Future - Phase 2):
- 🛡️ First Analysis
- 🎯 5 Analyses
- 🧠 Quiz Master (100% on 3 quizzes)
- 🚀 Streak (5 correct in a row)
- 💡 Helpful (Family member says helped them)
Typography:
:root {
--font-size-h1: 32px; /* Titles */
--font-size-h2: 26px; /* Subtitles */
--font-size-body: 20px; /* Regular text */
--font-size-button: 22px; /* Buttons (bold) */
--line-height: 1.6; /* Generous spacing */
}
/* Minimum: 20px for all text */
/* No text smaller than 16px, ever */Colors (WCAG AAA):
--color-primary: #0056b3; /* 10.2:1 contrast on white */
--color-success: #2e7d32; /* 6.8:1 contrast */
--color-error: #d32f2f; /* 5.9:1 contrast */
--color-warning: #ff9800; /* 4.6:1 contrast */
--color-background: #f9f9f9; /* Slight tint (not pure white) */
--color-text: #1a1a1a; /* Not pure black (easier on eyes) */Specification:
/* All interactive elements */
button, input, textarea {
min-height: 60px; /* 60px touch target */
padding: 15px 20px; /* Generous padding */
border-radius: 12px; /* Not too sharp */
font-size: 20px; /* Large text */
border: 2px solid transparent; /* Visible focus state */
}
/* Hover/focus states visible */
button:hover {
background-color: darken-primary;
cursor: pointer;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
button:focus {
outline: 3px solid var(--color-primary);
outline-offset: 2px;
}Rationale:
- 60px: Accommodates trembling hands, arthritis
- 2px border: Clear focus indicator
- 12px radius: Not too sharp (ergonomic)
- 20px font: Readable for vision loss
Implementation:
<button aria-label="Relire le message">
🔊
</button>
<button aria-label="Dicter ma réponse au micro">
🎙️
</button>
<div role="alert" aria-live="polite">
Résultat: Ceci est une arnaque (92/100)
</div>Testing:
- ✅ Tested with NVDA (Windows)
- ✅ Tested with JAWS (licensed)
- ✅ Tested with VoiceOver (Mac)
View:
┌─────────────────────────────────────────┐
│ MA FAMILLE (My Family) │
├─────────────────────────────────────────┤
│ │
│ 👴 PAPA (73 ans) - ACTIF │
│ ├─ Analyses ce mois: 8 │
│ ├─ Dernière: Il y a 3 jours │
│ ├─ Risk moyen: 35/100 ✅ (Bas) │
│ └─ Statut: Tout va bien │
│ │
│ 👵 MAMAN (76 ans) - ACTIF │
│ ├─ Analyses: 14 │
│ ├─ Dernière: Il y a 2 heures │
│ ├─ Risk moyen: 25/100 ✅ (Très bas) │
│ └─ Statut: Vigilante! │
│ │
│ 👴 GRAND-MÈRE (88 ans) - ATTENTION │
│ ├─ Analyses: 2 │
│ ├─ Dernière: Il y a 3 semaines │
│ ├─ Risk moyen: 65/100 ⚠️ (Moyen) │
│ └─ Statut: 3 alertes ce mois │
│ │
│ [+ Ajouter un membre] │
│ │
└─────────────────────────────────────────┘
Data Points:
- Member name + age
- Analysis count (this month)
- Last activity date
- Average risk score (0-100)
- Overall status (healthy/at-risk)
- Alert count
Interaction:
Tap on member → See recent analyses
├─ Last 5 analyses listed
├─ Can see timestamp
├─ Can see risk score
└─ Can see type (SMS/Email/etc)
For Senior:
History View:
├─ All analyses date-ordered (newest first)
├─ Each shows:
│ ├─ Date & time
│ ├─ Type (SMS, Email, Photo)
│ ├─ Risk score (visual + number)
│ ├─ Message preview (truncated)
│ └─ Tap to view full result
├─ Filter by type (SMS, Email, etc)
└─ Filter by date range
For Family:
Aidant sees:
├─ Member's last 10 analyses
├─ Trends (is risk increasing?)
├─ Most common type
├─ Alerts if unusual pattern
└─ Cannot see full messages (privacy)
Layout:
┌────────────────────────────────────────┐
│ RÉSULTAT ANALYSE │
├────────────────────────────────────────┤
│ │
│ ╔═════════╗ │
│ ║ 92 ║ │
│ ║ /100 ║ ← Score │
│ ╚═════════╝ (Color coded) │
│ │
│ 🟥 CECI EST UNE ARNAQUE │
│ │
│ ┌────────────────────────────────────┐│
│ │ Explication: ││
│ │ Cet SMS a 3 signaux d'alerte: ││
│ │ 1) Urgence ("action immédiate") ││
│ │ 2) Menace (compte "bloqué") ││
│ │ 3) Lien malveillant inclus ││
│ │ ││
│ │ Les banques JAMAIS demandent ││
│ │ vérification par SMS! ││
│ └────────────────────────────────────┘│
│ │
│ 🎖️ +10 XP GAGNÉS! │
│ │
│ ┌────────────────────────────────────┐│
│ │ [🏠 RETOUR À L'ACCUEIL] ││
│ └────────────────────────────────────┘│
│ │
└────────────────────────────────────────┘
Score Interpretation:
0-30: 🟢 Sûr (Safe)
31-50: 🟡 Suspect (Watch out)
51-75: 🟠 Risqué (Risky)
76-100: 🔴 Arnaque (Scam)
Dynamically Generated Based on Score:
| Score | Message |
|---|---|
| >80 | "Excellente détection! Ce message avait tous les signaux d'une arnaque. Continuez comme ça!" |
| 60-80 | "C'était une arnaque. Méfiez-vous des messages demandant données personnelles ou cliquer sur liens." |
| 40-60 | "Celui-ci était un peu ambigu. En cas de doute, appelez directement (pas le numéro du message)." |
| <40 | "Ce message semble assez sûr. Vous faites preuve de vigilance en vérifiant!" |
| Feature | Priority | Effort | Benefit |
|---|---|---|---|
| Analysis History | 🟠 HAUTE | 2 pts | See patterns |
| Quiz Module | 🟠 HAUTE | 3 pts | Deeper learning |
| Push Notifications | 🟠 HAUTE | 2 pts | Engagement |
| Resources Tab | 🟡 MOYENNE | 2 pts | Reference material |
| Profile Management | 🟡 MOYENNE | 2 pts | Personalization |
| Family Alerts | 🟠 HAUTE | 3 pts | Family value |
| Basic Analytics | 🟡 MOYENNE | 3 pts | See progress |
Total Effort: 17 story points (4 weeks, 2 devs)
| Feature | Priority | Effort |
|---|---|---|
| White-label version | 🔴 CRITIQUE | 5 pts |
| Admin dashboard | 🔴 CRITIQUE | 4 pts |
| Bulk user import | 🟠 HAUTE | 2 pts |
| Compliance reports | 🔴 CRITIQUE | 4 pts |
| API endpoints | 🟠 HAUTE | 4 pts |
| Data residency (Canada) | 🔴 CRITIQUE | 3 pts |
| Advanced analytics | 🟡 MOYENNE | 3 pts |
Total Effort: 25 story points (6 weeks, 2 devs)
| Feature | Priority | Benefit |
|---|---|---|
| ML-based threat scoring | 🟡 MOYENNE | 10% accuracy gain |
| Image vision API | 🟡 MOYENNE | Better OCR |
| Mobile apps (iOS/Android) | 🟠 HAUTE | 50% more users |
| Multi-language support | 🟡 MOYENNE | Expand market |
| Offline mode | 🟢 BAS | Rare use case |
HIGH EFFORT
↑
│
╔═══════════════╪═══════════════╗
║ NICE │ PLAN ║
║ TO HAVE │ LATER ║
║ │ ║
║ Mobile Apps │ White-label ║
║ i18n │ Advanced API ║
║ Offline │ ML scoring ║
├───────────────┼───────────────┤
║ SKIP │ DO FIRST ║
║ │ ║
║ (Empty) │ Analysis ║
║ │ Voice ║
║ │ Scenarios ║
║ │ Dashboard ║
╚═══════════════╪═══════════════╝
LOW EFFORT │
│
LOW IMPACT
↓
- ✅ Message Analysis
- ✅ Voice Features
- ✅ Training Scenarios
- ✅ Family Dashboard
- Timeline: MVP (Weeks 1-2)
- 🔜 White-label version
- 🔜 Advanced APIs
- 🔜 ML threat scoring
- Timeline: Phase 3-4 (after MVP success)
- ❌ Offline mode (not a priority for seniors)
- ❌ Wearable support (low user base)
- ❌ VR/AR interface (overkill)
- ⭐ Animation polish
- ⭐ Additional badges
- ⭐ Social features (optional sharing)
| Feature | Effort | Benefit | ROI |
|---|---|---|---|
| Analysis Engine | 5 pts | Solves #1 pain | ⭐⭐⭐⭐⭐ |
| Voice I/O | 3 pts | Accessibility | ⭐⭐⭐⭐⭐ |
| Training | 4 pts | Education | ⭐⭐⭐⭐ |
| Dashboard | 2 pts | Family value | ⭐⭐⭐⭐ |
| Gamification | 2 pts | Engagement | ⭐⭐⭐ |
| Accessibility | 3 pts | Market diff | ⭐⭐⭐⭐⭐ |
Total MVP: 19 story points (2-3 weeks, 2 devs)
| Tier | Status | Coverage |
|---|---|---|
| Tier 1: Core Detection | ✅ MVP | 100% |
| Tier 2: Education | ✅ MVP | 80% (3 scenarios, add more Phase 2) |
| Tier 3: Tracking | 🔜 Phase 2 | 0% (Analysis history) |
| Tier 4: Advanced | 🔜 Phase 3+ | 0% |
Outcome: Senior has full core experience in MVP ✅
| Tier | Status | Coverage |
|---|---|---|
| Tier 1: Basic Dashboard | ✅ MVP | 100% |
| Tier 2: Analysis Visibility | ✅ MVP | 100% |
| Tier 3: Alerts & Actions | 🔜 Phase 2 | 0% |
| Tier 4: Advanced | 🔜 Phase 3+ | 0% |
Outcome: Family gets visibility in MVP, engagement in Phase 2 ✅
| Tier | Status | Coverage |
|---|---|---|
| Tier 1: Tools | ✅ MVP | 100% (can use existing features) |
| Tier 2: Admin Features | 🔜 Phase 2 | 0% (need bulk import, reporting) |
| Tier 3: Compliance | 🔜 Phase 3 | 0% (white-label, APIs) |
| Tier 4: Advanced | 🔜 Phase 4+ | 0% |
Outcome: Institution uses MVP tools, gets dedicated features Phase 2+ ✅
✅ DO: Core features that work really well
├─ Analysis (2 seconds, >85% accuracy)
├─ Accessibility (senior-focused)
├─ Education (3 scenarios + feedback)
└─ Family dashboard (basic visibility)
❌ DON'T: Nice-to-have features
├─ Mobile apps (Phase 4)
├─ Advanced analytics (Phase 3)
├─ Multi-language (Phase 3)
└─ White-label (Phase 3)
📍 GOAL: Perfect MVP for seniors + families
Not "half-baked for everyone"
Phase 1 (MVP):
- ✅ >5,000 senior users in 3 months
- ✅ >2,000 family members join
- ✅ >1,000 analyses/week
- ✅ 4.5+ star rating
- ✅ >60% monthly retention
Phase 2 (Engagement):
- ✅ >50,000 senior users
- ✅ >20,000 family members
- ✅ >10,000 analyses/week
- ✅ First institutional partnership
- ✅ >70% monthly retention
Phase 3+ (Scale):
- ✅ >250,000 senior users
- ✅ 10+ institutional partners
- ✅ White-label deployments
- ✅ Revenue ($500K+/year)
Document créé: 12 mars 2026 Responsable: Product Management Version: 1.0 Complete