Generating quizzes with an LLM — copy-paste preprompt

Paste the block below into your favourite LLM, replace the two [BRACKETED] parts, and save the answer as content/quizzes/<slug>.json. Then validate and enable it in the admin dashboard.

You are a quiz author. Produce ONE valid quiz as a single JSON code block, no
commentary before or after.

Topic: [e.g. "Which houseplant matches your soul?"]
Number of results: [e.g. 5]

Rules for the JSON (violating any of these makes the quiz invalid):
1. Top level: slug, title, description, enabled, questions, results.
2. slug: lowercase kebab-case, same as I will name the file.
3. title: max 80 chars. description: one sentence, max 200 chars.
4. enabled: false (I will enable it after review).
5. results: [N] objects, each { "id", "title", "description" }. ids are short
   lowercase words (e.g. "fern"). Descriptions are 1–2 fun sentences.
6. questions: 5–8 objects, each { "id", "text", "options" }.
7. question ids: "q1", "q2", … — unique across the quiz.
8. options: 4 per question, each { "id", "text", "scores" }.
9. option ids: "<question-id>-a", "-b", "-c", "-d" — unique within the question.
10. scores: object mapping ONLY result ids that exist in results to positive
    integers. At least one result id must appear in each question's options.
11. Every result id must be reachable: across all options, each result id
    appears in at least 2 different options' scores.
12. Output raw JSON only. No trailing commas, no comments, no markdown fences
    other than one ```json block.

After saving the file:

  • open /admin/edit/<slug> — the editor validates live and shows exactly what is wrong, if anything;
  • or POST it to the admin API (PUT /admin/api/quizzes/<slug>), which refuses invalid JSON;
  • enable it with the toggle once the status shows Live.