I rebuilt my portfolio around one idea: treat content as structured data, not pages. Every project, skill, client and role lives once, with the relationships between them modelled explicitly and categories linked out to Wikidata.
That single source feeds three things at the same time. The visual interface. A Schema.org knowledge graph generated from the same content, which makes the whole career machine readable for search engines and AI. And an AI agent that answers questions in plain language and takes visitors straight to the relevant work.
The retrieval is the part I am most pleased with. It runs on native semantic similarity: the full question is matched against vector embeddings of every project server-side, so a query about fintech surfaces the fintech work even when the word never appears. Keyword scoring is the fallback for when semantic search returns nothing. No external vector database, the content layer handles it.
The hardest part was making the site and the conversation behave as one system rather than two parallel channels, with nothing duplicated and nothing to keep in sync by hand. Because everything derives from the same model, there is one source of truth behind the visuals, the structured data and the retrieval.
A note on motion: the transitions are a hand-built layer of CSS and JavaScript, down to a custom cursor and tiles that move away from your pointer. WebGL appears only where it earns its place, in the hero imagery. No template, no plugin.