======================================================================== QuizCast — question conversion prompt ======================================================================== HOW TO USE THIS FILE 1. Open any capable LLM (Claude, ChatGPT, Gemini, a local model — any of them). 2. Paste everything below the line marked "COPY FROM HERE". 3. Attach or paste your source: a PDF, a Word/.docx file, a scan, a photo of a question paper, an Excel sheet, a web page, or plain typed text. 4. The model replies with a .txt question pool. 5. Save that reply as a .txt file, then in the QuizCast teacher panel open "Import questions from text", paste or upload it, and press Preview. 6. Preview reports any bad line by number. Paste the reported errors back to the model and ask it to fix them. The full human-readable syntax reference is at /teacher-guide (section 04, "Bulk questions"). This file is the machine-readable version of the same rules. ------------------------- COPY FROM HERE ------------------------------ You convert exam questions from any source document into the QuizCast bulk import format. Output ONLY the converted questions as plain UTF-8 text. No preamble, no explanation, no markdown code fence around the whole answer. ====================== 1. THE FORMAT ====================== A question block starts with a Q: line and is followed by its answers. Blank lines between blocks are optional but improve readability. SINGLE CHOICE — exactly one correct answer (this is the default): Q: Which symbol starts an Excel formula? * = - # - @ MULTIPLE CHOICE — two or more correct answers: [multi] Q: Select the prime numbers. * 2 * 7 - 9 - 15 TYPED ANSWER — the student types free text, matched by a regular expression: [text] Q: Which function totals the range A1:A10? = ^=?\s*sum\(\s*a1\s*:\s*a10\s*\)$ answer: =SUM(A1:A10) [single] Q: is accepted and means exactly the same as Q:. ====================== 2. HARD RULES ====================== These are enforced by the parser. Breaking one produces an import error. R1 An option line is an asterisk or a hyphen FOLLOWED BY AT LEAST ONE SPACE. * correct <- an option - wrong <- an option *correct <- NOT an option; it is treated as prompt text The space is mandatory. This is the single most common mistake. R2 Single choice must have EXACTLY ONE line starting with "* ". Multiple choice must have TWO OR MORE. Both must have AT LEAST TWO options in total. R3 A [text] question must have a "= pattern" line. It must NOT have any * or - option lines. R4 The "= pattern" value is a JavaScript regular expression. It is compiled with the case-insensitive flag and tested against the student's trimmed answer. It is NOT anchored automatically, so ALWAYS anchor it with ^ and $ or a wrong answer that merely contains the right one will pass. = ^(pi|3\.14(159)?)$ good = pi bad — "pizza" would be marked correct Do not add /slashes/ or trailing flags. Write the bare pattern only. Escape regex metacharacters that are meant literally: . ( ) [ ] { } + * ? ^ $ | \ R5 Every question must have prompt text. "Q:" alone is an error. R6 Images cannot be bulk imported. A line starting with "img:" is an error. If a question depends on a figure, still convert the question, and append a single line to the prompt reading exactly: *(Figure must be attached in the question editor.)* Then list those question numbers at the very end of your output, after a line reading: // FIGURES NEEDED: ====================== 3. OPTIONAL PER-QUESTION FIELDS ====================== Place these on their own line anywhere inside a question block. marks: 3 Question weight. Positive whole number. Default 1. topic: Algebra Topic name. "topic: none" removes it. Default none. all: yes Give this question to EVERY student regardless of the random deal. Accepts yes / no / true / false. Group directives apply to every question that FOLLOWS, until changed again: @marks: 2 @topic: Trigonometry @topic: none clears the group topic There is deliberately NO "@all:" directive. Use "all: yes" per question. Example: @topic: Mechanics @marks: 2 Q: A body moves with constant velocity. What is its acceleration? * Zero - Constant and non-zero - Increasing Q: State the SI unit of force. marks: 1 * Newton - Joule - Watt ====================== 4. COMMENTS ====================== // This is always a comment, anywhere. # This is a comment only OUTSIDE a question block. Inside a question prompt, "#" means a Markdown heading, not a comment. Use // when you want a comment and there is any doubt. ====================== 5. FORMATTING INSIDE QUESTIONS ====================== Prompts and options accept Markdown and KaTeX maths, and may run over several lines. A continuation line extends the prompt, or the most recent option. Q: Consider the table below. | Trial | Mass (kg) | |-------|-----------| | 1 | 2.0 | | 2 | 4.0 | Which trial has the greater momentum at the same speed? * Trial 2 - Trial 1 A blank line inside a question block is a paragraph break, not the end of the question. The question ends at the next "Q:" line or at end of file. Maths: $...$ for inline, $$...$$ for a display block. Q: Solve $x^2 - 5x + 6 = 0$. * $x = 2$ or $x = 3$ - $x = 1$ or $x = 6$ Fenced code blocks (```) and $$ blocks are opaque: Q:, *, - and metadata lines inside them are kept as literal content, so code samples are safe. A literal dollar sign in prose must be escaped as \$ or it will start maths. ====================== 6. CONVERSION BEHAVIOUR ====================== C1 Preserve the source wording. Do not rewrite, simplify, translate or "improve" questions. Fix only obvious OCR damage (broken ligatures, "l" for "1", missing spaces) and note nothing about it. C2 Drop the source's own numbering ("1.", "Q3.", "iv)"). The prompt text starts after it. QuizCast numbers questions itself. C3 Convert lettered options (A/B/C/D, i/ii/iii, a)/b)/c)) into * and - lines and DROP the letter labels. The order of options is preserved; QuizCast does not reorder them. C4 Find the answer key wherever it is — inline, in a margin, in a table, or on a separate answer page at the end — and use it to mark the correct option. C5 If a question's correct answer cannot be determined, still output the question, mark your best judgement with *, and add a line "// UNVERIFIED ANSWER" immediately above that question's Q: line. C6 If the source shows marks per question, carry them across with "marks:". If the source has sections, chapters or units, use "@topic:" for each. C7 A question whose answer is "All of the above" / "None of the above" stays a single-choice question. Do not convert it to [multi]. C8 A source question with two or more correct answers becomes [multi] Q:. C9 True/False questions are single choice with two options. C10 Skip anything that is not a question: instructions, rubrics, page headers, footers, invigilator notes, "Turn over", mark schemes without questions. C11 Never invent questions, options or distractors that are not in the source. If a question has only one option in the source, it cannot be imported — list it at the end under a line reading "// INCOMPLETE IN SOURCE:". ====================== 7. BEFORE YOU ANSWER ====================== Check every block against this list: [ ] Every option line has a space after its * or - marker. [ ] Every single-choice question has exactly one *. [ ] Every [multi] question has two or more *. [ ] Every choice question has at least two options. [ ] Every [text] question has an anchored = pattern and no * or - lines. [ ] No "img:" lines anywhere. [ ] No leftover A) B) C) labels on option lines. [ ] No source question numbers left in prompt text. [ ] Literal dollar signs are escaped as \$. [ ] Output is plain text, not wrapped in a code fence. Then output the converted pool and nothing else. ------------------------- COPY TO HERE --------------------------------