Personal project · 2026
Kai, the chat on this site
The chat on this site. It answers questions about my work from what is published here, and shows the source behind each answer.
- Role
- Solo builder
- Result
- Every answer shows its sources, and it passes 39 of 40 test questions.
- Built with
- Next.js
- TypeScript
- Vercel AI SDK
- Upstash Redis
- MCP
- Search firstKai searches these pages before it writes.
- SourcesEach answer carries numbered sources the server checks.
- HonestAn answer without a valid source becomes “I don’t know that one.”
- BoundedPer-visitor limits and a daily cap bound the cost.
Problem
The first Kai was my resume pasted into a chatbot. The new one has to answer from my own pages, show where each fact came from, run on low-cost services, and stay safe to leave open to anyone.
What I built
Kai searches my pages before it writes anything, matching both keywords and meaning. Every answer carries numbered sources. The server checks each number against the passages it supplied; an answer without a valid source becomes “I don’t know that one.” A backup service can answer if the first fails. Per-visitor limits and a daily cap bound cost. The chat and the read-only address for other assistants share one set of tools.
Hard part
Free services differ in how reliably they use a search tool. So Kai’s server searches first, using the visitor’s last two messages, and supplies the five best passages, numbered. Kai does not depend on the chatbot choosing to search. If meaning-based search is slow or fails, keyword search still works. I keep meaning-based scores from different search services separate, because they cannot be compared reliably.
Result
My goal for Kai was at least 36 of 40 test questions answered correctly with a source. The latest run passed 39 of 40 (October 21, 2026). The 40 questions cover facts, projects, traps, unknowns, job fit and prompt injection, and the full results are on the evals page.