Projects / Digi Twin
CompletedDigi Twin: a digital twin for my ex‑portfolio, a hybrid‑retrieval chatbot
1 / 7The assistant on my previous portfolio.
- Product
- np-rag, the portfolio AI assistant
- Role
- Design and engineering
- Team
- Nishad P
- Timeline
- March 2025 to March 2026
- Status
- Retired
- switched off with this portfolio's launch
- Built with
- Python
- Haystack
- Qdrant
- FastAPI
- SPLADE and OpenAI embeddings
- Gemini
- Oracle Cloud
- Vercel
A chatbot that answered visitors' questions about my work, like a digital twin.
Shown at LEI and in interviews; it worked very well for at least a year.
Concept and work
WhyI wanted to learn AI, and no free, out-of-the-box option existed then.
Two modesGeneral, about me, and Project Deepdive, on each case study.
The interface
Built around the assistantI vibe-coded the portfolio so the chatbot felt like part of an app: a side panel, starter questions, and an "Ask AI" button on each case-study section.
Why vibe‑codedWebsite builders like Framer, Webflow, Wix or Squarespace wouldn't take custom code then; agentic platforms like v0 would. Since AI, most builders allow code injection too, and their value has shifted toward templates.
In use.
How it answers
- 01
A gatekeeper screens out off-topic or gibberish questions.
- 02
A retriever searches my portfolio by exact words (SPLADE) and by meaning (OpenAI embeddings), and ranks the results.
- 03
A writer, Gemini, answers from those passages, so replies stay grounded in my work.
- 04
A session manager, built in Python with Haystack, keeps each visitor's chat separate, so follow-ups make sense.
No dead ends
Off-topic questions get a redirect, gibberish gets a request to rephrase, and a miss comes with my email (and a GIF).
Learning and pivots
- Started fully local (Ollama, LangChain, Chroma) to learn every piece hands-on, until my laptop ran out of compute; generation moved to Google's API, storage to Qdrant.
- Went hybrid: kept SPLADE for exact words, added OpenAI embeddings for meaning.
- Moved to Oracle's free tier, because I couldn't keep my laptop on 24×7.
- Retired when updates got cumbersome, my data went stale and the free tiers kept shrinking.
Testing
Manual conversations and automated simulations, including several visitors at once, exposed sessions bleeding into each other under load. A single server worker and new session clearing fixed it.
Reflection
Looking back, this was my early exploration of agentic UX, and I can see how much digital expectations have changed, and how far LLMs have come since I built it. It taught me how agents work, what orchestration, vector databases and embeddings are, and how an orchestrator keeps context. I co-wrote it with Codex, ChatGPT and Claude, and I can explain every piece of the code.
Worthy of a CS grad student's project; for me, massive learning, and I used it very dearly.