TM
← BACK TO JOURNALAI

What building a fake AI assistant taught me about the real one

5 MIN READ · 2026-06-24

I wanted an AI assistant on this site that could actually answer questions about my work. I did not want to wire up a real model before I had content worth retrieving over — a RAG pipeline over three project write-ups is a solution in search of a problem.

So the assistant shipped mocked: a fixed set of hand-written answers behind a real interface.

interface AssistantProvider {
  ask(query: AssistantQuery): Promise<AssistantAnswer>;
  suggestedQuestions(): Promise<string[]>;
}

class MockAssistantProvider implements AssistantProvider {
  async ask({ question }: AssistantQuery): Promise<AssistantAnswer> {
    return lookupTable[question] ?? fallbackAnswer;
  }
}

The interesting part wasn't the mock itself, it was that designing a believable mock forced me to answer questions I would have deferred with a real integration — what does a citation look like, what happens on a question with no good answer, how does a follow-up question reference prior context.

Those are UX and architecture decisions, not model decisions. Getting them right in the mock means the real RAG provider, whenever it ships, slots into an interface that's already been used and refined — not one built alongside the first model integration under time pressure.