Knowledge Graph Explorer
Saisissez un domaine — tutorat IA, reporting CSRD, circularité des déchets électroniques — et obtenez en une trentaine de secondes un graphe de connaissances interactif de ses concepts, clusters de recherche et opportunités produit, construit à partir de données ouvertes. Développé en solo nov. 2025 – mai 2026 ; 47 tests automatisés, WCAG 2.2 AA, €0/mois
- Problème — L’orientation dans un domaine le premier jour coûte des heures de recherche éparpillée aux PMs ; les données ouvertes existent, mais aucun outil ne les assemble en carte
- Insight — La couche manquante n’est pas la visualisation mais le raisonnement sur les opportunités — scorer les clusters où la recherche est dense et les produits rares
- Solution — J’ai construit (en solo, end-to-end) un outil qui transforme Wikidata + OpenAlex en graphe interactif, fiches d’opportunité scorées et brief en ~30s
- Résultat — En ligne sur knowledge-graph-explorer.ontwrpn.com ; 47 tests automatisés, WCAG 2.2 AA, €0/mois — projet portfolio, pas encore d’utilisateurs externes
Chaque nouvelle initiative commence par le même travail de débroussaillage non structuré
L’orientation le premier jour dans un domaine inconnu coûte des heures de recherche éparpillée aux PMs et aux chercheurs. Les données nécessaires pour répondre à « de quoi est constitué cet espace ? » existent déjà dans des jeux de données ouverts et librement licenciés — Wikidata et OpenAlex — mais aucun outil ne les assemble en quelque chose de navigable. Les assistants IA en prose répondent par paragraphes ; on ne peut pas repérer un cluster ni voir où personne ne travaille encore dans un paragraphe.
La couche manquante n’est pas la visualisation — c’est la base, un acquis. C’est le raisonnement sur les opportunités : scorer les clusters où la recherche est dense et les produits rares
Le point d’entrée : saisissez un sujet, choisissez une région et un objectif, et le pipeline en 9 étapes démarre en arrière-plan
Quatorze outils évalués ; aucun ne raisonne sur les opportunités
S’agissant d’un projet mené en autonomie, la découverte a consisté en une étude structurée du paysage concurrentiel et du dogfooding — pas un programme d’entretiens utilisateurs externes, et ce cas l’assume explicitement. J’ai évalué quatorze outils répartis en quatre catégories (graphes de citations d’articles, assistants IA de recherche, applications de notes/graphes relationnels et plateformes d’intelligence de marché) et noté chacun sur cinq capacités : ingestion automatique de données ouvertes, graphe entité-relation, détection d’opportunités, sortie structurée et synthèse IA.
Le schéma était constant : les outils de graphes d’articles (Connected Papers, ResearchRabbit) ont le graphe mais uniquement sur les publications, et ne font aucun raisonnement sur les opportunités. Les assistants IA (Elicit, Consensus, Perplexity) synthétisent en prose citée — sortie solide, pas de graphe d’entités navigable. Les canevas de graphes de notes (Obsidian, Roam, Kumu) produisent de superbes graphes mais exigent que vous créiez chaque nœud vous-même, ce qui est inutile le premier jour dans un nouveau domaine. Les plateformes d’intelligence de marché (Crayon, Klue) suivent les concurrents, pas les domaines conceptuels. Aucun outil ne combinait les trois : ingestion automatique de données ouvertes + un vrai graphe entité-relation + raisonnement sur les opportunités produit.
S’orienter → trouver la structure → repérer les ouvertures → transmettre
Le backend exécute à la demande un pipeline en neuf étapes : Groq développe le sujet en ~8 termes de recherche ; Wikidata et OpenAlex sont interrogés en parallèle ; rapidfuzz déduplique les entités à un seuil de similarité de 88 ; NetworkX calcule la centralité de degré et d’intermédiarité ; la détection de communautés Louvain regroupe les nœuds en clusters ; un modèle de scoring d’opportunités pondère la taille, la densité de recherche, le gap produit et le potentiel de pont ; Groq rédige des fiches d’opportunité narratives pour les 5 premiers clusters avec un fallback de template déterministe. L’ensemble du pipeline écrit dans Postgres et bascule le statut du projet sur prêt — le frontend interroge toutes les 2,5 s et remplace une bannière de construction par le graphe en direct.
Les quatre vues post-graphe correspondent exactement au flux d’exploration : le graphe à base de physique pour s’orienter (faites glisser un nœud, tout le graphe réagit), Clusters pour trouver la structure (communautés Louvain classées par score d’opportunité), Opportunities pour repérer les ouvertures (fiches avec badges de risque, why-it-matters et barre de solidité des preuves), et un Research Brief en un clic pour la transmission — HTML rendu, téléchargeable en .md, imprimable en PDF.

