Skip to content
ArsalanjdevPublic

About

AI-powered knowledge platform combining RAG, semantic search, and automated quiz generation to turn personal documents into an interactive learning experience.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

Repository files navigation

🧠 Quizzical

Quizzical is a backend-focused project that turns raw documents into structured quizzes using LLMs. It’s less about “using AI” and more about building a system that actually supports it — async processing, job orchestration, and a clean pipeline from input → generation → storage.


✨ What it does

Quizzical takes source material (PDFs, text, etc.), processes it, and generates quizzes automatically.

Users can:

  • Upload documents 📄
  • Generate quizzes from them ⚙️
  • Retrieve structured questions 📊
  • Control difficulty and size 🎯

🔄 How it works

At its core, everything revolves around a generation job.

  1. User requests a quiz
  2. A job is created and stored
  3. A background worker picks it up
  4. Document content is chunked & retrieved
  5. LLM generates questions
  6. Results are saved and exposed via API

This avoids blocking requests and keeps the system responsive even with heavy LLM calls.


🧰 Tech Stack

Backend

  • Django — core framework
  • Django REST Framework — API layer

Async Processing

  • Celery — background task queue
  • Redis — broker for job distribution

Database

  • SQLite (development)
  • PostgreSQL (target for production)

AI Layer

  • Embeddings — semantic retrieval of document chunks
  • LLM APIs — question generation

Auth

  • JWT (JSON Web Tokens) — stateless authentication

🏗️ Architecture

The project is split into focused Django apps:

  • accounts → authentication & users
  • documents → upload, parsing, chunking
  • quizzes → quiz + question storage
  • generation → job orchestration + Celery integration

The generation app ties everything together — it creates jobs, triggers workers, and connects documents to quiz output.


⚙️ Design Choices

Job-Based Generation

Quiz creation is not handled in a single request. It’s tracked as a job:

  • easier to monitor
  • retry on failure
  • scalable with more workers

Async First

Anything expensive (LLM calls, embeddings) runs through Celery. Sync logic is only a stepping stone.

Embedding-Driven Context

Instead of passing full documents:

  • content is chunked
  • embedded
  • selectively retrieved

This improves quality and keeps token usage under control.

Clear Separation

Each app handles one concern. No mixing of responsibilities, which keeps the codebase maintainable.


🔐 Access Control

  • Users only access their own documents and quizzes
  • All write operations require authentication
  • Public access is minimal by design

🧪 Development Approach

Built iteratively:

  • start simple → evolve into async
  • understand infra (queues, workers, jobs)
  • prioritize clarity over premature optimization

🚧 Next Steps

  • Job status tracking (polling / WebSockets)
  • Better prompt engineering
  • More question formats (MCQ, open-ended, etc.)
  • Lightweight frontend
  • Sharing & collaboration

📌 Status

In progress — focus is on solidifying the generation pipeline and system design.

About

AI-powered knowledge platform combining RAG, semantic search, and automated quiz generation to turn personal documents into an interactive learning experience.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages