Content Similarity Graph
An interactive map of every project and post, connected by meaning rather than manual links. Each piece is turned into a text embedding, and the ones that sit closest together get joined up. Drag, hover, and click to explore how the work relates.
How it works
Every project and post is run through OpenAI’s text-embedding-3-small model— cheap, and good enough for the small amount of content here. It turns each piece of text into a long list of numbers, a rough fingerprint of what it’s about. Anything that lands close to something else in that space gets joined up. The clusters you see formed on their own, and I only added a handful of topic labels afterwards to make sense of them.
The build is basically a small Node script that does the embedding and works out the links once, then saves the result as a plain data file. This page just reads that file and draws it in the browser with D3.js, so there’s no live API call when it loads, and nothing to pay for on every visit.
To be clear, this is a content similarity graph, not a formal knowledge graph. The links mean “these two are alike,” not a specific, hand-defined relationship like ‘built-for’ or ‘part-of’. It’s the same family of technique that powers RAG search, but where RAG keeps the vectors in a database to query live, here they’re used once to work out the links, then thrown away.
More on why content similarity is maybe fine for something like a personal site, and why we need a lot more than just that for enterprise AI: From vector soup to semantic layers.