The problem
Recruiters skim. A portfolio answers the questions I predicted; a chatbot answers the ones they actually have. The risk with LLMs is confident nonsense, and confident nonsense about my own experience is worse than no answer.
Key decisions
1Retrieval first, generation second
The model only answers from a curated knowledge base about my projects and experience, retrieved per question. No retrieval hit, no answer. The prompt requires citing which document backs each claim.
2Refusal as a feature
Out of scope questions get a plain refusal and a pointer to my email. A bot that says 'I do not know that' earns trust for the answers it does give.
3Knowledge base editable without code
Content lives in plain files I can update when a project ships. Rebuilding the index is one command. If updating is hard, the bot rots.
Outcome
Ran on portfolio v2. This version ships without it while I rebuild it on this stack; the nav has a slot reserved. At FoodStyles I later built the same pattern in production with chunking, cosine retrieval and refusal guardrails, used by non technical staff daily.
