Every exam paper has a genome. qDNA uses Gemini to turn scanned past papers into an evidence-backed study strategy: the recurring topics, recycled questions, and highest-value areas to study first.

Problem

RUET students already know the folklore: exam questions repeat. But proving which topics and exact question patterns recur means manually comparing years of scanned papers—a job that takes days and disproportionately benefits students with strong senior networks and curated archives.

Students have the PDFs. What they lack is a fast, auditable way to turn those PDFs into a study strategy.

Solution

qDNA is an upload-first question-genome analyzer. A student drops in scanned exam papers from any course or department. Gemini Vision reads the scans, separates and transcribes every question, extracts marks and paper metadata, and assigns semantic topics. A deterministic analysis engine then computes:

  • topic frequency and Pareto coverage;
  • expected-marks ranking;
  • question lineages that reveal near-duplicate questions across semesters and departments;
  • a source-linked topic dossier;
  • a held-out-paper backtest;
  • grounded tutoring hints and an evidence-weighted practice paper.

The result is not an opaque AI prediction. Every statistic is counted from the uploaded corpus and every topic links back to the questions that produced it.

Why This Matters

When preparation time is limited, studying every syllabus topic uniformly is inefficient. In the field-tested EMF benchmark, 5 of 17 topics account for 59.6% of 94 questions; 6 topics account for 68.1%.

More importantly, qDNA makes informal, socially distributed knowledge measurable and accessible. A first-generation student without a senior network can inspect the same recurrence evidence as a student with years of departmental archives.

Unique Contribution & Impact

Most AI study tools begin with a chat box and generate explanations from a textbook or prompt. qDNA begins with the student's own evidence—the scanned papers their instructors actually set—and turns that evidence into a transparent model of how a course is examined.

Its distinctive contribution is question lineage. qDNA does not stop at broad topic counts: it tracks near-identical questions as they mutate across papers, highlighting changed numeric literals and flagging clusters that cross department boundaries. In the EMF corpus, the same 80 µC/m³ Gauss's-law setup appears across three papers, while a polarization question changes only one number between variants. This is actionable recurrence that a generic chatbot, flashcard generator, or syllabus summarizer cannot surface.

The broader impact is threefold:

  1. Equity: pattern knowledge no longer depends on which seniors a student knows.
  2. Efficiency: students can allocate scarce study time using measured frequency and marks rather than folklore.
  3. Accountability: every ranking remains traceable to source questions, and the held-out-paper backtest exposes how well the method actually performs instead of asking users to trust an AI claim.

qDNA is course-agnostic and upload-first, so the same pipeline can analyze scanned papers from any department or institution. Each additional paper improves the evidence without changing the architecture.

How We Used AI

Gemini is load-bearing in three places:

  1. Vision OCR and structured extraction: Gemini reads photographed mathematical exam pages containing vector notation, integrals, subscripts, and Greek symbols. It segments each page into questions and returns typed JSON containing text, marks, section, paper metadata, and topic.
  2. Semantic topic classification: Gemini groups questions that share a concept even when their wording differs, making the topic genome more meaningful than keyword frequency.
  3. Grounded generation: Gemini provides scaffolded tutoring hints without final numeric answers and writes a practice paper constrained by the measured structure and ranked topics of the uploaded corpus.

The division of responsibility is deliberate: Gemini is the sensor and interpreter; qDNA owns the statistics. Frequency, Pareto coverage, lineage similarity, expected marks, and backtest coverage are deterministic TypeScript functions, not numbers generated by the model.

Official field: How did you use Gemini in your project?

qDNA uses Gemini Vision to convert scanned mathematical exam papers into structured question data—transcribing each question, extracting marks and paper metadata, and assigning semantic topics. Gemini also powers grounded tutoring hints and creates practice-paper wording within constraints measured from the uploaded corpus. Gemini is essential as the sensor and semantic interpreter; all rankings, Pareto coverage, lineage similarity, expected-marks calculations, and backtest results are deterministic local computations so every number remains reproducible and auditable.

How We Used Codex

Codex acted as the engineering partner throughout the hack day: turning the product idea into a phased implementation plan, building the upload/extraction pipeline and analysis UI, debugging Vercel timeouts and responsive overflow, writing deterministic tests, reconciling documentation with the shipped implementation, and verifying deployment boundaries. Codex also helped challenge architectural shortcuts: client-side PDF rasterization was chosen to avoid Vercel request-size limits, and deterministic lexical lineage was chosen over embeddings to preserve reproducibility and Gemini free-tier quota.

