TM
← BACK TO BUILD

Personal Knowledge Assistant

TYPESCRIPT · NEXT.JS · VECTOR DB (PLANNED)

Problem

Every static personal site says 'ask me anything' but doesn't actually let you. I wanted a real interface for that, without committing to a fragile chatbot before I had content worth retrieving over.

Solution

Designed a provider-agnostic assistant interface up front: a fixed `AssistantProvider` contract with a mocked implementation for launch, so the UI, interaction design, and citation model are all validated before any model or vector database exists.

Architecture

The UI never talks to a model directly — it calls `ask(query)` on whatever `AssistantProvider` is injected. The v1 `MockAssistantProvider` is a lookup table of hand-written answers with citation lists. A future `RagAssistantProvider` implements the same interface over embeddings across resume, projects, GitHub, journal, travel, and photo metadata — swapping providers touches zero UI code.

Challenges

Resisting the urge to wire up a real LLM immediately was the actual challenge — it's tempting to reach for an API key on day one. Designing the mock to be genuinely useful (not just a stub) forced real decisions about citation format and conversation state that the eventual RAG version will reuse directly.

Lessons Learned

A mocked interface with a real contract is more valuable than a real integration with no interface — the second one gets thrown away when the first model choice turns out wrong.

Future Improvements

Wire in the RAG provider once there's enough real content (journal posts, project write-ups) to make retrieval meaningful — currently the mock is not overridable per query, which becomes needed once the site has a real writing catalog.