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.