En direct — saisissez un domaine et explorez le graphe
Clusters
Opportunities
Research Brief
Bottom-sheet mobile
Tokens, un pattern bottom-sheet et la lisibilité des graphes denses
Une passe délibérée a remplacé les valeurs de pixels ad hoc par un système de tokens cohérent : une échelle d’espacement en 8 pt (--sp-1…--sp-20, 4px→80px), une échelle typographique modulaire (--text-xs 11px à --text-3xl 32px) associée à quatre hauteurs de ligne, des tokens d’ombre partagés et des courbes d’easing. La plus grande victoire mobile : à ≤767px le panneau latéral de bureau devient une feuille inférieure fixe (max-height 58vh) avec une poignée de glissement et un fond d’assombrissement — ouvrir un nœud ou un cluster la fait monter. Un seul pattern a rendu un graphe desktop-only crédible sur un téléphone.
La lisibilité des graphes denses a nécessité sa propre solution : des labels persistants uniquement sur les nœuds les plus connectés ; les autres s’affichent au survol, à la sélection ou lors de la mise en évidence d’un cluster. Sur un graphe de 80+ nœuds, cela maintient le canvas lisible plutôt qu’un mur de texte superposé. La mise en page cola en deux phases (démarrage fini → physique en direct infinie) signifie que tous les nœuds participent en permanence à la physique — le graphe répond à tout glissement.
Tour spotlight sans dépendance : démarre automatiquement à la première visite, rejouable via le bouton « ? », utilisable au clavier et respectueux de prefers-reduced-motion
Une revue structurée a détecté deux bugs de production avant les utilisateurs
Avant de déclarer le MVP terminé, j’ai effectué une revue de code structurée. Elle a trouvé deux vrais bugs de production : DELETE /projects/{id} supprimait les entités et relations mais pas les clusters/opportunités, provoquant une violation de clé étrangère qui bloquait la suppression sur Postgres en production ; et une XSS stockée dans la fenêtre d’impression du brief où le Markdown généré par le LLM et le nom de fichier dérivé de l’utilisateur étaient écrits via document.write avec seulement < échappé. Les deux ont été corrigés et verrouillés derrière des tests.
La suite automatisée tourne contre une base de données SQLite jetable avec l’IA désactivée — elle ne touche jamais la base de données de production ni Groq. 28 tests pytest répartis sur six fichiers couvrent le CRUD des projets, le contrôle d’accès au brief, la régression de suppression en cascade, le fallback Groq, le parsing CSV, l’extraction d’entités, la porte RAG Q&A et le classement de récupération lexicale. 19 tests Vitest / Testing Library couvrent le basculement de thème, les écrans d’état, le panneau Ask, le rendu des fiches d’entité et le rendu sécurisé du brief incluant l’échappement HTML et la suppression des liens dangereux. Les 47 passent ; le build de production fait 241 kB initial + 537 kB chunk de graphe chargé à la demande.
La revue s’est rentabilisée rien qu’avec le bug de suppression — silencieusement cassé en production, et un bug qu’aucun parcours manuel n’avait détecté
En ligne, durci, gratuit — et honnête sur ce qui reste à valider
En ligne sur knowledge-graph-explorer.ontwrpn.com depuis juin 2026. Développé en solo en sept mois en parallèle d’autres projets. La stack est délibérément sobre et gratuite : Wikidata + OpenAlex pour les données (€0), Groq free tier pour l’IA (€0), networkx + python-louvain pour le graphe et les métriques (€0), backend FastAPI + SQLAlchemy 2.0, frontend React + Vite + Cytoscape.js, Docker → Coolify sur Hetzner auto-hébergé (€0 marginal). Chaque appel Groq dispose d’un fallback déterministe — l’IA enrichit mais n’est jamais critique ; le produit est pleinement fonctionnel sans clé Groq.
Ce que je ferais différemment : écrire les tests en parallèle du pipeline plutôt qu’après (le bug de suppression en cascade a survécu plusieurs commits), limiter les nœuds du graphe plus tôt pour les sujets denses (le réglage de la mise en page est venu après coup), et nommer le compromis batch-vs-on-demand dès le départ pour que l’UX de polling prenne forme plus tôt. La lecture honnête du scoring d’opportunités : il produit de manière fiable une première carte plausible, mais savoir si les ouvertures scorées sont justes nécessite de vrais PMs qui y réagissent — c’est la priorité suivante, avant plus de fonctionnalités.
Le canvas graphe : nœuds dimensionnés par centralité de degré, colorés par type (concept / institution / recherche / produit), labels uniquement sur les nœuds les plus connectés
Sources
- Blondel, Guillaume, Lambiotte & Lefebvre (2008). Fast unfolding of communities in large networks (Louvain). J. Stat. Mech. P10008.
- Freeman (1977). A set of measures of centrality based on betweenness. Sociometry 40(1):35–41.
- Priem, Piwowar & Orr (2022). OpenAlex: a fully open index of scholarly works.
- Vrandečić & Krötzsch (2014). Wikidata: a free collaborative knowledgebase. Communications of the ACM 57(10):78–85.
