AI Portfolio Guide: Retrieval-Light RAG for a Creative Practice by Toby GoddenAI Portfolio Guide: Retrieval-Light RAG for a Creative Practice by Toby Godden

AI Portfolio Guide: Retrieval-Light RAG for a Creative Practice

Toby Godden

Toby Godden

The problem with a multi-disciplinary portfolio

My practice spans interactive systems, browser instruments, film, writing, electronic music, live media and AI-led work. A conventional portfolio either flattened that range into a grid or expected visitors to understand the whole map before knowing where to begin.
I needed a conversational front door. Something that asks a more useful question: why are you here? Then gives the visitor one relevant next place instead of presenting forty competing projects.

What I built

An AI-powered guide that sits above conventional navigation on tobygodden.com/help. Visitors state their intent (commissioning, press, listening, interactive work, reading, or following curiosity), and the guide routes them to the single most relevant destination from a curated corpus of 44 entries.
It also qualifies inbound enquiries. Someone can move from a half-formed interest to a specific project or service, then send me their email, an optional note, and the conversation that brought them there. I receive the context, not merely "Hello, I'd like more information."

Not conventional RAG

This isn't vector-search RAG, and I wouldn't pretend that it is.
There are no OpenAI embeddings, no Pinecone, no separate vector database. The corpus is small and deliberately curated (44 entries, roughly 25KB of JSON), so the complete corpus is injected into the model's system prompt. Claude is instructed to answer only from that material and to return one exact corpus entry as the best next destination.
I'd describe it as small-corpus grounded prompting with deterministic routing, or "retrieval-light RAG." The distinction matters because it is simpler, cheaper, and more inspectable than embedding infrastructure for a corpus of this size.

The stack

Plain HTML, CSS, and vanilla JavaScript frontend. No framework.
A PHP proxy hosted on FFILM.org.
Anthropic Messages API using claude-sonnet-4-6.
A PHP endpoint serving the JSON corpus with a restricted CORS setup.
A separate PHP contact endpoint for contextual enquiry capture.
Client-side tag matching as a fallback if the model request fails.
The model is the language and judgement layer, but it isn't the only thing making the interface work. The browser still knows the project corpus and can produce a relevant recommendation without Claude.

The corpus

Each of the 44 records has five fields: name, category, URL, a one-paragraph description, and search/routing tags. The live JSON corpus can be inspected directly.
It covers 14 interactive projects, 5 film projects, 5 public surfaces, 4 frameworks, 4 writing projects, 3 services, 2 music entries, 2 broadcast systems, and individual entries for biography, archive, collaboration, commercial work, and fiction.
The source material is approved project descriptions, biography, service descriptions, film and writing summaries, music catalogue, public websites, and selected development notes. Not a bulk scrape. Each item was reduced to a compact, attributable description with a canonical destination and useful intent tags.
That editorial work is the real grounding layer. If something is uncertain or has no public URL, the system is told not to invent it.

How visitors move through it

The opening offers six routes: commissioning, press or research, listening to music, interactive work, reading, and following curiosity. Collaboration is also recognised in free-text conversation.
These aren't six isolated funnels. The stated intent changes which corpus entry the guide selects:
A commissioner might reach Godden Interactive, the Fundable Experience Sprint, the AI Visitor Guide Sprint, or a relevant proof-of-work project.
Press and researchers can be directed to the biography, a particular production, or one of the larger public practice surfaces.
Music visitors reach Procrastinatrix or the discography.
Interactive visitors are asked enough to distinguish between live systems, browser instruments, AI fiction, and spatial work.
Someone who is merely curious gets one strong entry point rather than a complete project dump.
The guide can ask one clarifying question when the intent is ambiguous. Once it has enough information, it selects exactly one named corpus entry, shows its project card, and offers a small set of contextual follow-ups.

What was surprising

The strongest insight was that the AI did not need to control the whole experience. A deterministic interview and tag-based recommendation layer makes the guide resilient; Claude adds conversational judgement and tailored language. If the model fails, the visitor can still be routed somewhere useful.
The first model identifier also became obsolete almost immediately and had to be replaced. That reinforced the value of keeping the corpus, routing, and interface independent of the model provider.
The phrase "interrogate my portfolio" proved more compelling than "AI chatbot." It describes the visitor's agency and the actual function of the work without making the technology the attraction. The live page now presents itself simply as a guide "grounded only in Toby's listed work."

Timeline

29 June 2026: First working version built.
7 July 2026: Public launch with the line "You can interrogate my portfolio here."
16 July 2026: Current Godden Interactive version revised and integrated into the main site.

Honest status

This is a working implementation and product proposition. I don't yet have enough genuine external usage data to claim conversion figures or recurring question patterns. The early captured enquiries were tests, not defensible client evidence. What I can say is that the architecture works, the fallback layer is proven, and the editorial approach to corpus design is the part that makes the whole thing trustworthy.
Like this project

Posted Jul 25, 2026

A conversational AI guide that routes visitors through a 44-entry creative portfolio using small-corpus grounded prompting, deterministic fallback routing, and the Anthropic Claude API.