Key Features

  • Upload arbitrary scanned PDF exam papers; PDFs are rasterized in the browser and sent in small page batches.
  • Gemini structured extraction with partial-failure recovery and a page-image content-hash cache.
  • Topic genome map across papers.
  • Pareto curve showing how few topics cover most past questions.
  • Near-duplicate lineage clusters with similarity scores, provenance, changed-number highlighting, and cross-department badges.
  • Expandable topic dossier showing every source question, marks, paper, section, and number.
  • Gemini tutor hints that teach the approach without revealing the final numeric answer.
  • Evidence-weighted predicted paper matching the source corpus's measured section and marks structure.
  • Bundled sample corpora and a deterministic held-out-paper backtest.
  • Low-confidence warning when fewer than three papers are available.

Architecture

The browser uses pdf.js to rasterize PDFs, skip low-ink pages, downscale them, and send two-page JPEG batches to Next.js route handlers on Vercel. Gemini returns schema-constrained JSON. The client merges successful batches, caches results by SHA-256 page-image hash, and passes the questions to pure TypeScript analysis functions. The UI renders the genome map, Pareto curve, lineage clusters, dossier, backtest, tutor, and generated practice paper.

Stack: Next.js App Router, React, TypeScript, Tailwind CSS, Recharts, pdf.js, Google Gemini API, Vitest, and Vercel.

No uploaded PDF is persisted server-side. The Gemini API key remains in server-only environment variables.

Testing Instructions

Public demo: https://minihackathon-kappa.vercel.app

  1. Open the public demo.
  2. Upload two or more scanned exam-paper PDFs from the same course.
  3. Watch the per-page extraction progress and confirm the analysis view opens even if a batch partially fails.
  4. Inspect the headline coverage statistic, genome map, and Pareto curve.
  5. Expand a lineage card and verify its question variants and paper provenance.
  6. Expand a topic dossier and open the tutor from a question row.
  7. Generate a practice paper and verify that every question shows its evidence trail.
  8. In the local Phase 6 build, load a bundled sample and inspect the held-out-paper backtest.

Local setup:

npm install
cp .env.example .env.local
# Add GEMINI_API_KEY to .env.local
npm run dev

Automated verification: npm test -- --run currently passes 61 tests across 3 test files.

Public Demo Link

https://minihackathon-kappa.vercel.app

Public Repository Link

https://github.com/adib-11/qdna

Official field: GitHub Repository

https://github.com/adib-11/qdna

Demo Video

Not included. The live structured Devpost submission form marks video as optional, and the public deployment is available for judges to test directly.

Screenshot Shot List

  1. Landing page with the upload dropzone and concise product promise.
  2. Analysis headline, genome map, and Pareto curve populated from a real corpus.
  3. Gauss's-law lineage card showing variants, source-paper pills, and changed numbers.
  4. Topic dossier expanded to individual evidence-linked questions.
  5. Held-out-paper backtest showing predicted versus actual topics and the measured overlap.

Submission Readiness Notes

  • Registered for Build with AI @RUET as a solo participant.
  • Live repository URL is present.
  • Public Vercel deployment is present; Vercel CLI reports the newest production deployment Ready.
  • Automated test suite passes: 61/61 tests.
  • Production build passes with Next.js webpack compilation, TypeScript checking, and static-page generation.
  • Local secret scan found no high-confidence exposed token or private-key pattern and no risky credential files.
  • Phase 6 sample-corpus and backtest functionality is visible in the public deployment.
  • The analysis-view thumbnail has been uploaded to the Devpost project.
  • Video is intentionally omitted because the live structured submission form marks it optional.

Known Limitations

  • A small historical corpus supports prioritization, not a guarantee of future exam content.
  • Syllabus or instructor changes can invalidate historical patterns.
  • Complex figures and handwritten diagrams can reduce extraction quality.
  • The tool tells students where to start; it is not a replacement for studying the full syllabus.
  • The Phase 6 source changes are currently uncommitted even though the corresponding deployment is live.

TODO Official Form Fields

  • No additional required fields remain beyond the repository URL and Gemini-usage answer above.
  • Video is intentionally omitted.

Built With

  • google-gemini-api
  • next.js
  • pdf.js
  • react
  • recharts
  • tailwind-css
  • typescript
  • vercel
  • vitest
Share this project:

Updates