Skip to content
Let's Talk
AI Engineering

How I Built an AI Assistant That Actually Knows My Work

Felix Schmidt

How I Built an AI Assistant That Actually Knows My Work

There is a chat bubble on this website. If you click it and ask "What experience does Felix have with React?" or "Has Felix worked on enterprise systems?", you will get a real answer — grounded in my actual project history, not a hallucinated LinkedIn summary.

This is not ChatGPT with a custom system prompt. It is a purpose-built Retrieval-Augmented Generation (RAG) system that searches my project portfolio in real time, finds the most relevant work, and generates a response based on facts. In this post, I want to explain why I built it, how the architecture works at a high level, and what I learned along the way.

Why Build This at All?

Portfolio websites have a fundamental problem: visitors have specific questions, but the answers are scattered across project cards, tech stack lists, and case studies. Nobody reads an entire portfolio top to bottom. They scan, they skim, and they leave.

I wanted a different experience. What if a potential client could simply ask what they want to know — and get an honest, contextual answer in seconds?

That is what this assistant does. It bridges the gap between "I have all this information on my site" and "the visitor actually finds what they need."

The Core Idea: Search First, Then Answer

The key insight behind RAG is simple: do not ask the AI to know things. Ask it to read things and then answer based on what it read.

Here is the flow in plain terms:

  1. You ask a question — "What cloud platforms has Felix worked with?"
  2. The system searches — Your question gets converted into a mathematical representation (an embedding) and compared against pre-computed representations of all my projects
  3. Relevant projects surface — The system finds the 3–5 projects most semantically related to your question, even if you did not use the exact same words I used in the project description
  4. The AI reads and responds — A language model receives your question along with the relevant project details, and writes a focused answer

The beauty of this approach is that the AI never has to guess or make things up. It has the source material right in front of it. And if there is genuinely no relevant project, it says so — and suggests you reach out directly.

Why Not Just Use ChatGPT?

A fair question. I could have embedded a generic chatbot and told it "you are Felix's portfolio assistant." The problem is that generic chatbots have no grounding in reality. They will confidently fabricate project names, invent technologies I have never used, and describe experiences I have never had.

RAG solves this by constraining the AI to a verified knowledge base. Every claim the assistant makes can be traced back to a real project in my portfolio. This is not about making the AI smarter — it is about making it honest.

The Architecture at a Glance

Without going into implementation specifics, the system consists of four layers:

Knowledge Layer — My project data lives in a Supabase PostgreSQL database, with detailed descriptions, tech stacks, roles, challenges, and outcomes — all maintained in both English and German.

Embedding Layer — Each project is converted into a 768-dimensional vector using Google's Gemini Embedding model that captures its semantic meaning. This happens ahead of time, so search is fast when you actually ask a question.

Retrieval Layer — When a question comes in, it gets embedded using the same Gemini model, and a vector similarity search via pgvector — the PostgreSQL extension for vector operations — finds the closest matching projects in my Supabase database. Think of it as semantic search — it understands meaning, not just keywords. Asking about "cloud infrastructure" will match a project about "AWS deployment pipelines" even though the words are completely different.

Generation Layer — The matched projects and your question are sent to Google Gemini 2.5 Flash, which produces a natural, conversational response. The response streams back in real time — you see it appear word by word, just like you would expect from a modern AI interface. I chose Gemini Flash for its speed-to-quality ratio — fast enough for real-time streaming, smart enough for nuanced answers.

Bilingual by Design

Since my portfolio serves both English and German-speaking visitors, the entire pipeline is language-aware. Projects have descriptions in both languages. Embeddings are computed per language. The system prompt adapts to the visitor's language setting. The result feels native in both languages, not like a translation afterthought.

What I Learned Building This

Retrieval quality is everything. The AI can only be as good as the context it receives. I spent more time tuning retrieval — how projects are represented, how similarity thresholds are set, how many results to include — than on any other part of the system. If the right project does not surface, the best language model in the world cannot save the answer.

Streaming matters for UX. The difference between waiting 3 seconds for a complete response and seeing text appear immediately is enormous. Streaming transforms the experience from "is this thing broken?" to "this feels alive and responsive." It was worth the additional engineering effort.

Keep the scope tight. The temptation with any AI feature is to make it do everything — answer general coding questions, give career advice, tell jokes. I deliberately kept this assistant focused on one thing: helping visitors understand my professional experience. A focused assistant that does one thing well is infinitely more valuable than a general one that does everything poorly.

Transparency builds trust. The system prompt explicitly instructs the AI to say "I do not have enough context to answer that" when it genuinely does not know. This honesty is a feature, not a limitation. Visitors trust the assistant more when they see it has boundaries.

The Business Case

This is not just a technical showcase. It solves a real business problem.

Visitors to a portfolio site are evaluating whether to reach out. The faster they find the information they need, the more likely they are to convert. Traditional portfolios put the burden on the visitor to navigate, read, and piece together the story. An AI assistant flips this — the visitor asks, and the story comes to them.

Since launching the chat feature, I have seen visitors engage with it to ask specific questions about tech stacks, project complexity, and team experience — exactly the kind of due diligence that happens before a first call. The assistant handles the initial qualification, and by the time someone books a meeting, they already have context.

Try It Yourself

The chat bubble is right there in the corner. Ask it anything about my work — the tech I use, the projects I have delivered, the industries I have worked in. It will give you an honest answer based on real data.

And if you are interested in building something similar for your own business — a knowledge-grounded AI assistant that actually represents your work accurately — that is exactly the kind of project I love to build. Get in touch.

This topic relevant to your team? Let's discuss how I can help.

This website uses third-party services (Google reCAPTCHA, Calendly) that may set cookies. See our Privacy Policy for details.