Portfolio Chatbot with GraphRAG
AI & ML · Personal · 2024
I built this chatbot to turn my portfolio into an interactive way to explore my work. Instead of relying on a static about page or project list, visitors can ask questions about my projects, skills, and background, and the system responds using a Neo4j knowledge graph and retrieval-augmented generation.
Why I built it
Most portfolios are static. You scroll through sections, skim a few projects, and try to piece together what someone has actually built. I wanted something that felt closer to a real conversation, where a visitor could ask specific questions like “What did you build at Mold-Masters?” or “Which of your projects use robotics and computer vision?”.
The goal was to make my portfolio easier to explore while also building something that reflects how I think about AI systems. The chatbot lets users navigate my experience through dialogue, while staying grounded in structured information rather than generating vague summaries from scratch.
Knowledge graph and retrieval
At the core of the project is a Neo4j knowledge graph that models my portfolio as connected entities. Nodes represent things like projects, roles, technologies, interests, and domains, while edges capture how those pieces relate to one another.
- Projects store summaries, tech stacks, timelines, and key responsibilities.
- Skills and tools connect to projects they were used in, making it easier to answer cross-cutting questions.
- Relationships encode structure such as who built what, which technologies were used, and which themes connect multiple projects.
This graph-based setup makes it possible to answer more flexible questions. Instead of relying on one flat document, the system can retrieve connected context across multiple projects, roles, and technologies before generating a response.

The chatbot is embedded into my portfolio with a simple chat-style interface, grounded responses, and links back to relevant project pages when users want to explore further.
End-to-end pipeline
I designed the system as a lightweight but realistic GraphRAG-style application:
- 1. User query: A visitor asks about a project, skill, role, or area of interest.
- 2. Graph retrieval: The backend queries Neo4j for relevant nodes and connected context based on the entities in the question.
- 3. Context building: Retrieved graph data is turned into a structured prompt with project details, technologies, responsibilities, and related links.
- 4. Response generation: An LLM generates a grounded answer using that context, which helps keep responses specific and reduces unsupported claims.
This approach works especially well for questions that span multiple parts of my portfolio, such as combining manufacturing and machine learning, or comparing robotics work across different projects.
Product and UX decisions
I wanted the chatbot to feel like an extension of my portfolio, not a separate demo bolted onto the side. The interface is intentionally minimal, and the responses are designed to be concise, clear, and grounded in the actual content of my site.
I also spent time shaping the prompt and retrieval flow so the assistant sounds like me without becoming too casual or drifting away from the facts. That meant balancing tone, brevity, and technical detail while making sure users could still jump back to full project pages when they wanted more depth.
What I learned
This project helped me think more deeply about the difference between simply connecting an LLM to data and building a system that is actually useful. The graph structure made retrieval more flexible, but the real challenge was designing clean context, good prompts, and an experience that made the answers feel trustworthy.
It also became a strong way to combine several things I enjoy: backend logic, AI systems, knowledge representation, and product thinking. Longer term, I would like to expand it into a reusable portfolio template for other developers.
Tech stack
- Next.js and React for the frontend
- Tailwind CSS for UI styling
- Python backend for orchestration and retrieval
- Neo4j as the knowledge graph store
- GraphRAG-style retrieval over portfolio entities
- OpenRouter API for LLM responses
- Vercel deployment with cloud-hosted graph infrastructure