Ask my portfolio anything

A chat agent that only knows my work, answers in my voice, and only calls AI when it has to.
Most visitors have one question, like how I work with engineers. k.ai answers it in a few lines and links to the page with the details. Common questions get a saved answer instantly. New ones go to a live AI that sees only the notes it needs, so it stays fast, honest and within a free API limit.
- ROLE
- Designer and builder
- TIMELINE
- First version Dec 2025, live version Oct 2026
- PLATFORM
- Web, inside this portfolio
- BUILT WITH
- Next.js, TypeScript, Groq, OpenRouter, Claude Code
- FIRST VERSION
- React, Express, Gemini GitHub ↗
Let people ask, instead of read
A portfolio asks people to read a lot. k.ai lets them ask one question and get a short answer, in my voice, with a link to the full story.
It only talks about my work. It says no to everything else, and when something isn't in my notes, it says so instead of guessing.
Three versions, each one cheaper and more honest
- Gemini, one long prompt (Dec 2025): built in Google AI Studio. All my notes, rules, tone and error handling in one system prompt, behind a small Express server. It worked, but every message, even hi, called the AI.
- No AI at all: 45 answers I wrote myself, matched by keywords, plus a search over my case studies. Free and instant, but anything new got a quote from a page, not a real answer.
- Saved answers first, live AI second (Oct 2026): the same saved answers handle common questions, and only new ones go to a live AI, with just the notes that match. Built with Claude Code.
A router decides if a question needs AI
- Typed, or a suggested chip
- Chips, hi, thanks, bye
- Clear matches
- Off-topic or personal
- → saved answer, no AI
- Only the sections
- that match the question
- Groq first
- Gemma on OpenRouter if busy
- A few short lines
- A link, 3 follow-ups
Every question the chat suggests has a saved answer, so clicking around costs nothing. Long, specific questions skip the saved answers, because a general reply to a detailed question feels wrong.
- RAG, kept simple: my notes (case studies, experience, the saved answers) are split into small sections. For each question, the sections that share the most words with it are picked, up to about 5,000 characters.
- A small core always goes: the rules, my tone, about me, my experience and the list of pages to link to.
- Newest wins: the saved answers are the most up to date, so the AI is told to trust them over older notes.
Built to fit a free API limit
The free Groq tier allows about 8,000 tokens a minute. My full notes are about 14,000, so sending everything with each message wasn't possible. These limits keep it running for free:
Three kinds of reply



BUILD YOUR OWN · Write your common answers first, send the AI only the notes it needs, and cap the rest. Any AI coding tool can build this in an afternoon; the thinking is in the rules.


