Dev fullstack
Plateforme éditoriale thématique et application mobile (Le Sujet)
Le Sujet aide les lecteurs à sortir de la bulle idéologique entretenue par les réseaux sociaux en proposant des questions et des synthèses plurielles par thème. En tant que CTO, j'ai défini la vision technique, conçu l'architecture et livré l'écosystème complet : API, back-office éditorial, pipeline IA (LangChain, Qdrant), application mobile Expo, avec qualité et maintenabilité au cœur des choix.
Le Sujet est une plateforme éditoriale dont la mission est d'aider les lecteurs à sortir de leur bulle idéologique. Les algorithmes des réseaux sociaux enferment souvent les utilisateurs dans des flux homogènes : on ne voit que ce qui confirme ses opinions. Le Sujet inverse la logique : le contenu est organisé par thèmes et questions, avec des synthèses qui croisent plusieurs angles et sources. L'objectif est de donner à chacun les clés pour comprendre un sujet au-delà de son fil d'actualité.
J'ai endossé le rôle de CTO sur ce projet : définition de la vision technique, conception de l'architecture de bout en bout, choix des technologies et responsabilité de la livraison. L'équipe éditoriale devait pouvoir gérer thèmes, questions, sources et mots-clés ; les lecteurs, consulter une application mobile claire et à jour. J'ai conçu et développé l'ensemble (API, back-office, pipeline IA, app mobile) en plaçant la maintenabilité et l'évolutivité au centre des décisions.
Vision technique et choix d'architecture
En tant que CTO, j'ai défini une stack cohérente pour tout l'écosystème. Côté backend : Node.js et Express, MongoDB (Mongoose) pour le modèle de données (thèmes, questions, sources, mots-clés, synthèses). L'objectif était une API claire, documentable et facile à faire évoluer quand de nouveaux thèmes ou formats de contenu arrivent. Pour l'IA : LangChain et OpenAI pour l'analyse de contenu et la génération de synthèses ; Qdrant pour l'ingestion de PDF et la recherche sémantique (extraction, chunking, embeddings). Les traitements longs passent par des jobs asynchrones (Bull / Redis) et des tâches planifiées (node-cron), afin de ne pas bloquer l'API et de garder une expérience fluide pour l'équipe éditoriale. L'API est sécurisée par JWT pour les mutations. Côté admin : React, Vite, Tailwind, React Query, React Hook Form et Zod. Côté mobile : Expo, TypeScript, React Native, React Query et Axios. Chaque brique a été choisie pour la maintenabilité et la testabilité (Vitest côté API) — des critères essentiels quand on porte seul la vision technique.
Modèle de contenu et back-office
Le contenu est organisé en thèmes (titres, descriptions, mots-clés), auxquels sont rattachées des questions. Chaque question possède un titre, des articles (texte), des sources externes (URL ou références), des mots-clés et une synthèse (générée par IA). Les sources peuvent être de type URL, PDF ou note ; les PDF sont extraits, découpés en chunks, vectorisés et stockés dans Qdrant pour la recherche par similarité. L'interface d'administration permet la gestion complète des thèmes, questions, sources et mots-clés, ainsi que la consultation et l'édition des synthèses et des prompts utilisés par le pipeline IA. Les écrans sont pensés pour un usage éditorial fluide (listes, filtres, formulaires de création et d'édition).
Pipeline IA et synthèses
Le pipeline IA assure l'analyse des articles entrants : assignation à un thème existant, identification des questions pertinentes, et génération des synthèses par question. J'ai mis en place ce flux avec LangChain et des modèles OpenAI (ou compatibles), en s'appuyant sur des prompts configurables côté admin. Les articles sont traités via une file de jobs (Bull) pour éviter de bloquer l'API ; les synthèses sont stockées en base et exposées à l'app mobile. La recherche dans les chunks PDF (Qdrant) permet d'enrichir le contexte fourni au modèle pour des synthèses mieux ancrées dans les sources.
Sources multiples et recherche vectorielle
L'ingestion de PDF est centrale : extraction du texte (pdf-parse), découpage en chunks avec overlap configurable, génération d'embeddings et envoi vers Qdrant. Chaque source PDF est associée à une collection ou un namespace pour isoler les données. Les routes API permettent l'upload, le déclenchement du traitement et la suppression propre (MongoDB + Qdrant). Les sources de type URL et note sont gérées en parallèle pour un modèle unifié (sources liées aux questions et aux mots-clés). Côté pipeline IA, la recherche vectorielle dans Qdrant permet de récupérer les passages les plus pertinents avant génération des synthèses.
Application mobile : le point de contact avec les lecteurs
C'est via l'app que les lecteurs accèdent aux questions et aux synthèses — donc à une lecture qui dépasse la bulle des réseaux sociaux. L'app Expo propose un feed de questions, des listes par thème et une page de détail par question (titre, thème, articles sources, sources externes en WebView, synthèse en Markdown). Les questions du même thème sont suggérées en fin de page pour encourager l'exploration. L'UX a été pensée pour une consultation simple et agréable : design cohérent (dégradés, cartes), pull-to-refresh, cache et synchronisation via React Query. Les mises à jour OTA (Expo) permettent de déployer correctifs et évolutions sans repasser par les stores, ce qui est crucial pour un produit éditorial en mouvement.
En résumé : de la vision produit (aider à sortir de la bulle idéologique) à l'architecture, au pipeline IA et à l'app mobile, j'ai assuré la responsabilité technique complète. Ce projet illustre une capacité à poser les fondations, à faire des choix durables et à livrer un écosystème cohérent de bout en bout — de la stratégie éditoriale jusqu'à l'expérience utilisateur finale.