Daniel Howells

Building Massive

2025-07-22

Massive started with a question I couldn't stop thinking about: what if knowledge discovery worked the way curiosity actually works? Not keyword search, not category browsing, but following connections the way your mind does — from a concept to a related concept to an unexpected third thing that reframes the first two.

The core idea is a dual-graph data model. There's a reference graph (books, films, articles, podcasts — the things you consume) and a concept graph (themes, movements, ideas — the things you think about). These two graphs are connected by six different relationship types: influences, references, explores, responds_to, extends, and contradicts. The relationship type matters because "Film A references Book B" is fundamentally different information than "Film A contradicts Book B."

The technical implementation uses Neon Postgres with Drizzle ORM, and the connection scoring is where it gets interesting. Each connection has a base strength, but the system also calculates a personalisation score based on your exploration history. If you've been deep in modernist architecture, connections to Bauhaus principles get weighted higher — not because they're objectively more important, but because they're more relevant to where your curiosity currently lives.

Voyage AI handles the embeddings, mapping both references and concepts into the same vector space. This means you can search semantically — type "the relationship between jazz improvisation and abstract expressionism" and get results even if no single reference uses those exact words. The vectors capture the meaning, not the surface.

The hardest part was the connection pipeline. I built it to suggest connections automatically using embedding similarity, but with a human review step. Fully automated connections produce too much noise. Fully manual connections don't scale. The sweet spot is the machine proposing and a human confirming, which is a pattern I keep coming back to across projects.

Navigation is the product. The interface is designed around exploration, not consumption. You land on a concept node, see its connections radiating outward, and follow whichever thread catches your attention. There's no "right" path. The goal is to make serendipitous discovery feel inevitable — every click reveals something you didn't know you were looking for.