Keep/_bmad-output/planning-artifacts/prd-phase1-mvp-ai.md
sepehr fc2c40249e feat: AI provider testing page + multi-provider support + UX design spec
- Add AI Provider Testing page (/admin/ai-test) with Tags and Embeddings tests
- Add new AI providers: CustomOpenAI, DeepSeek, OpenRouter
- Add API routes for AI config, models listing, and testing endpoints
- Add UX Design Specification document for Phase 1 MVP AI
- Add PRD Phase 1 MVP AI planning document
- Update admin settings and sidebar navigation
- Fix AI factory for multi-provider support
2026-01-10 11:23:22 +01:00

1586 lines
64 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 50+ 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 (50+ 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 50+ 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 (50+ 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 50+ 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 50+ 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 50+ 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