Kirti Kumar Sahu · August 2, 2026 · 11:00 · 3 min read
The "Ask AI" button on this site drops you into a chat that answers questions about me — my experience, my projects, what I'm actually good at versus what I'm still learning. It's a small feature, but the design decision behind it is the part worth writing up: I grounded it with context stuffing, not RAG, and that was deliberate.
Every request to /api/ask does the same thing: pull my resume data, skills, projects, and published blog entries from their single source of truth, stitch them into one system prompt, and send the whole thing to Gemini (gemini-flash-lite-latest) alongside the last few turns of conversation. No embeddings, no vector store, no retrieval step. The entire "knowledge base" rides into the prompt on every call.
I've built real RAG before — a separate project of mine runs a proper pgvector-backed retrieval pipeline for multi-tenant chat. So this wasn't a case of not knowing how. It came down to something simpler: my entire corpus — work history, skills, projects, blog posts — comfortably fits inside a single context window with room to spare.
Retrieval solves a problem I don't have here: a corpus too large to send in full. Bolting on embeddings, a vector store, and a similarity search step to serve a few thousand tokens of resume text would mean a second data pipeline to keep in sync, more infra to pay for, and more places for the answer to be subtly wrong.
RAG earns its complexity when the corpus stops fitting — hundreds of documents, a knowledge base too big for one prompt, content that changes faster than you'd want to re-stitch a full prompt per request. None of that is true here. If this ever becomes a multi-user product answering questions over a large, growing document set, context stuffing stops being the right call and retrieval becomes worth its cost. For one person's resume and blog, it's the simpler system that also happens to be correct.