DEV Community

Balumohan B
Balumohan B

Posted on

I Built Question Bank Desk — a source-grounded CA study companion for my friend

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I Built

I built Question Bank Desk, a private, source-grounded CA exam study companion for a friend preparing from a collection of question-bank and subject PDFs.

The problem was simple: question banks are useful, but searching through long PDFs to find a topic, understand a question, or confirm where an answer came from is slow and frustrating. My friend needed a study tool that could answer questions naturally without losing the connection to the original material.

Question Bank Desk lets them ask things like:

  • “Explain Question 12 step by step.”
  • “Which topics appear in this question bank?”
  • “Make a checklist of areas I should practise.”
  • “Summarise the topics covered and show likely coverage gaps.”

Every answer is grounded in retrieved PDF passages and displays the source PDF, page number, and detected question number. It also supports multi-turn chat history, so a follow-up question can keep the same study context.

Demo

Try the live app here:

Open Question Bank Desk

The interface is designed as a quiet study desk rather than a generic chatbot. It includes a source trail beside the conversation, analysis-oriented study prompts, and an animated Shan Shui–inspired landscape layer.

Code

The full project is open source on GitHub:

How I Built It

Question Bank Desk is built around open-source AI components:

  • Qwen 2.5 Instruct (Qwen/Qwen2.5-3B-Instruct) for local answer generation through Hugging Face Transformers.
  • BAAI BGE Small (BAAI/bge-small-en-v1.5) for semantic embeddings.
  • FAISS for fast local vector search over extracted PDF passages.
  • PyPDF for page-level PDF extraction.
  • Gradio for the shareable web interface.
  • Shan Shui Infinite, an MIT-licensed procedural JavaScript/SVG landscape project, for the decorative visual layer: LingDong-/shan-shui-inf.

The ingestion pipeline reads PDFs page by page, detects question numbers when possible, chunks the text, generates embeddings, and stores the vectors in a persistent FAISS index.

When a student asks a question, the app retrieves the most relevant passages before generating an answer. For summaries, checklists, topic maps, and coverage-analysis requests, it retrieves broader evidence and instructs the model to separate supported findings from gaps in the available material.

I also treated the user experience as part of the build:

  • The newest answer stays in view after a query.
  • Only the pending final reply shows a loading state.
  • Previous messages remain visible during generation.
  • The chat input has readable black text on a light background.
  • Source cards make it easy to verify the answer rather than blindly trust it.

Why Does Open Innovation Matter?

Open innovation is the reason this project can be tailored to a real student instead of forcing their study material into a generic assistant.

Using open-weight models and open-source retrieval tools means I can:

  • keep the PDF corpus and FAISS index under my own control;
  • swap Qwen for another compatible Hugging Face model if hardware or quality needs change;
  • improve the question-number parser for the exact layout of CA material;
  • change the retrieval and study-analysis behavior without depending on a closed model provider;
  • run the core workflow locally or on infrastructure I choose.

For this project, open source is not only a cost decision. It makes the assistant inspectable, adaptable, and much better suited to personal study material.

What I Learned

A RAG app becomes more useful when it does more than answer one question at a time. The most valuable feature for this use case is the evidence trail: it helps a student move from “the chatbot said this” to “this came from this PDF, on this page, in this question.”

I also learned that study analytics need to be honest. A tool should say when the retrieved evidence is incomplete instead of pretending it has mapped an entire syllabus.

Prize Categories

I am entering the overall Hacktoberfest Weekend Challenge: Build for a Friend.

I am not claiming a partner category because this project does not use partner technology.

Top comments (0)