

11 September 2026

A quiz platform with only teacher-written questions is straightforward. The moment you add LLM-generated questions into the same system, you hit a real data-modeling problem: both need to live in the same schema, be gradeable the same way, and be indistinguishable to the quiz-taking UI — which is a very different problem than just "call an LLM to generate some questions."
A question object can't have a field like source: "teacher" | "ai" that then branches the entire rendering and grading logic downstream — that's how you end up maintaining two quiz systems that happen to share a database. Instead, both question types normalize into the same shape (prompt, options, correct answer, explanation) at creation time, so everything past that point — rendering, grading, analytics — doesn't need to know or care where a question came from.
The difference between teacher-written and AI-generated questions matters at exactly one point: creation. A teacher fills out a form. An LLM generates a batch from a topic prompt, which then goes through the same validation and normalization step a manually-entered question would — so a malformed or ambiguous AI-generated question gets caught before it ever reaches a student, not after.
NestJS's module system mirrors the same "keep concerns separate" idea as the data model itself — the AI generation logic, the grading logic, and the CRUD layer for manually-created quizzes are separate modules that share the same underlying question schema rather than separate systems bolted together.
Any system that mixes human-created and AI-generated content runs into this same fork: build two parallel pipelines, or normalize at the boundary so everything downstream is source-agnostic. The second approach costs more thought upfront and pays for itself immediately the first time you need to add a third source (imported question banks, for example) without rewriting the grading logic again.
FAQ
They're not, past the creation step — both normalize into the same question schema (prompt, options, correct answer, explanation), so rendering, grading, and analytics are identical regardless of source.