--- 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: ``, ``, `` - 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