Chapter 09 · Capstone RAG Track Full-stack Project

QA Copilot: ask one question, get a cited answer from all your QA knowledge.

Multi-source Retrieval-Augmented Generation for QA engineers. One chat box grounded in your Selenium framework, your Playwright framework, your test-case repository, your PRDs, and your JIRA bug history, with sources you can click and verify.

01 What students build

The capstone of the RAG track. Five knowledge sources are chunked and embedded into five Qdrant collections. A router classifies each question, hybrid dense + sparse retrieval with RRF pulls candidates, a cross-encoder reranks them, and Groq's gpt-oss-120b writes the answer with citations. React chat UI with a built-in RAG Explorer.

Intent Routing

A classifier decides which of the 5 collections a question belongs to, so retrieval never mixes Playwright answers into Selenium questions.

Hybrid Retrieval

Dense (BGE-M3) + sparse vectors fused with Reciprocal Rank Fusion, then cross-encoder reranking for precision.

RAG Explorer

A debug view that shows every retrieved chunk, its score, and which collection it came from · RAG you can inspect, not a black box.

02 Architecture

Question+ chat history
──▶
Rewritestandalone query
──▶
Router5 collections
──▶
Hybrid + RRFQdrant · BGE-M3
──▶
Rerankcross-encoder
──▶
Groq LLMgpt-oss-120b
──▶
React UIanswer + sources
selenium_code · playwright_code · vwo_testcases · vwo_docs · vwo_bugs

03 Live demo (simulated with sample data)

This is a UI walkthrough with pre-baked sample data so you can feel the product without running the backend. In the course you run the real thing locally: Qdrant + FastAPI + React.

qa-copilot · localhost:5173 demo · sample data

04 Inputs & outputs

What goes in

  • Natural-language QA question + conversation history
  • Selenium & Playwright framework repos (auto-chunked)
  • VWO test-case CSV & PRD PDFs
  • JIRA bug history (markdown export)

What comes out

  • Grounded answer with inline [1][2] citations
  • Clickable source chunks with file paths & scores
  • Router decision + retrieval trace in RAG Explorer
  • Streaming chat with conversation memory

05 How it's built

Ingest five sources with source-aware chunking (code-aware for repos, row-wise for CSVs, section-wise for PDFs).
Embed with BGE-M3 dense + sparse vectors into five Qdrant collections.
Rewrite follow-up questions into standalone queries using chat history.
Route each query to the right collection(s) with an LLM classifier.
Retrieve hybrid candidates, fuse with RRF, rerank with a cross-encoder.
Generate the cited answer with Groq gpt-oss-120b and stream it to the React UI.

06 Tech stack

Python · FastAPIQdrantBGE-M3 hybrid embeddingsCross-encoder rerankGroq gpt-oss-120bReact + ViteRRF fusionIntent routing