Knowledge Graph Explorer
Typ een domein — AI-tutoring, CSRD-rapportage, e-waste-circulariteit — en krijg binnen circa dertig seconden een interactieve knowledge graph met concepten, onderzoeksclusters en productkansengebieden, opgebouwd uit open data. Solo gebouwd nov. 2025 – mei 2026; 47 geautomatiseerde tests, WCAG 2.2 AA, €0/maand
- Probleem — Een domein leren kennen op dag één kost PMs uren versnipperd zoekwerk; de open data is er wel, maar geen enkele tool brengt ze samen tot een kaart
- Inzicht — De ontbrekende laag is niet de visualisatie maar het redeneren over opportuniteiten — clusters scoren waar het onderzoek dicht is en producten schaars
- Oplossing — Ik bouwde (solo, end-to-end) een tool die Wikidata + OpenAlex omzet in een interactieve graph, gescoorde opportunity-kaarten en een brief in ~30s
- Resultaat — Live op knowledge-graph-explorer.ontwrpn.com; 47 geautomatiseerde tests, WCAG 2.2 AA, €0/maand — portfolioproject, voorlopig nog geen externe gebruikers
Elk nieuw initiatief begint met dezelfde ongestructureerde zoektocht
Je weg vinden op dag één in een onbekend domein kost PMs en onderzoekers uren versnipperd zoekwerk. De data die je nodig hebt om te beantwoorden ‘hoe zit dit domein in elkaar?’ bestaat al in open, vrij gelicentieerde datasets — Wikidata en OpenAlex — maar geen enkele tool brengt ze samen tot iets navigeerbaars. AI-assistenten antwoorden in lopende tekst; in een alinea zie je geen cluster en zie je niet waar in de markt nog niemand zit.
De ontbrekende laag is niet de visualisatie — dat is intussen de standaard. Het gaat om redeneren over opportuniteiten: clusters scoren waar het onderzoek dicht is en producten schaars
Het startpunt: typ een onderwerp, kies een regio en doel, en de 9-stappenpipeline start op de achtergrond
Veertien tools onderzocht; geen enkele redeneert over kansen
Als zelfgestuurd project bestond de discovery uit een gestructureerde studie van het concurrentielandschap plus dogfooding — geen reeks externe gebruikersinterviews, en deze case is daar expliciet over. Ik nam veertien tools onder de loep, verdeeld over vier categorieën (citatiegraphs van papers, AI-onderzoeksassistenten, apps voor notitie- en relatiegraphs en marktintelligentieplatformen) en scoorde elke tool op vijf vlakken: automatisch inlezen van open data, entity-relationship-graphing, opportuniteitsdetectie, gestructureerde output en AI-synthese.
Het patroon was telkens hetzelfde: graphtools voor papers (Connected Papers, ResearchRabbit) hebben de graph, maar enkel over publicaties, en redeneren niet over opportuniteiten. AI-assistenten (Elicit, Consensus, Perplexity) vatten samen in geciteerde tekst — sterke output, maar geen navigeerbare entity-graph. Canvassen voor notitiegraphs (Obsidian, Roam, Kumu) tekenen prachtige graphs, maar vragen dat je elk knooppunt zelf aanmaakt, wat op dag één van een nieuw domein nutteloos is. Marktintelligentieplatformen (Crayon, Klue) volgen concurrenten, geen conceptdomeinen. Geen enkele tool combineerde de drie: automatisch open data inlezen + een echte entity-relationship-graph + redeneren over productopportuniteiten.
Oriënteren → structuur vinden → kansen spotten → overdragen
De backend voert op aanvraag een negen-stappenpipeline uit: Groq breidt het onderwerp uit naar ~8 zoektermen; Wikidata en OpenAlex worden parallel bevraagd; rapidfuzz ontdubbelt entiteiten bij een gelijkenisdrempel van 88; NetworkX berekent degree- en betweenness-centraliteit; Louvain-gemeenschapsdetectie groepeert knopen in clusters; een opportuniteitsscoremodel weegt omvang, onderzoeksdichtheid, productgap en brugpotentieel af; Groq schrijft verhalende opportuniteitskaarten voor de top 5 clusters, met een deterministische template-fallback. De volledige pipeline schrijft naar Postgres en zet de projectstatus op gereed — de frontend pollt elke 2,5 s en vervangt de bouwbanner door de live graph.
De vier weergaven ná de graph sluiten exact aan op de manier waarop je verkent: de physics-based graph om je te oriënteren (sleep een knoop en de hele graph reageert), Clusters om structuur te vinden (Louvain-gemeenschappen gerangschikt op opportuniteitsscore), Opportunities om kansen te spotten (kaarten met risicobadges, why-it-matters en een evidence-strength-balk), en een Research Brief met één klik om over te dragen — gerenderde HTML, te downloaden als .md, af te drukken naar PDF.

