---
stepsCompleted: [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]
inputDocuments:
  - _bmad-output/analysis/brainstorming-session-2026-01-09.md
  - docs/project-overview.md
  - docs/architecture-keep-notes.md
  - docs/data-models.md
workflowType: 'prd'
lastStep: 11
documentTitle: 'Phase 1 MVP AI - Memento'
focusArea: 'AI-Powered Note Taking Features'
status: 'complete'
completedAt: '2026-01-10'
---

# Product Requirements Document - Phase 1 MVP AI

**Project:** Memento
**Author:** Ramez
**Date:** 2026-01-10
**Focus:** Phase 1 MVP IA - AI-Powered Note Taking Features

## Executive Summary

**Memento Phase 1 MVP AI** transforme l'application de prise de notes existante en un **partenaire cognitif proactif** qui élimine la charge mentale liée à l'organisation, tout en préservant la simplicité et le contrôle total de l'utilisateur. S'appuyant sur l'architecture Next.js 16 + Prisma + SQLite existante, cette évolution ajoute une couche d'intelligence contextuelle conçue pour **suggérer et faciliter, sans jamais imposer**.

L'objectif est de créer un flux de travail où la capture reste instantanée, mais l'organisation est accélérée par une **IA qui comprend les relations entre les notes** et propose des connexions proactives. Le système comprend l'intention, mais l'utilisateur garde toujours la main via un pattern ON/OFF granulaire.

### What Makes This Special

**🚀 Zero-Friction Intelligence (Philosophie "Zéro Prise de Tête")**

