Back to projects
Live
AI Portfolio Assistant
A RAG chatbot that knows my whole career — retrieval, tool use, and streaming on the edge
Live on this site — try it bottom-right
AI Claude RAG Cloudflare Vectorize TypeScript Hono
How it works
The floating assistant in the corner of this site is a project in its own right: a retrieval-augmented chatbot that can answer almost anything about my background, projects, and skills — and route real contact messages to my inbox.
What it does
- Answers questions about my experience, projects, and stack in my own voice
- Retrieves the most relevant facts per question (RAG) instead of stuffing everything into the prompt
- Uses tool calling to trigger a contact form — collect a name, email, and message, then send it
- Streams responses token-by-token for a fast, live feel
- Rate-limited per IP so it stays cheap and abuse-resistant
Tech stack
- Model: Anthropic Claude (tool use + streaming) via the Claude SDK
- Retrieval: Cloudflare Vectorize for embeddings + semantic search over a hand-curated fact base
- Edge API: Runs on Cloudflare Workers alongside the Astro site
- Storage / limits: Cloudflare KV for rate limiting, D1 for chat session logging
- Abuse protection: Cloudflare Turnstile on the contact path
Why I built it
A résumé is static; a good engineer’s story isn’t. I wanted recruiters and collaborators to be able to ask — “does he know SQL Server?”, “what’s the robot actually do?”, “is he available?” — and get a specific, accurate answer in seconds. It’s also the clearest possible demo of how I build with LLMs: retrieval, tools, streaming, and guardrails, all running at the edge.