Live — typ een domein en verken de graph
Clusters
Opportunities
Research Brief
Mobiel bottom-sheet
Tokens, een bottom-sheet-patroon en leesbaarheid van dichte graphs
Een bewuste opkuis verving ad-hoc pixelwaarden door een consistent tokensysteem: een 8pt-spacingschaal (--sp-1…--sp-20, 4px→80px), een modulaire typeschaal (--text-xs 11px tot --text-3xl 32px) gekoppeld aan vier regelhoogten, gedeelde schaduw-tokens en easing-curves. De grootste winst op mobiel: bij ≤767px wordt het zijpaneel van de desktopversie een vast bottom sheet (max-height 58vh) met een sleepgreep en een verduisterende achtergrond — een knoop of cluster openen schuift het naar boven. Eén patroon maakte een desktop-only-graph geloofwaardig op een telefoon.
De leesbaarheid van dichte graphs vroeg om een eigen oplossing: vaste labels enkel op de meest verbonden knopen; de rest verschijnt bij hover, selectie of het uitlichten van een cluster. Op een graph met 80+ knopen blijft het canvas zo leesbaar in plaats van een muur overlappende tekst te worden. De tweefasige cola-layout (eindig opstarten → oneindige live physics) zorgt dat alle knopen voortdurend meedoen in de physics — de graph reageert op elke sleepbeweging.
Spotlight-tour zonder dependencies: start automatisch bij het eerste bezoek, opnieuw af te spelen via de “?”-knop, bedienbaar met het toetsenbord en houdt rekening met prefers-reduced-motion
Een gestructureerde review ving twee productiebugs op nog voor gebruikers ze konden tegenkomen
Voor ik het MVP als klaar bestempelde, voerde ik een gestructureerde codereview uit. Die legde twee echte productiebugs bloot: DELETE /projects/{id} verwijderde entiteiten en relaties, maar geen clusters/opportunities, wat een foreign-key-schending veroorzaakte die delete op productie-Postgres brak; en een stored XSS in het printvenster van de brief, waarbij door het LLM gegenereerde Markdown en de van de gebruiker afgeleide bestandsnaam via document.write werden weggeschreven met enkel < geëscaped. Allebei opgelost en vastgezet achter tests.
De geautomatiseerde testsuite draait tegen een wegwerp-SQLite-database met AI uitgeschakeld — ze raakt nooit de productiedatabase of Groq aan. 28 pytest-tests verdeeld over zes bestanden dekken project-CRUD, brief-gating, de delete-cascade-regressie, de Groq-fallback, CSV-parsing, entity-extractie, de RAG Q&A-gate en de rangschikking van lexicale retrieval. 19 Vitest / Testing Library-tests dekken het wisselen van thema, de toestandsschermen, het Ask-paneel, het renderen van entity-kaarten en het veilig renderen van de brief, inclusief HTML-escaping en het wegfilteren van gevaarlijke links. Alle 47 slagen; de productiebuild is 241 kB initieel + 537 kB lazy graph-chunk.
De review verdiende zichzelf al terug met die ene delete-bug — stilletjes kapot in productie, en een bug die geen enkele handmatige doorklik had gevonden
Live, dichtgetimmerd, gratis — en eerlijk over wat nog niet gevalideerd is
Live op knowledge-graph-explorer.ontwrpn.com sinds juni 2026. Solo gebouwd in zeven maanden naast ander werk. De stack is bewust saai en gratis: Wikidata + OpenAlex voor data (€0), Groq free tier voor AI (€0), networkx + python-louvain voor graph en metrics (€0), FastAPI + SQLAlchemy 2.0-backend, React + Vite + Cytoscape.js-frontend, Docker → Coolify op een zelfgehoste Hetzner (€0 marginaal). Elke Groq-aanroep heeft een deterministische fallback — AI verrijkt, maar is nooit dragend; het product werkt volledig zonder Groq-sleutel.
Wat ik anders zou doen: tests schrijven naast de pipeline in plaats van erna (de delete-cascade-bug leefde meerdere commits lang), graph-knopen eerder beperken voor dichte onderwerpen (layout-tuning kwam achteraf), en de batch-vs-on-demand-afweging van tevoren benoemen zodat de polling-UX eerder vorm krijgt. De eerlijke lezing over opportunity-scoring: het levert betrouwbaar een aannemelijke eerste kaart op, maar of de gescoorde kansen kloppen heeft echte PMs nodig die erop reageren — dat is de volgende prioriteit, vóór meer features.
Het graph-canvas: knopen gesizet naar degree-centraliteit, gekleurd op type (concept / instelling / onderzoek / product), labels alleen op de meest verbonden knopen
Bronnen
- 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.