Contrairement à Google Keep (pas d'IA) et Notion (IA à la demande et complexe), Memento Phase 1 introduit **trois innovations exclusives**:

1. **Contextual Smart Assistance** - Les fonctionnalités IA n'apparaissent que quand c'est pertinent:
   - Suggestions de titres uniquement après 10+ mots sans titre
   - Toast non-intrusive avec options "Voir | Plus tard | Ne plus demander"
   - L'utilisateur découvre les features naturellement sans être overwhelmed

2. **Hybrid Semantic Discovery** - Recherche unifiée qui "marche juste":
   - L'utilisateur ne sait pas si c'est des mots-clés ou du sens
   - Résultats avec badges: "Correspondance exacte" | "Correspondance sémantique"
   - **"Memory Echo"** - Connexions proactives entre notes liées (jusqu'à 1 insight/jour)

3. **Privacy-First Multi-Provider AI**:
   - Support Ollama (100% local, data ne quitte jamais l'infrastructure)
   - Support OpenAI (cloud option pour utilisateurs non-techniques)
   - Architecture multilingue: Prompts système en anglais, données utilisateur en langue locale

**🎯 The "Aha!" Moment: "I didn't search, it found me"**

Le différenciateur killer de Memento est **"Memory Echo"** - une feature qui révèle des connexions entre notes que l'utilisateur n'avait pas vues:

> 💡 *"I noticed something..."*
>
> *"You noted `[Node.js performance tips]` in January and `[Next.js optimization]` this week. These notes are connected - want me to link them?"*
>
> [View Connection] [Dismiss] [That's clever!]

Cela crée un moment unique où l'utilisateur réalise que Memento ne stocke pas seulement ses notes, mais **comprend ses connaissances** et les connecte proactivement.

**🌍 Multilingual Out-of-the-Box**

Architecture multilingue validée lors du brainstorming:
- Système: Prompts en anglais (stabilité des modèles)
- Données utilisateur: Détection automatique par note
- Pas besoin de configurer la langue - ça fonctionne nativement

**⚙️ Granular ON/OFF Control**

Respectant la philosophie "zéro prise de tête", chaque feature IA est contrôlable indépendamment:
- Settings IA avec checkboxes pour chaque fonctionnalité
- L'utilisateur peut désactiver ce qui ne lui convient pas
- Mode "Conservatif" (futur Phase 3) pour safety-first

### Project Success Vision

**Si Phase 1 réussit sauvagement, ce qui change pour les utilisateurs:**

- ✅ **"Je retrouve ce que j'ai oublié"** - Les connexions proactives rappellent des notes anciennes liées au travail actuel
- ✅ **"Je ne perds plus rien"** - Memento se souvient des relations même quand l'utilisateur oublie
- ✅ **"Je suis plus intelligent"** - Les connexions IA révèlent des patterns que l'utilisateur n'avait pas vus
- ✅ **"Je reste dans le flow"** - Pas besoin d'organiser manuellement, Memento le fait silencieusement

## Project Classification

**Technical Type:** web_app
**Domain:** general
**Complexity:** medium
**Project Context:** Brownfield - Extension intelligent avec focus UX

### Technical Context

**Existing Stack:**
- Next.js 16.1.1 (App Router) + React 19.2.3 + TypeScript 5
- Prisma 5.22.0 ORM + SQLite (better-sqlite3)
- Vercel AI SDK 6.0.23 + OpenAI/Ollama providers
- NextAuth 5.0.0-beta.30 (authentication)

**Current AI Capabilities (Already Implemented):**
- ✅ Auto-tagging with embeddings
- ✅ Multi-provider support (OpenAI, Ollama)
- ✅ Factory pattern for AI providers

**Phase 1 Additions:**
- Contextual title suggestions (3 options, no auto-generation)
- Enhanced semantic search with connection insights
- Paragraph-level reformulation (manual trigger)
- "Memory Echo" proactive connections (max 1 insight/day)

### Architecture Alignment

Phase 1 respects existing patterns:
- API Routes in `/api/ai/` namespace
- Components in shared structure
- Prisma schema extensions (not rewrites)
- Multilingual architecture (system prompts English, user data in local language)

### Competitive Positioning

| Feature | Google Keep | Notion | **Memento Phase 1** |
|---------|-------------|--------|---------------------|
| **Fast Capture** | ✅ Yes | ❌ No | ✅ **Yes** |
| **Integrated AI** | ❌ No | ⚠️ Paid/add-on | ✅ **Yes, native** |
| **Semantic Search** | ❌ No | ⚠️ Partial | ✅ **Yes, hybrid** |
| **Proactive Insights** | ❌ No | ❌ No | ✅ **EXCLUSIVE** |
| **Zero-Config** | ✅ Yes | ❌ No | ✅ **Yes** |
| **Privacy (Local)** | ❌ No | ❌ No | ✅ **EXCLUSIVE** |
| **Multilingual** | ⚠️ Limited | ⚠️ Limited | ✅ **Yes, native** |

## Success Criteria

### User Success

**1. Adoption "Aha!" Moment**

**Moment où l'utilisateur réalise que Memento est différent:**
- **Mesure:** % d'utilisateurs qui acceptent au moins une suggestion de titre dans les 7 premiers jours
- **Cible:** > 60% (si moins, les suggestions ne sont pas pertinentes)
- **Pourquoi:** Indique que les features IA sont découvertes et perçues comme utiles

**Délice avec Memory Echo:**
- **Mesure:** % d'utilisateurs qui cliquent sur "Voir la connexion" lors d'un insight proactif
- **Cible:** > 40% (montre que les connexions proactives ont de la valeur)
- **Pourquoi:** C'est le moment différenciant vs Google Keep/Notion

**2. Retrouvabilité "Je l'ai retrouvé!"**

**Capacité à retrouver des notes oubliées via recherche sémantique:**
- **Mesure:** % de recherches où la correspondance sémantique est dans le top 3 résultats
- **Cible:** > 30% des recherches complexes (non-mots-clés exacts)
- **Pourquoi:** La recherche sémantique doit retrouver ce que la recherche par mots-clés ne trouve pas

**Gain de temps de recherche:**
- **Mesure:** Temps moyen pour trouver une note connue vs. recherche mots-clés actuelle
- **Cible:** -40% de temps en moyenne
- **Pourquoi:** L'IA doit accélérer le workflow, pas le ralentir

**3. Confiance en l'IA "Je fais confiance"**

**Taux d'acceptation des suggestions:**
- **Mesure:** % de suggestions de titres acceptées vs. ignorées/modifiées
- **Cible:** > 50% acceptance rate
- **Pourquoi:** Si en dessous, l'IA ne comprend pas le contexte utilisateur

**Feedback positif Memory Echo:**
- **Mesure:** Ratio boutons 👍 sur 👎 pour les connexions proactives
- **Cible:** > 3:1 (3 positifs pour 1 négatif)
- **Pourquoi:** Les insights doivent être pertinents, pas du spam

**4. Qualité des Reformulations**

**Satisfaction reformulation:**
- **Mesure:** % de reformulations gardées telles quelles vs. annulées
- **Cible:** > 70% gardées
- **Pourquoi:** La reformulation doit améliorer le contenu, pas le dégrader

### Business Success

**Open Source Adoption (3 mois):**
- **GitHub Stars:** 100+ étoiles (indicateur d'intérêt communauté)
- **Utilisateurs Actifs Hebdomadaires (WAU):** 50+ utilisateurs actifs par semaine
- **Engagement:** 30% des utilisateurs reviennent chaque semaine (retention semaine 1 à semaine 4)

**Open Source Growth (12 mois):**
- **GitHub Stars:** 500+ étoiles
- **Contribution Communautaire:** Au moins 2 contributeurs externes soumettent des PRs
- **Traction:** Articles/blogs de mentionner Memento (indicateur de buzz organique)

**Freemium Readiness (Futur):**
- **Intent de paiement:** 5-10% des utilisateurs actifs cliquent sur "Buy me a coffee" (même sans payer, indique la valeur perçue)
- **Conversion potentielle:** Si activé, > 2% conversion freemium payant

**Métrique Ultime:**
- **"Wow, c'est génial, je vais le sponsoriser!"** - Si un utilisateur dit ça spontanément, c'est un succès business

### Technical Success

**Performance:**
- **Recherche sémantique:** < 300ms pour une base de 1000 notes
  - **Pourquoi:** Ne pas ralentir l'UX, l'utilisateur ne doit pas attendre
- **Suggestions titres:** < 2s après détection (10+ mots sans titre)
  - **Pourquoi:** Doit paraître "instantané" pour l'utilisateur
- **Memory Echo analysis:** Traitement en arrière-plan, blocage UI < 100ms
  - **Pourquoi:** L'utilisateur ne doit jamais sentir que l'IA "travaille"

**Architecture:**
- **Zero Breaking Change:** Toutes les features existantes continuent de fonctionner
  - **Pourquoi:** C'est un projet brownfield, on ne casse pas ce qui marche
- **Multi-Provider Support:** Ollama ET OpenAI fonctionnent sans changement de code
  - **Pourquoi:** Respecte la philosophie privacy-first + accessibilité
- **Multilingual Detection:** Fonctionne pour FR, EN, ES, DE minimum
  - **Pourquoi:** Architecture multilingue validée lors du brainstorming

**Qualité IA:**
- **Taux de fausses positives Memory Echo:** < 20%
  - **Pourquoi:** Au-dessus, c'est perçu comme du spam utilisateur
- **Suggestions titres pertinentes:** > 70% acceptation
  - **Pourquoi:** Les titres doivent capturer l'essence de la note
- **Hallucinations contrôlées:** < 5% des générations contiennent des erreurs factuelles
  - **Pourquoi:** Mode conservateur + score de confiance (Phase 3, mais préparer l'architecture)

### Measurable Outcomes

**Metrics Dashboard (à implémenter pour tracking):**

| Metric | Current | Phase 1 Target | Measurement Method |
|--------|---------|----------------|-------------------|
| Title suggestion acceptance | N/A | > 60% | Tracking accept/ignore |
| Semantic search top-3 hit rate | 0% | > 30% | Search analytics |
| Memory Echo CTR | N/A | > 40% | Insight click tracking |
| 👍👎 Feedback Ratio | N/A | > 3:1 | Feedback buttons |
| Avg search time improvement | Baseline | -40% | Time-to-find analytics |
| WAU (Week 4) | 0 | 50+ | Active user tracking |
| Week 1-4 retention | 0% | 30% | Cohort analysis |
| GitHub Stars (Month 3) | Current | +100 | GitHub API |
| Community contributors | 0 | 2+ | PR count |

## Product Scope

### MVP - Minimum Viable Product (Phase 1)

**Core User Journeys Supported:**
- Alex (Zero-friction note taker)
- Sarah (Self-hoster privée)
- Max (Local-first advocate)

**Must-Have Capabilities:**

**1. Intelligent Title Suggestions**
- Déclenchement automatique après 10+ mots sans titre
- Toast non-intrusive: "J'ai 3 idées de titres pour ta note, les voir?"
- 3 suggestions IA présentées en dropdown
- Options: "Voir" | "Plus tard" | "Ne plus demander"
- Détection langue automatique (FR, EN, ES, DE)

**2. Hybrid Semantic Search**
- Recherche unifiée (pas de distinction visible utilisateur)
- Badges sur résultats: "Correspondance exacte" | "Correspondance sémantique"
- Affichage top 10 résultats, mix mots-clés + sens
- Toggle IA dans Settings (ON/OFF granulaire)

**3. Paragraph-Level Reformulation**
- Menu "..." sur chaque note card
- Sous-menu "IA Assist" → "Réécrire paragraphe"
- Modal pour sélectionner paragraphe et choisir reformulation
- Options: "Clarifier", "Raccourcir", "Améliorer style"
- Bouton 👍👎 pour feedback

**4. Memory Echo (Proactive Connections) ⭐ DIFFÉRENCIATEUR**
- Analyse silencieuse en arrière-plan des embeddings existants
- **Max 1 insight proactif par jour** (configurable 0-3 dans Settings)
- Notification subtile: "J'ai remarqué quelque chose..."
- Affichage des 2 notes connectées avec option de lier
- Toggle ON/OFF dans Settings IA
- Boutons 👍👎 pour apprentissage

**5. AI Settings Panel**
- Page `/settings/ai` avec checkboxes ON/OFF pour chaque feature:
  - ☑ Suggestions de titres
  - ☑ Recherche sémantique
  - ☑ Reformulation
  - ☑ Memory Echo
- Slider pour fréquence Memory Echo (0-3 insights/jour)
- Sélection provider IA (Ollama/OpenAI) si configuré

**Technical Requirements:**
- API Routes: `/api/ai/titles`, `/api/ai/search`, `/api/ai/refactor`, `/api/ai/echo`
- Database: Extensions Prisma pour embeddings, language detection
- Components: `<AiSuggestion />`, `<AiSettingsPanel />`, `<MemoryEchoNotification />`
- Services: `ai.service.ts`, `embedding.service.ts`, `memory-echo.service.ts`

**Out of Scope (Explicitement Non-MVP):**
- Score de confiance visible (Phase 3)
- Système feedback 👍👎 généralisé (Phase 3)
- Mode conservateur (Phase 3)
- Description images OCR (Phase 2)
- Résumé URLs (Phase 2)
- Templates IA personnalisés (Phase 4)
- Transcription audio (Phase 4)

### Growth Features (Phase 2 - Post-MVP)

**Enhancement de l'expérience IA:**
- Description images + OCR (bouton sur image)
- Résumé URLs (extraction points clés)
- "Suggestions suites logiques" après chaque note
- Settings IA avancés (paramètres configurables par feature)
- Feedback learning amélioré (patterns utilisateur)

**Adoption & Engagement:**
- Onboarding IA pour nouveaux utilisateurs
- Tours guidés des features IA
- Analytics dashboard pour propriétaire

### Vision (Future - Phase 3+)

**Trust & Intelligence:**
- Score de confiance visible (transparence)
- Système feedback 👍👎 généralisé
- Mode conservateur (safety first)
- Détection langue auto améliorée (plus de langues)

**Advanced Features:**
- Transcription audio (notes vocales)
- Organisation auto (IA propose dossiers/catégories)
- Templates IA personnalisés (patterns utilisateur)
- Mode "Super IA" (optimisation complète note)

**Business Model:**
- Lancement freemium avec "Buy me a coffee"
- Features avancées payantes (Phase 4)
- Monétisation éthique sans lock-in

## User Journeys

### Journey 1: Alex - Le Déclic "Ça me comprend!"

**Alex**, Freelance Creative & Developer, 32 ans, Paris

**Persona:**
Alex travaille dans le chaos créatif. Il a des idées brillantes partout - dans le métro, pendant des réunions, à 3h du matin. Il utilise déjà Memento pour capturer ses pensées, mais il est frustré:

- "J'ai 300+ notes et je ne retrouve plus rien"
- "Je passe 20 min à chercher cette astuce CSS que j'ai notée le mois dernier"
- "Mes titres sont soit vides, soit 'Note 34' - pas inspirant"

**The Discovery (Opening Scene):**

Un lundi matin, Alex ouvre Memento pour continuer une note sur React qu'il a commencée la veille. Il tape frénétiquement, complètement focused sur son code - **pas le temps pour un titre**.

Soudain, une notification subtile apparaît:
> 💭 *"J'ai 3 idées de titres pour ta note, les voir?"*

Alex sourit - c'est non-intrusif. Il clique "Voir" et voit:
1. "React State Management: useMemo Optimization Pattern"
2. "Performance Hook Pattern pour Composants React"
3. "Astuce React: mémoisation avec useMemo"

**Le choix d'Alex:** "Wow, le premier capture exactement l'essence!" - Il clique pour l'appliquer.

**The Revelation (Rising Action):**

Deux jours plus tard, Alex cherche cette note. Au lieu de taper "React useMemo" (le titre exact), il tape naturellement: *"comment optimiser les performances des hooks"*

Memento lui montre 10 résultats. Les 3 premiers ont un badge 🎯 **"Correspondance sémantique"**. Le premier est SA note - elle ne contient même pas les mots "hook" ou "performance" dans le texte, mais l'IA a compris le sens!

**The "Aha!" Moment (Climax):**

Une semaine passe. Alex reçoit une notification inattendue:
> 💡 *"J'ai remarqué quelque chose..."*
>
> *"Tu as noté `[Node.js performance tips]` en janvier et `[Optimisation Next.js]` cette semaine. Ces notes sont connectées - veux-tu que je les lie ?"*

Alex clique "Voir la connexion" - son souffle coupé. Les deux notes traitent toutes les deux de... **server-side rendering optimization**. Il n'avait jamais fait le lien!

**The Transformation (Resolution):**

Trois mois plus tard:
- Alex a 400+ notes, mais il les retrouve **instantanément**
- Il accepte 80% des suggestions de titres (économie de temps massive)
- Memory Echo lui a fait découvrir 12 connexions entre ses notes
- **"C'est comme si j'avais un assistant de recherche personnel qui lit tout ce que j'écris"**

**Journey Requirements Revealed:**
- Détection intelligente du moment opportun (10+ mots sans titre)
- Recherche sémantique qui comprend l'intention, pas juste les mots
- Memory Echo avec fréquence contrôlable (pas spam)
- Feedback utilisateur pour apprentissage (👍👎)

---

### Journey 2: Max - "Mes données ne quittent jamais mon laptop"

**Max**, Privacy Advocate & Software Engineer, 28 ans, Berlin

**Persona:**
Max est passionné par la privacy. Il utilise déjà Memento avec Next.js en local sur sa machine, mais il est:

- **Sceptique:** "Pourquoi une IA devrait lire mes notes personnelles?"
- **Exigeant:** "Si une seule donnée quitte mon laptop, je désinstalle"
- **Technique:** Il a Ollama installé avec des modèles locaux

**The Discovery (Opening Scene):**

Max lit sur le blog Memento qu'il y a maintenant des features IA. Son premier réflexe: **méfiance**.

Il va dans Settings > AI et voit:
- ☑ Use AI Provider: [Ollama (Local) | OpenAI Cloud]
- Checkbox: "🔒 Keep all AI processing local (Ollama only)"
- Un message rassurant: *"With Ollama, your note data never leaves your device. Embeddings and processing happen entirely on your machine."*

Max soulagé, coche la case Ollama. Il voit un indicateur de statut: *"✅ Connected to local Ollama at http://localhost:11434"*

**The First Test (Rising Action):**

Max crée une note sur une architecture système qu'il conçoit pour un client. 60 mots plus tard, la suggestion de titre apparaît.

Il hésite... puis clique "Voir". Les 3 suggestions apparaissent instantanément (< 1s). Il choisit la troisième.

**The Verification (Climax):**

Curieux, Max ouvre les DevTools réseau pour vérifier:
- **0 appels vers des API externes** (pas d'OpenAI, pas de Google)
- Juste des appels locaux vers `localhost:11434` (Ollama)

Il sourit: *"Bon, ils ont tenu parole. Vraiment local."*

**The Memory Echo Experience (The Real Test):**

Une semaine plus tard, Max reçoit son premier Memory Echo:
> 💡 *"J'ai remarqué quelque chose..."*
>
> *"Tu as noté `[Microservices patterns]` et `[Event-driven architecture]`. Ces notes sont liées."*

Max clique "Voir la connexion" - et réalise que l'IA a fait le lien entre deux notes qu'il a écrites à 2 mois d'intervalle. Le plus fou? **Tout s'est passé localement.**

Il clique 👍 ("That's clever!"). Le système apprend.

**The Transformation (Resolution):**

Deux mois plus tard:
- Max a accepté 65% des suggestions de titres (elles sont vraiment pertinentes!)
- Il a désactivé Memory Echo à 0 (il préfère chercher manuellement)
- **"L'IA locale est aussi intelligente que le cloud, mais sans compromis privacy"**
- Il recommande Memento sur Reddit: *"Seul app de notes avec IA 100% locale et zéro telemetry"*

**Journey Requirements Revealed:**
- Configuration Ollama fonctionnelle out-of-the-box
- Détection automatique du provider Ollama local
- Indicateurs de statut de connexion IA
- Zero data exfiltration (tous les appels sont locaux)
- Toggle granulaire pour chaque feature IA (Max a désactivé Memory Echo)
- Performance locale acceptable (pas plus lent que le cloud)

---

### Journey 3: Léa - Admin Système "Zero Maintenance"

**Léa**, DevOps Engineer, 35 ans, Lyon - Admin de l'instance Memento de son équipe de 15 développeurs

**Persona:**
L'équipe de Léa utilise Memento pour partager des connaissances techniques. Elle a déployé Memento sur leur serveur interne. Maintenant avec les features IA, elle doit:

- Configurer les providers IA pour l'équipe
- Surveiller les coûts et la performance
- Gérer les utilisateurs qui ont des problèmes

**Initial Configuration (Opening Scene):**

Léa accède à `/settings/ai` (admin-only). Elle voit:

**Team AI Configuration:**
- Default AI Provider: [OpenAI Team API | Ollama Self-hosted | Custom]
- API Key Management: [Add team keys] (chiffrées en base)
- Per-user limits: Max embeddings per day, Max Memory Echo insights

Elle configure:
- Provider: OpenAI Team API (clé d'équipe partagée)
- Rate limits: 100 embeddings/jour/utilisateur
- Memory Echo: Max 1 insight/jour par utilisateur (pour éviter l'overwhelm)

**Monitoring (Rising Action):**

Dans le nouveau Dashboard Admin, Léa voit des métriques IA en temps réel:
- AI Usage Today: 1,247 embeddings générés
- Average Response Time: 180ms
- Top Feature Used: Title Suggestions (78%)
- Memory Echo Feedback Ratio: 4.2:1 👍/👎 (excellent!)

**The Problem (Climax):**

Un développeur (Thomas) se plaint: *"L'IA me suggère des titres en anglais alors que j'écris en français!"*

Léa va dans User Settings de Thomas et voit:
- Language Detection: Auto ✅
- Last Detected Language: FR (français)
- **Mais:** Le modèle utilisé a tendance à suggérer en anglais

Elle ajuste la config pour Thomas: Force language = FR, et augmente la température du modèle pour plus de créativité en français.

**The Optimization (Resolution):**

Un mois plus tard:
- L'équipe a généré 45,000 embeddings (coût OpenAI: ~$12/mois - gérable!)
- Léa a ajusté les settings basés sur les analytics:
  - Memory Echo limité à 2/sem pour les utilisateurs power-users
  - Titre suggestions activées par défaut (80% d'acceptation!)
- **"L'IA booste la productivité de l'équipe sans moi passer du temps à configurer"**

**Journey Requirements Revealed:**
- Admin dashboard avec métriques IA en temps réel
- Configuration par utilisateur ou par défaut d'équipe
- Gestion des clés API chiffrées
- Rate limiting par utilisateur
- Surveillance des coûts IA
- Ajustement des paramètres par utilisateur (langue, température, etc.)
- Analytics d'utilisation pour optimiser les settings

---

### Journey 4: Sophie - Quand l'IA se trompe

**Sophie**, Content Marketing Manager, 29 ans, Bordeaux - Utilisatrice régulière de Memento

**Persona:**
Sophie utilise Memento pour organiser ses idées de contenu. Elle est enthousiaste à l'idée des features IA, mais... elle va rencontrer des problèmes.

**The First Problem (Opening Scene):**

Sophie écrit une note sur une idée d'article. 70 mots plus tard, la suggestion de titre apparaît. Excitée, elle clique "Voir" et voit:

1. "Stratégie de Contenu B2B: Guide Complet"
2. "Marketing B2B: Plan d'Action 2025"
3. "Idées Articles: Marketing de Contenu"

Sophie déçoitée: *"None of these capture my idea at all!"*

Elle clique "Ne plus demander" pour cette note. Le système respecte son choix.

**The Second Problem - Memory Echo (Rising Action):**

Le lendemain, Sophie reçoit une Memory Echo:
> 💡 *"J'ai remarqué quelque chose..."*
>
> *"Tu as noté `[Recettes de smoothies]` et `[Stratégie SEO]`. Ces notes sont connectées."*

Sophie confuse: *"What? These have nothing to do with each other!"*

Elle clique 👎 ("Faux") - et un modal apparaît:
> *"Merci pour ton feedback! Pourquoi cette connexion n'est-elle pas pertinente?"*

Sophie explique: *"Les recettes de smoothies sont pour ma vie personnelle, le SEO c'est pro. Pas de rapport."*

Le système apprend.

**The Recovery (Climax):**

Sophie va dans Settings > IA et voit:
- Title Suggestions: ☑ Activé
- Memory Echo: ☑ Activé (Max 1/jour)

Elle décide d'ajuster:
- Title Suggestions: Activé, mais **"Me demander seulement si je dépasse 100 mots"** (elle a besoin de plus de contexte)
- Memory Echo: Activé, mais **"Seulement pour les notes des 30 derniers jours"** (éviter les connexions avec des notes anciennes)

**The Return to Trust (Resolution):**

Une semaine plus tard, Sophie écrit un long article (200+ mots). Cette fois, les suggestions de titres sont:
1. "Content Marketing: Comment créer du contenu qui convertit"
2. "Guide Marketing de Contenu: De la stratégie à l'exécution"
3. "Stratégie de Contenu: Les 5 piliers du marketing B2B"

Sophie sourit: *"Number 3 is perfect!"* - Elle clique pour l'appliquer.

Pour Memory Echo, elle reçoit une connexion entre deux notes sur le marketing (toutes deux des 30 derniers jours). Cette fois, elle clique 👍 ("That's clever!")!

**The Transformation:**

Un mois plus tard:
- Sophie a personnalisé ses settings IA selon ses préférences
- Elle accepte maintenant **55% des suggestions** (en hausse!)
- Son feedback 👎 a aidé le système à mieux comprendre son contexte
- **"L'IA n'est pas parfaite, mais je peux la configurer pour mes besoins"**

**Journey Requirements Revealed:**
- Bouton "Ne plus demander" respecté immédiatement
- Feedback 👎 avec modal pour comprendre **pourquoi** c'est faux
- Settings IA personnalisables par utilisateur (seuil de mots, période Memory Echo)
- Système d'apprentissage qui s'améliore avec le feedback
- Bouton d'annulation (undo) pour les suggestions appliquées par erreur
- Mode "conservateur" pour réduire les fausses positives

---

### Journey Requirements Summary

**Core Requirements Across All Journeys:**

**1. Intelligent & Contextual Triggers**
- Detection automatique des moments opportuns (50+ mots sans titre)
- Toast notifications non-intrusives avec options "Voir | Plus tard | Ne plus demander"
- Respect immédiat du choix utilisateur

**2. Hybrid Semantic Search**
- Recherche unifiée (pas de distinction visible)
- Badges sur résultats: "Correspondance exacte" | "Correspondance sémantique"
- Compréhension de l'intention utilisateur, pas juste mots-clés

**3. Memory Echo (Proactive Connections)**
- Fréquence configurable 0-3 insights/jour
- Période configurable (notes des X derniers jours)
- Connexions pertinentes (faux positifs < 20%)

**4. Privacy-First Architecture**
- Support Ollama local 100% fonctionnel
- Zéro appel API externe en mode local
- Indicateurs de statut de connexion IA
- Performance locale acceptable (< 1s suggestions)

**5. Granular User Control**
- Settings IA avec checkboxes ON/OFF par feature
- Personnalisation par utilisateur (seuil mots, période Memory Echo, etc.)
- Boutons 👍👎 pour feedback et apprentissage
- Bouton "Ne plus demander" immédiat

**6. Admin & Operations**
- Admin dashboard avec métriques IA temps réel
- Configuration par défaut d'équipe + overrides par utilisateur
- Gestion clés API chiffrées
- Rate limiting par utilisateur
- Surveillance coûts IA
- Analytics d'utilisation pour optimiser les settings

**7. Error Recovery & Learning**
- Feedback 👎 avec modal explicatif
- Système apprentissage avec feedback utilisateur
- Bouton annulation (undo) pour les suggestions appliquées
- Mode conservateur pour réduire fausses positives (Phase 3)
- Ajustement paramètres par utilisateur (langue, température, etc.)

## Innovation & Novel Patterns

Memento Phase 1 introduces **two major innovations** that radically differentiate the application from existing solutions like Google Keep and Notion.

### Innovation 1: Memory Echo - "I Didn't Search, It Found Me" ⭐

**The Breakthrough:**

Memory Echo inverse le paradigme traditionnel de la recherche d'information. Au lieu de demander à l'utilisateur de penser à chercher, l'IA **pense pour lui** en identifiant proactivement les connexions entre des notes que l'utilisateur n'avait pas vues.

**Why This Is Revolutionary:**

| Traditional Apps (Google Keep, Notion) | **Memento with Memory Echo** |
|----------------------------------------|------------------------------|
| **Reactive** - User must think to search | **Proactive** - AI finds connections automatically |
| User queries → System retrieves | System surfaces → User discovers |
| "I hope I find that note..." | "I didn't even know these were related!" |
| Discoverability depends on user memory | Discoverability enhanced by AI intelligence |

**The Insight:**

Most knowledge workers have hundreds or thousands of notes but forget the connections between them. A note written in January about "Node.js performance" might be directly relevant to a note written in June about "Next.js optimization" - but the user never makes the link.

Memory Echo solves this by:
- **Analyzing existing embeddings** for semantic similarity patterns
- **Identifying cross-temporal connections** (notes written days/weeks/months apart)
- **Surfacing one insight per day maximum** (configurable 0-3)
- **Learning from user feedback** (👍👎 buttons improve future suggestions)

**Market Context:**

- **Obsidian** has graph view and backlinks - but requires manual user action
- **Roam Research** has suggestions - but only highlights explicit keyword overlaps
- **Notion AI** - can search semantically but doesn't suggest proactively
- **Memento** - first to combine proactive discovery + semantic understanding + user feedback loop

**Validation Approach:**

**Technical Validation:**
- Cosine similarity threshold > 0.75 (ensures meaningful connections)
- Time diversity filter: Notes must be from different time periods (avoid same-session duplicates)
- Context relevance: Exclude obvious connections (identical keywords/categories)

**UX Validation:**
- Frequency limit: Max 1 insight/day (prevents overwhelming users)
- User control: Slider for 0-3 insights/day, complete ON/OFF toggle
- Feedback loop: 👍👎 buttons train the system on user preferences

**Success Criteria:**
- 👍👎 feedback ratio > 3:1 (3 positive for 1 negative)
- CTR (Click-Through Rate) > 40% (users click "View Connection")
- User retention: Users who engage with Memory Echo show 30% higher week-4 retention

**Risk Mitigation:**

**Risk 1: "Connections feel random/spammy"**
- **Mitigation:** High similarity threshold (0.75), conservative by default
- **Fallback:** User can set frequency to 0 (disable completely)

**Risk 2: "I already knew these were related"**
- **Mitigation:** Focus on cross-temporal connections (notes far apart in time)
- **Enhancement:** Add serendipity factor (connections user likely missed)

**Risk 3: Performance impact from analysis**
- **Mitigation:** Background processing, non-blocking UI
- **Target:** Analysis completes in < 100ms UI freeze time

**Competitive Moat:**

Memory Echo is difficult to copy because it requires:
1. **Existing embeddings** from user's notes (incumbents don't have this data)
2. **Feedback learning system** (requires engineering investment)
3. **Conservative-by-default philosophy** (most AI companies are aggressive)
4. **Privacy-first architecture** (local processing possible with Ollama)

---

### Innovation 2: Contextual AI "Zero-Friction" Pattern

**The Breakthrough:**

Memento introduces a new interaction pattern for AI features: **context-aware appearance**. The AI doesn't demand attention (always-visible toolbar) nor hide completely (buried in menus) - it appears **only when contextually appropriate**.

**Why This Is Revolutionary:**

| Current AI Apps | **Memento Contextual AI** |
|-----------------|---------------------------|
| Always-visible toolbars (overwhelming) | Appears when relevant |
| Hidden in menus (hard to discover) | Non-intrusive toast notifications |
| All features active simultaneously | Single interaction at a time |
| User manages complexity | System manages complexity |

**The Pattern:**

**Example 1 - Title Suggestions:**
- **Trigger:** User writes 10+ words without a title
- **Appearance:** Subtle toast: "I have 3 title ideas for this note, view them?"
- **Options:** "View" | "Not now" | "Don't ask for this note"
- **Outcome:** Feature discovered naturally, not overwhelming

**Example 2 - Reformulation:**
- **Trigger:** User opens "..." menu on a note card
- **Appearance:** "AI Assist" → "Rewrite paragraph" (intentional, not disruptive)
- **Context:** User is already in editing mode, so AI suggestion fits naturally

**Example 3 - Memory Echo:**
- **Trigger:** Background analysis finds strong connection
- **Appearance:** Once per day max (configurable)
- **Priority:** If multiple AI interactions possible, Memory Echo takes precedence

**The Insight:**

The "zero-friction" philosophy means:
- **Zero cognitive load** - User doesn't need to remember where features are
- **Zero interruption** - AI never overwhelms with multiple simultaneous requests
- **Zero learning curve** - Features are discovered when needed
- **Zero lock-in** - Every feature can be disabled independently

**Market Context:**

- **Notion AI** - AI features hidden in "/ai" command (hard to discover)
- **Obsidian Copilot** - Sidebar always visible (can be distracting)
- **Memento** - Contextual appearance balances discoverability with non-intrusiveness

**Scalability Strategy:**

As AI features grow (Phase 2: Image OCR, URL summaries, etc.), the pattern scales via:

**1. Single-Interaction Rule:**
```
IF (title_suggested AND memory_echo_pending):
  Show Memory Echo (higher value)
  Defer title suggestion to next trigger
```

**2. Priority Hierarchy:**
```
Priority 1: Memory Echo (proactive discovery)
Priority 2: Title suggestions (capture value)
Priority 3: Reformulation (enhancement)
Priority 4: URL summaries, OCR, etc. (nice-to-have)
```

**3. "Focus Mode" Toggle:**
- User can disable ALL proactive AI temporarily
- Perfect for deep work sessions
- One-click re-enable when ready

**Validation Approach:**

**UX Validation:**
- A/B test trigger thresholds (50 words vs. 75 vs. 100)
- Measure "accept/ignore" ratio per feature
- Track user settings changes (if users disable, adjust defaults)

**Success Criteria:**
- Feature discovery rate > 70% (users find features without tutorial)
- Feature acceptance rate > 50% (users accept suggestions when offered)
- Overwhelm rate < 5% (users rarely disable all AI features)

**Risk Mitigation:**

**Risk 1: "Users never discover features"**
- **Mitigation:** Progressive disclosure - show more prominently after first use
- **Fallback:** Optional onboarding tour for AI features

**Risk 2: "Too many features become overwhelming"**
- **Mitigation:** Single-interaction rule enforced at UX level
- **Fallback:** "Focus Mode" to disable all proactive AI

**Risk 3: "Context detection fails"**
- **Mitigation:** Conservative triggers (better to miss than to annoy)
- **Fallback:** Manual trigger in settings for all features

**Competitive Moat:**

This interaction pattern is difficult to copy because it requires:
1. **Philosophical commitment** to user-centric design (most AI companies prioritize engagement over UX)
2. **Engineering discipline** to build context-aware triggers
3. **User feedback loops** to refine triggers over time
4. **Multi-feature coordination** (preventing feature conflicts)

---

## Why These Innovations Matter

**Combined Impact:**

Memory Echo (proactive discovery) + Contextual AI (respectful interaction) create a **new paradigm for AI-assisted knowledge management**:

1. **AI as Partner, Not Tool** - The system thinks with you, not just for you
2. **Serendipity at Scale** - Discover connections you'd never find manually
3. **Zero-Friction Intelligence** - AI enhances without interrupting
4. **Privacy-First** - All innovations work locally via Ollama

**The "Aha!" Moment:**

When users experience Memory Echo discovering a connection they missed, they realize:
> *"This isn't just a note-taking app. It's a partner that understands my knowledge better than I do."*

This creates emotional lock-in that features alone cannot achieve.

## Web App Specific Requirements

### Project-Type Overview

Memento is a **Single Page Application (SPA)** built with Next.js 16 App Router, combining server-side rendering (SSR) for performance with client-side navigation for fluid user experience. Phase 1 MVP AI focuses on **progressive enhancement** - AI features add value without breaking existing core functionality.

### Browser Support Matrix

**Primary Target (Modern Browsers):**

| Browser | Minimum Version | Rationale |
|---------|-----------------|-----------|
| Chrome/Edge | 120+ (Jan 2024) | Chromium engine, latest APIs |
| Firefox | 120+ (Jan 2024) | Gecko engine, modern JS |
| Safari | 17+ (Sep 2023) | WebKit engine, macOS/iOS |
| Mobile Safari | iOS 17+ | iPhone/iPad support |

**Technical Approach:**
- **No polyfills** - Use modern JavaScript features (ES2023+, CSS Grid, Flexbox)
- **Feature detection** - Graceful degradation if APIs unavailable
- **Progressive enhancement** - Core features work without JavaScript if possible

**Out of Scope (Explicit):**
- IE11 or legacy browsers - Too much technical debt for Phase 1
- Opera Mini or other niche browsers - < 0.1% market share
- Android < 10 - Too old for modern web APIs

**Rationale:**
- Memento targets tech-savvy users (developers, knowledge workers)
- Modern browser usage > 95% in target demographics
- Reduces bundle size and technical complexity

---

### Responsive Design Strategy

**Breakpoint Strategy (Mobile-First):**

```
Mobile First:     320px - 639px   (Smartphones)
Tablet:          640px - 1023px  (iPad, tablets)
Desktop:         1024px - 1439px (Laptops)
Desktop Wide:     1440px+         (Large monitors)
```

**AI Feature Adaptation:**

| Feature | Mobile | Tablet | Desktop |
|---------|--------|--------|---------|
| Title suggestions toast | Bottom sheet | Bottom-right toast | Top-right toast |
| Memory Echo notification | Full-width banner | Top-right card | Sidebar card |
| Reformulation modal | Full-screen | Modal | Side panel |
| Search results | Single column | 2 columns | 3 columns + filters |

**Touch Targets (WCAG 2.1 AA):**
- Minimum tap target size: 44×44px (mobile)
- Spacing between targets: 8px minimum
- AI buttons (👍👎) must be tappable without zoom

---

### Performance Targets

**Critical Performance Metrics (Phase 1):**

| Metric | Target | Measurement Method |
|--------|--------|-------------------|
| **Title Suggestions Generation** | < 2s | Time from trigger to display |
| **Semantic Search** | < 300ms | Time from query to results |
| **Memory Echo Analysis** | < 100ms UI freeze | Background processing time |
| **Initial Page Load** | < 3s (FCP) | First Contentful Paint |
| **Time to Interactive** | < 5s (TTI) | Full app interactivity |

**Performance Budget:**
- **JavaScript bundle:** < 200KB gzipped (excluding AI providers)
- **CSS:** < 50KB gzipped
- **First paint:** < 1.5s on 4G connection

**Optimization Strategies:**
1. **Code splitting:** AI features loaded on-demand (not in initial bundle)
2. **Lazy loading:** Components loaded when needed
3. **ISR (Incremental Static Regeneration):** Pre-render pages, revalidate in background
4. **Image optimization:** Next.js Image component with WebP/AVIF
5. **AI processing:** Always background, never block main thread

**Monitoring:**
- Core Web Vitals tracked in production
- Performance regression tests in CI/CD
- Real User Monitoring (RUM) for actual usage data

---

### SEO Strategy

**Approach:** SEO is **not critical** for Phase 1 MVP AI because:

1. **Authentication Required** - Main app is behind login (no public content)
2. **B2C Community-Driven** - Growth through word-of-mouth, not organic search
3. **Privacy-First** - Users prefer private apps over discoverable ones

**SEO for Public Pages Only:**

**Public Pages Requiring SEO:**
- Landing page (`/`) - Product overview, features
- Documentation (`/docs`) - User guides, API docs
- Blog (future) - Content marketing

**SEO Best Practices for Public Pages:**
- Meta tags (title, description, Open Graph)
- Structured data (JSON-LD for rich snippets)
- Sitemap auto-generation
- Robots.txt configuration
- Canonical URLs for duplicate content prevention

**AI Features NO-INDEX:**
- All authenticated pages behind login
- User-generated content (notes, labels)
- Search results, dashboards
- AI-generated content (titles, suggestions)

**Rationale:** Prevent search engines from indexing private user data and AI-generated content.

---

### Accessibility Level (WCAG 2.1 AA)

**Target:** **WCAG 2.1 Level AA** for Phase 1

**AI Feature Accessibility Requirements:**

**1. Title Suggestions:**
- Toast must announce: "3 title suggestions available" to screen readers
- Each suggestion must be keyboard navigable (Arrow keys + Enter)
- Visual focus indicators on all interactive elements

**2. Memory Echo Notifications:**
- Must NOT interrupt screen reader navigation
- Use `role="status"` (not `role="alert"`) for non-critical notifications
- Provide mechanism to dismiss without activating (ESC key)

**3. Semantic Search:**
- Results must be announceable: "5 results found, 3 semantic matches"
- Badges must be descriptive: "Semantic match" (not just icons)
- Keyboard shortcuts for advanced users (Cmd+K for search)

**4. Reformulation Modal:**
- Focus trap in modal (Tab cycles within modal only)
- ESC to close, Enter to confirm
- Progress indicators for AI processing (ARIA live regions)

**Color Contrast:**
- All text: Minimum 4.5:1 contrast ratio (WCAG AA)
- AI UI elements (buttons, badges): 3:1 contrast ratio for large text
- Focus indicators: 3:1 contrast ratio against background

**Testing:**
- Automated testing: axe-core DevTools, WAVE browser extension
- Manual testing: Keyboard-only navigation, screen reader testing (NVDA/JAWS)
- User testing: Include users with disabilities in beta testing

**Accessibility Success Metrics:**
- All AI features usable without mouse
- Zero keyboard traps in AI modals/toasts
- Screen reader compatibility > 90% (NVDA, JAWS, VoiceOver)

---

### Technical Architecture Considerations

**Next.js 16 App Router Patterns:**

**1. Server Components (RSC) for Performance:**
- Note list, search results as Server Components
- AI features as Client Components (need interactivity)
- Hybrid approach: Static shell + dynamic AI content

**2. Streaming for AI Responses:**
- Use Suspense + streaming for slow AI features
- Progressive loading: Show skeleton → partial results → complete results
- Example: Semantic search streams results as they're computed

**3. Error Boundaries:**
- Graceful degradation if AI features fail
- User-friendly error messages (not technical jargon)
- Retry mechanisms with exponential backoff

**4. Caching Strategy:**
- Embeddings cached in database (not regenerated)
- AI responses cached per note (TTL: 24 hours)
- Search results cached for 5 minutes (user-specific)

**Data Flow Architecture:**

```
User Action → Client Component → Server Action → AI Provider
                    ↓              ↓              ↓
                UI Update      Prisma DB      Embedding Generation
                    ↓              ↓
                Display       Cache Store
```

**State Management:**
- Server State: Prisma + Server Actions (no separate API layer needed)
- Client State: React hooks (useState, useTransition)
- AI State: Server Actions with progressive enhancement

---

### Implementation Considerations

**Phase 1 MVP Scope:**

**IN Scope:**
- Responsive design for mobile/tablet/desktop
- WCAG 2.1 AA compliance
- Performance targets met (< 2s titles, < 300ms search)
- Modern browsers only (Chrome 120+, Firefox 120+, Safari 17+)
- Basic SEO for landing page only

**OUT of Scope (Phase 2+):**
- PWA capabilities (offline mode, install prompt)
- Real-time features (WebSocket, live updates)
- Legacy browser support (IE11, old Safari)
- Advanced SEO (blog, content marketing)
- Accessibility AAA (full compliance)

**Technical Debt to Avoid:**
- Skipping accessibility for "speed" (creates debt later)
- Hardcoding for desktop only (mobile-first approach)
- Blocking UI for AI processing (always background)
- Ignoring performance monitoring (leads to regressions)

## Project Scoping & Phased Development

### MVP Strategy & Philosophy

**MVP Approach:** **Problem-Solving + Experience Hybrid**

Memento Phase 1 MVP IA combines two MVP philosophies:

**1. Problem-Solving MVP:**
- **Core Problem:** "J'ai des centaines de notes et je ne retrouve plus rien"
- **Solution:** Recherche sémantique + suggestions de titres
- **Value:** Utilité immédiate - l'utilisateur retrouve ses notes instantanément

**2. Experience MVP:**
- **Core Experience:** Le moment "Aha!" - "Je n'ai pas cherché, elle m'a trouvée"
- **Solution:** Memory Echo (connexions proactives)
- **Value:** Différenciation unique - innovation que personne n'a

**Resource Requirements:**
- **Team Size:** 1-2 developers (possible pour side project)
- **Timeline:** 8-12 semaines pour MVP complet
- **Skills:** Next.js, Prisma, AI integration (OpenAI/Ollama), Vector embeddings
- **Infrastructure:** Vercel/Netlify (zero DevOps), SQLite database, Ollama optionnel

**Launch Strategy:**
- **Private Beta:** 10-20 early adopters (friends, colleagues)
- **Public Beta:** Open source release with "Beta" badge
- **Growth:** Word-of-mouth, Reddit (r/NoteTaking, r/SideProject), HackerNews

---

### MVP Feature Set (Phase 1)

**Core User Journeys Supported:**

✅ **Journey 1: Alex (Primary User - Success Path)**
- Title suggestions when writing 10+ words
- Semantic search finds notes by meaning
- Memory Echo reveals hidden connections
- Complete workflow: capture → search → discover

✅ **Journey 2: Max (Privacy-First)**
- Ollama local AI processing 100% functional
- Zero data exfiltration (verified in DevTools)
- All features work offline (local provider)

✅ **Journey 4: Sophie (Edge Case)**
- Customizable AI settings (thresholds, frequencies)
- Feedback learning from 👎 responses
- Granular ON/OFF control per feature

**Must-Have Capabilities (MVP):**

**1. Intelligent Title Suggestions**
- Déclenchement automatique après 10+ mots sans titre
- Toast notification non-intrusive avec options "Voir | Plus tard | Ne plus demander"
- 3 suggestions IA générées en < 2s
- Application one-click ou saisie manuelle
- Détection langue automatique (FR, EN, ES, DE)

**2. Hybrid Semantic Search**
- Recherche unifiée (pas de distinction visible utilisateur)
- Badges sur résultats: "Correspondance exacte" | "Correspondance sémantique"
- Affichage top 10 résultats mixés (mots-clés + sémantique)
- Performance < 300ms pour 1000 notes
- Toggle ON/OFF dans Settings IA

**3. Paragraph-Level Reformulation**
- Menu "..." sur chaque note card → "IA Assist" → "Réécrire paragraphe"
- Modal pour sélectionner paragraphe
- Options: "Clarifier", "Raccourcir", "Améliorer style"
- Boutons 👍👎 pour feedback

**4. Memory Echo (Proactive Connections) ⭐ DIFFÉRENCIATEUR**
- Analyse silencieuse en arrière-plan des embeddings existants
- **Max 1 insight proactif par jour** (configurable 0-3)
- Notification: "J'ai remarqué quelque chose..." avec 2 notes connectées
- Boutons "View Connection" | "Dismiss" | 👍👎
- Cosine similarity threshold > 0.75
- Time diversity filter (notes de périodes différentes)

**5. AI Settings Panel**
- Page `/settings/ai` avec checkboxes ON/OFF pour chaque feature:
  - ☑ Title Suggestions
  - ☑ Semantic Search
  - ☑ Reformulation
  - ☑ Memory Echo
- Slider pour fréquence Memory Echo (0-3 insights/jour)
- Sélection provider IA: [Ollama (Local) | OpenAI Cloud]
- Indicateurs de statut de connexion IA

**6. Multi-Provider AI Support**
- Ollama local (http://localhost:11434)
- OpenAI API (cloud option)
- Factory pattern pour extensibilité
- Fallback automatique si provider unavailable

**7. Privacy & Control**
- Zéro appel API externe en mode Ollama (vérifiable)
- Boutons feedback 👍👎 pour apprentissage
- Bouton "Ne plus demander" immédiat
- Personnalisation par utilisateur (seuil mots, période Memory Echo)

**Out of Scope (Explicitly Non-MVP):**
- Score de confiance visible (Phase 3)
- Système feedback généralisé (Phase 3)
- Mode conservateur (Phase 3)
- Description images OCR (Phase 2)
- Résumé URLs (Phase 2)
- Templates IA personnalisés (Phase 4)
- Transcription audio (Phase 4)
- Admin dashboard avancé (Phase 2)
- Analytics d'utilisation IA (Phase 2)

---

### Post-MVP Features

**Phase 2 (Post-MVP - Enhancement & Scale):**

**Timeframe:** 3-6 months post-MVP launch

**Additional User Types:**
- Journey 3: Léa (Admin Système) avec dashboard IA
- Power Users avec plus de 1000 notes

**Enhanced IA Features:**
- **Description Images + OCR**
  - Bouton IA sur images dans notes
  - Génération description automatique
  - Extraction texte (OCR)

- **Résumé URLs**
  - Détection automatique URLs dans notes
  - Bouton "Résumer" pour extraire points clés
  - Choix: résumé court vs. analyse détaillée

- **Suggestions Suites Logiques**
  - Après chaque note, IA suggère "Idées de suite"
  - Basé sur le contenu de la note actuelle

- **AI Settings Avancés**
  - Paramètres configurables par feature (température, max tokens, etc.)
  - Ajustement par utilisateur (langue force, créativité)

- **Admin Dashboard IA**
  - Métriques temps réel (usage today, avg response time)
  - Surveillance coûts IA (OpenAI billing estimation)
  - Ajustement settings par utilisateur (admin overrides)

- **Onboarding IA**
  - Tour guidé pour nouveaux utilisateurs
  - Discovery progressif des features IA

**Success Criteria Phase 2:**
- 500+ GitHub stars
- 200+ WAU (Weekly Active Users)
- Week 1-4 retention > 40%

---

**Phase 3 (Expansion - Trust & Intelligence):**

**Timeframe:** 6-12 months post-MVP

**Trust & Transparency:**
- **Score de Confiance Visible**
  - Pourcentage affiché pour chaque génération IA
  - >90% = ✅ Solide (auto-application)
  - 70-89% = ⚠️ Moyen (à vérifier)
  - <70% = ❌ Faible (pas d'auto-génération)

- **Système Feedback Généralisé**
  - Boutons 👍👎 sur TOUTES les générations IA
  - Modal explicatif pour feedback 👎 ("Pourquoi c'est faux?")
  - Apprentissage automatique (patterns utilisateur)

- **Mode Conservateur (Safety First)**
  - Générations auto seulement si confiance >90%
  - Si doute: IA demande confirmation utilisateur
  - Réduction fausses positives < 5%

**Advanced Capabilities:**
- **Détection Langue Améliorée**
  - Plus de langues supportées (JA, ZH, IT, PT, NL, etc.)
  - Language switching automatique (notes multilingues)

- **Memory Echo V2**
  - Graph visualization des connexions
  - Insights multiples par jour avec priorisation
  - Clustering thématique des notes

**Business Model:**
- Lancement freemium avec "Buy me a coffee"
- Features avancées payantes (Phase 4)
- Monétisation éthique sans lock-in

**Success Criteria Phase 3:**
- 1000+ GitHub stars
- 500+ WAU
- Week 1-4 retention > 50%

---

**Phase 4 (Future - Advanced Features):**

**Timeframe:** 12+ months post-MVP

**Advanced Features:**
- **Transcription Audio**
  - Notes vocales avec transcription IA
  - Commandes vocales ("Crée une note sur X")

- **Organisation Auto**
  - IA propose dossiers/catégories
  - Tags automatiques hiérarchiques

- **Templates IA Personnalisés**
  - IA génère templates selon patterns utilisateur
  - "Meeting notes", "Brainstorming", "Project planning"

- **Mode "Super IA"**
  - Optimisation complète note (titre + tags + reformulation)
  - One-click enhancement

---

### Risk Mitigation Strategy

**Technical Risks:**

**Risk 1: Performance embeddings avec 1000+ notes**
- **Mitigation:** Caching agressif (embeddings stockés en DB), background processing
- **Fallback:** Pagination pour gros volumes de notes
- **Monitoring:** Alertes si > 500ms pour recherche sémantique

**Risk 2: Ollama local lent ou instable**
- **Mitigation:** Support multi-provider (fallback OpenAI automatique)
- **User Control:** Utilisateur peut switcher manuellement
- **Performance:** Mode local optionnel, pas obligatoire

**Risk 3: Memory Echo fait des connexions aléatoires**
- **Mitigation:** Cosine threshold > 0.75, time diversity filter
- **Feedback:** 👎 ajuste le système, apprentissage continu
- **User Control:** Fréquence configurable 0-3/jour, OFF toggle

**Market Risks:**

**Risk 1: Utilisateurs ne voient pas la valeur de Memory Echo**
- **Mitigation:** Fréquence conservative (1/jour max), ne pas spam
- **Onboarding:** Tour guidé met en avant Memory Echo
- **Validation:** Beta testing avec early adopters pour ajuster threshold

**Risk 2: Google Keep ou Notion copient Memory Echo**
- **Mitigation:** First-mover advantage, open source community
- **Moat:** Difficile à copier sans embeddings existants + feedback learning
- **Innovation:** Continuer à innover (Phase 2, 3, 4)

**Risk 3: Adoption IA lente (résistance utilisateur)**
- **Mitigation:** Pattern "Zéro Prise de Tête" - non-intrusif par défaut
- **Control:** ON/OFF granulaire pour chaque feature
- **Education:** Documentation claire, exemples d'utilisation

**Resource Risks:**

**Risk 1: Équipe trop petite (1 dev seul)**
- **Mitigation:** Scope minimal viable, pas de features "nice-to-have"
- **Contingency:** Si ressources limitées, couler Memory Echo (garder pour Phase 2)
- **Priority:** Titres auto + Recherche sémantique = valeur core

**Risk 2: Coûts OpenAI explosent**
- **Mitigation:** Support Ollama local (zero coût marginal)
- **User Choice:** Utilisateur peut choisir provider selon budget
- **Optimization:** Caching, rate limiting par utilisateur

**Risk 3: Timeline plus longue que prévue**
- **Mitigation:** MVP scoping flexible - features peuvent être déplacées
- **Contingency:** Si 8 semaines insuffisantes, étendre à 12 semaines
- **MVP Definition:** Pas besoin de toutes les features parfaites - "good enough" pour launch

**Overall Risk Posture:**
- **Philosophy:** Conservative par défaut, optimiser pour apprentissage
- **Validation:** Beta testing rapide, feedback continu
- **Flexibilité:** Scope adaptable selon contraintes ressources/temps

## Functional Requirements

### AI-Powered Content Enhancement

- FR1: Users can receive AI-generated title suggestions when writing notes without titles
- FR2: Users can view multiple title suggestion options before selecting one
- FR3: Users can apply AI-generated titles to their notes with a single action
- FR4: Users can defer title suggestions to view later
- FR5: Users can dismiss title suggestions for specific notes permanently
- FR6: Users can request AI-powered reformulation of selected paragraph content
- FR7: Users can select different reformulation approaches (clarify, shorten, improve style)
- FR8: Users can replace original content with AI-reformulated versions
- FR9: Users can cancel reformulation actions and retain original content
- FR10: Users can provide positive or negative feedback on AI-generated content

### Intelligent Search & Discovery

- FR11: Users can search notes using keyword queries that match exact text
- FR12: Users can search notes using natural language queries that match semantic meaning
- FR13: Users can view combined search results from both keyword and semantic matching
- FR14: Users can see visual indicators distinguishing exact matches from semantic matches
- FR15: Users can receive proactive insights about connections between related notes
- FR16: Users can view the specific content and context of suggested note connections
- FR17: Users can link related notes together when accepting connection suggestions
- FR18: Users can dismiss proactive connection insights
- FR19: Users can provide feedback on the relevance of suggested note connections

### User Control & Preferences

- FR20: Users can access AI settings to configure individual feature availability
- FR21: Users can enable or disable title suggestions independently
- FR22: Users can enable or disable semantic search independently
- FR23: Users can enable or disable paragraph reformulation independently
- FR24: Users can enable or disable proactive connection insights independently
- FR25: Users can adjust the frequency limit for proactive connection insights
- FR26: Users can customize AI trigger thresholds (e.g., word count for title suggestions)
- FR27: Users can set time period constraints for proactive connection analysis
- FR28: Users can temporarily disable all proactive AI features during focused work sessions
- FR29: Users can re-enable disabled AI features through settings interface

### Privacy & Multi-Provider AI Architecture

- FR30: Users can select between local AI processing (Ollama) and cloud AI processing (OpenAI)
- FR31: Users can verify that local AI processing does not send data external to their device
- FR32: Users can view connection status indicators for AI providers
- FR33: Users can switch between AI providers without losing functionality
- FR34: The system can automatically fallback to alternative AI providers if primary provider fails
- FR35: Users can configure API keys for cloud AI providers
- FR36: Users can remove stored API credentials from the system
- FR37: The system can detect and support multiple languages in user-generated content
- FR38: The system can process AI requests using user's content language while maintaining system prompts in English

### Administration & Operations

- FR39: Administrators can configure default AI provider settings for all users
- FR40: Administrators can set rate limits on AI usage per user
- FR41: Administrators can override individual user AI settings
- FR42: Administrators can monitor real-time AI usage metrics across the system
- FR43: Administrators can view AI processing costs and consumption statistics
- FR44: Administrators can adjust AI model parameters (temperature, max tokens, etc.)
- FR45: Administrators can configure team-wide AI feature availability
- FR46: The system can encrypt and securely store AI provider API keys

### Accessibility & Responsive Design

- FR47: Users can access all AI features using keyboard navigation without mouse input
- FR48: Users can receive screen reader announcements for AI-generated content and suggestions
- FR49: Users can dismiss AI notifications and suggestions using keyboard shortcuts
- FR50: Users can view and interact with AI features on mobile devices (320px-639px)
- FR51: Users can view and interact with AI features on tablet devices (640px-1023px)
- FR52: Users can view and interact with AI features on desktop devices (1024px+)
- FR53: Users can perceive visual focus indicators on all interactive AI elements
- FR54: Users can access AI features with touch targets meeting minimum size requirements (44x44px on mobile)

## Non-Functional Requirements

### Performance

**AI Feature Response Times:**

- NFR-PERF-001: Title suggestions generate within 2 seconds of trigger detection
- NFR-PERF-002: Semantic search results return within 300 milliseconds for databases up to 1,000 notes
- NFR-PERF-003: Memory Echo background analysis completes with less than 100 milliseconds of UI thread blocking
- NFR-PERF-004: Paragraph reformulation completes within 5 seconds for content up to 500 words

**System Performance:**

- NFR-PERF-005: Initial page load achieves First Contentful Paint (FCP) in under 3 seconds on 4G connections
- NFR-PERF-006: Application reaches Time to Interactive (TTI) within 5 seconds on modern browsers
- NFR-PERF-007: JavaScript bundle remains under 200KB gzipped (excluding AI provider libraries)
- NFR-PERF-008: AI features load on-demand without affecting initial application bundle size

**Performance Under Load:**

- NFR-PERF-009: System supports 50 concurrent users with less than 10% performance degradation
- NFR-PERF-010: Search response time remains under 500ms with 10,000 notes in database

---

### Security

**Data Protection:**

- NFR-SEC-001: All user notes are encrypted at rest in the database
- NFR-SEC-002: All data transmitted between client and server uses HTTPS/TLS 1.3+
- NFR-SEC-003: User passwords are hashed using bcrypt with minimum 12 salt rounds
- NFR-SEC-004: AI provider API keys are encrypted when stored in database

**Privacy-First Architecture:**

- NFR-SEC-005: Local AI processing (Ollama) sends zero data to external services
- NFR-SEC-006: Users can verify local processing mode through network inspection tools
- NFR-SEC-007: User content language detection and processing occurs server-side without exposing raw content to external AI providers when using local mode
- NFR-SEC-008: System does not log or store user note content beyond database persistence

**Authentication & Authorization:**

- NFR-SEC-009: User sessions expire after 30 days of inactivity
- NFR-SEC-010: Password reset tokens expire within 1 hour of generation
- NFR-SEC-011: Administrator access requires explicit role assignment (default role is USER)
- NFR-SEC-012: Users can only access their own notes, labels, and AI settings unless explicitly granted admin privileges

**API Security:**

- NFR-SEC-013: All API routes validate user authentication before processing requests
- NFR-SEC-014: Rate limiting prevents abuse of AI endpoints (maximum 100 requests per minute per user)

---

### Accessibility

**WCAG 2.1 Level AA Compliance:**

- NFR-A11Y-001: All AI features are fully operable using keyboard-only navigation
- NFR-A11Y-002: Screen readers announce AI-generated content and suggestions with descriptive text
- NFR-A11Y-003: All interactive AI elements have visible focus indicators with minimum 3:1 contrast ratio
- NFR-A11Y-004: Color alone is not used to convey information; visual indicators include text labels or icons

**Touch Targets (Mobile):**

- NFR-A11Y-005: All interactive AI elements on mobile devices meet minimum tap target size of 44×44 pixels
- NFR-A11Y-006: Touch targets have minimum 8 pixels spacing between adjacent interactive elements

**Responsive Design:**

- NFR-A11Y-007: AI features function correctly on mobile devices (320px-639px viewport width)
- NFR-A11Y-008: AI features function correctly on tablet devices (640px-1023px viewport width)
- NFR-A11Y-009: AI features function correctly on desktop devices (1024px+ viewport width)

**Notification Accessibility:**

- NFR-A11Y-010: AI toast notifications use `role="status"` (not `role="alert"`) to avoid interrupting screen reader navigation
- NFR-A11Y-011: Notifications can be dismissed using keyboard ESC key

---

### Reliability

**System Availability:**

- NFR-REL-001: Application achieves 99% uptime during business hours (9 AM - 6 PM user local time)
- NFR-REL-002: Graceful degradation occurs if AI providers are unavailable (core note-taking features remain functional)

**Error Handling:**

- NFR-REL-003: AI feature failures display user-friendly error messages without technical jargon
- NFR-REL-004: Failed AI requests automatically retry with exponential backoff (maximum 3 attempts)
- NFR-REL-005: System provides fallback to alternative AI provider if primary provider fails

**Data Integrity:**

- NFR-REL-006: All user actions maintain ACID properties (Atomic, Consistent, Isolated, Durable)
- NFR-REL-007: Vector embeddings are cached after generation to prevent redundant processing

**Background Processing:**

- NFR-REL-008: Memory Echo analysis runs asynchronously without blocking user interactions
- NFR-REL-009: Background jobs log failures for administrator review without exposing errors to end users

---

### Integration

**AI Provider Integration:**

- NFR-INT-001: System supports OpenAI API for cloud AI processing
- NFR-INT-002: System supports Ollama API for local AI processing
- NFR-INT-003: Factory pattern allows adding new AI providers without modifying existing code

**Multi-Provider Architecture:**

- NFR-INT-004: Users can switch between AI providers without losing data or functionality
- NFR-INT-005: System automatically detects available AI providers during startup
- NFR-INT-006: Provider connection status indicators display current operational state

**API Compatibility:**

- NFR-INT-007: System maintains compatibility with OpenAI API versions through abstraction layer
- NFR-INT-008: Ollama integration supports all models compatible with `/api/tags` and `/api/embeddings` endpoints

**Extensibility:**

- NFR-INT-009: New AI models can be added through configuration without code changes for supported providers
- NFR-INT-010: Custom OpenAI-compatible endpoints can be configured through settings

---

### Scalability (MVP Scope)

**Phase 1 Capacity:**

- NFR-SCA-001: System supports 50-200 concurrent users with acceptable performance
- NFR-SCA-002: Database performs acceptably with up to 10,000 notes per user
- NFR-SCA-003: Embedding generation throughput supports 100 notes per minute per user

**Resource Efficiency:**

- NFR-SCA-004: SQLite database size remains under 2GB for 100,000 notes with embeddings
- NFR-SCA-005: Memory consumption per user session remains under 100MB

**Post-MVP Consideration:**

- NFR-SCA-006: Architecture supports migration to PostgreSQL for Phase 2 if needed for larger scale


