AI Portfolio Chatbot

A self-hosted RAG assistant that answers questions about this portfolio using only its own content.

Most portfolio chatbots are a third-party widget bolted onto a site. This one isn't — it's a dedicated FastAPI microservice with its own vector store, indexing this very site's project and blog content.

How it works

Every .mdx file in this repository's content directory is chunked, embedded, and stored in Postgres via pgvector. When a visitor asks a question, the backend retrieves the most relevant chunks and asks an LLM to answer strictly from that context — no hallucinated claims about projects that don't exist.

User question → similarity search (pgvector) → relevant chunks → LLM → streamed answer

If nothing relevant is found, the assistant says so honestly instead of making something up.

Why build it this way

Self-hosting the retrieval pipeline — rather than delegating to an off-the-shelf chatbot builder — is the point of this project: it's a working demonstration of a production-shaped RAG system, not just a description of one.