An agent that won't make things up
How the Oracle on this site answers recruiters from the archive, and why it would rather say "I don't know" than guess.
- agents
- groq
- ai-sdk
Every portfolio chatbot I have tried has the same flaw. Ask it something slightly off the page and it invents an answer, confidently, in your name. For a site whose whole job is to be believed, that is the worst possible failure.
So the Oracle in Hall VI works differently. It does not know anything about me. It has to look it up.
Tools instead of memory
The model gets a short brief (who I am, how to behave) and six tools that read the same content layer the pages render from: the project catalogue, full case studies, my experience, skills, research and credentials. When you ask what I have shipped, it lists the projects, pulls the case studies it needs in one call, and only then writes.
That has three consequences I care about:
- It can't drift from the site. Update a project in the dashboard and the Oracle knows immediately.
- It cites. Every answer links the room it drew from, so you can check it in one click.
- Gaps are visible. Ask whether I have used Kubeflow and it says the archive doesn't show it. That is the honest answer, and honest answers are what make the rest credible.
The loop
Tool-calling models love to keep calling tools. Left alone, mine spent every step it was given reading case studies and never answered. The fix was two lines: a batch lookup so one call fetches several projects, and a final step where tools are switched off, so the last thing it can do is write.
prepareStep: async ({ stepNumber }) =>
stepNumber >= MAX_STEPS - 1 ? { toolChoice: "none" } : {},Why Groq
Latency is the whole experience here. A visitor asks one question and decides in a few seconds whether this is worth their time. Groq's inference is fast enough that the lookups and the answer land before that patience runs out.
The goal was never a clever chatbot. It was a colleague who only says what the record supports.
It is rate-limited, it only discusses my work, and it will politely decline to write your linked-list homework. Try it on the home page.