Written exams — authoring & marking
Author scenario/essay questions (manually or AI-drafted), send them through the SME publish gate, and mark learner submissions that arrive already AI pre-marked — one at a time or in bulk. The human examiner always sets the final grade.
CLIP Learn's written exam tool lets faculty author CGI Chartered Governance Qualifying Programme (CGQP) scenario questions — a scenario stem plus a mark scheme — and mark learners' free-text answers. AI helps in two places: drafting a question and pre-marking a submission. In both cases the AI output is a draft or a provisional signal only — a human always reviews it, and the AI never sets a learner's final grade.
This page lives at /faculty/essays (shown in the navigation as Written exam). It is one screen with four stacked sections: the two authoring forms, Drafts awaiting review, the Marking queue, and Published.
Who can use this
Every action on this page requires the FACULTY or ADMIN role. Learners and other roles cannot reach it. Everything is scoped to your tenant (organisation) — you only ever see and act on your own tenant's questions and submissions.
The three stages at a glance
DRAFT. Learners cannot see it.Authoring a question
Two forms sit side by side at the top of the page. Both create the same kind of item (an "essay question" / scenario item) and both save it as a DRAFT — nothing you author is visible to learners until you explicitly publish it.
New question (manual)
Fill in the fields and press Save draft.
| Field | What it does | Notes / limits |
|---|---|---|
| Course | Attaches the question to one of your tenant's courses, or leaves it general. | Dropdown. Default is General (no course). If you pick a course you don't own (wrong tenant), the save is silently rejected. |
| Topic | Short title of the question, e.g. "Directors' duties". | Required. Trimmed to a maximum of 160 characters. |
| Prompt (scenario) | The scenario plus the instruction to the candidate — the question stem the learner reads and answers. | Required. Trimmed to a maximum of 8,000 characters. Preserves line breaks. |
| Guidance | A short learner-facing hint on what a strong answer covers. | Optional. Trimmed to a maximum of 2,000 characters. Stored as empty if left blank. |
| Model answer (SME) | The reference answer written by a subject-matter expert. Used to ground the AI marker and shown to examiners. | Required. Trimmed to a maximum of 12,000 characters. Never shown to a learner before their mark is released. |
| Mark scheme (rubric) | The criteria and marks — one criterion per line. See Rubric format below. | Required — at least one valid criterion line, or the save is rejected. |
Silent validation
If any required field (topic, prompt, model answer, or at least one rubric line) is missing, the form simply does nothing and no draft is created — there is no error banner. Check that all four are filled if a save appears to do nothing.
Rubric format
The mark scheme is a plain-text box. Put one criterion per line, with up to three parts separated by the pipe character |:
Criterion name | marks | descriptorFor example:
Issue identification | 8 | spots the governance issue
Application to facts | 12 | applies law to the scenario
Conclusion | 5 | reasoned recommendationHow each line is parsed:
| Part | Meaning | Rules |
|---|---|---|
| Criterion | The name of the marking band (first part, before the first ` | `). |
| Marks | The maximum marks for that band (second part). | Must be a whole number. If it is missing or not a number it defaults to 5. The minimum is 1 (anything lower is raised to 1). |
| Descriptor | A short note on what earns those marks (third part). | Optional. Omit the second ` |
Additional rules:
- Blank lines are ignored.
- A maximum of 12 criteria are kept; any beyond that are dropped.
- The question's total marks (
maxMarks) is computed automatically as the sum of every band's marks — you do not enter it directly.
AI-draft from a topic
The right-hand form drafts a whole question for you from a single topic. Choose a course (optional) and a topic, then press Draft with AI.
| Field | What it does | Notes |
|---|---|---|
| Course | Same as the manual form — attaches the draft to a course or leaves it general. Also gives the AI the course title for context. | Optional. If you pick a course that isn't yours, drafting is rejected. |
| Topic | The subject the AI should build a scenario around. | Required. Trimmed to 160 characters. |
What the AI produces: a 25-mark scenario question with a scenario prompt, a one-line learner guidance note, an SME model answer, and a mark scheme whose bands sum to 25. It is grounded in mainstream UK company-law and governance principles; the model is instructed not to invent case names, statute sections or figures, and to add a [verify] marker wherever a precise citation would be needed. The result lands as a DRAFT marked with source AI draft, exactly like a manual one — it is never auto-published.
Review AI drafts before publishing
An AI draft is a first pass for a human expert to check and correct. Read the scenario, model answer and mark scheme in the draft's expandable panel, edit the wording where needed, and only then publish. If the AI service is unavailable, drafting produces nothing and no draft is saved.
The SME publish gate
Every authored question — manual or AI — starts life as a draft and appears under Drafts awaiting review. The count of pending drafts is shown as an amber badge next to the heading. When there are none, you see: "No drafts — authored questions land here for review before learners see them."
Each draft card shows the course (or "General"), the total marks, the source (AI draft or manual), the topic, and the scenario prompt. Expand Model answer & mark scheme to review the SME model answer and every rubric band (criterion — marks (descriptor)).
Two actions on each draft:
DRAFT to PUBLISHED. Only published questions are visible to learners and can receive submissions. This is the gate: nothing reaches a learner without a human pressing Publish.| Review status | Meaning | Learner-visible? |
|---|---|---|
DRAFT | Authored but not yet reviewed/approved. | No |
PUBLISHED | Approved by a human; learners can sit it. | Yes |
The marking queue
The Marking queue lists every submission for your tenant's questions that is waiting for attention — status SUBMITTED (pre-mark hasn't run) or AI_MARKED (pre-marked, awaiting human release). They are ordered oldest-submitted first. A badge shows the total count; when empty you see "No answers waiting to be marked." Once you release a mark the submission leaves this queue.
Each submission card shows the question topic, the learner's name, the word count, and the learner's full answer.
Instant pre-marking on submit
The marking automation runs the moment a learner submits, not when you open the queue. On submit, CLIP's AI marker (shown in the UI as MOEgent) runs two things in parallel against the answer:
- The grounded marker — an examiner-style AI that scores the answer only against this question's rubric and model answer. It is explicitly told not to bring in outside law or facts, to award marks per criterion never exceeding each band's maximum, to reward substance and application over length, and that its marks are provisional for a human to finalise.
- The integrity check — an AI-likelihood classifier over the answer text (academic-integrity signal).
If the marker succeeds, the submission arrives in your queue already AI_MARKED with a full provisional attached — so you review rather than mark from scratch. The pre-mark is best-effort: if the AI call fails or the service is offline, the submission simply lands as SUBMITTED for you to mark by hand — it never blocks the learner's submission.
The provisional block on a pre-marked card shows:
| Element | What it means |
|---|---|
| AI provisional total | The AI's total score out of the question's max marks (aiMarks). Clamped so it can never exceed the max, and each criterion is clamped to its own band maximum — a hallucinated or over-generous score can't leak through. |
| Per-criterion breakdown | One line per rubric band: criterion: awarded/max — comment. The comment is a one-sentence reason for the marks. |
| Overall comment | 2–3 sentences of examiner-style feedback the candidate could act on. |
| AI-likelihood | The integrity score (0–100). Shown only if the check succeeded. Rendered in red when 60 or above, otherwise muted. |
A permanent note reminds you: "Provisional — a signal to speed your marking, not a final grade."
You can also expand Model answer & mark scheme on the card to see the SME model answer and rubric while you mark.
What the integrity score means
The AI-likelihood number is a calibrated, probabilistic estimate of how AI-like the writing is — never proof of authorship. It is computed as the answer's aiGenerated percentage plus 0.4× its aiRefined percentage. Interpret it by band: 0–20 very likely human, 21–40 mostly human, 41–60 mixed / uncertain, 61–80 likely AI-assisted, 81–100 very likely AI. Treat a high score as a prompt to look more closely, not as a verdict.
If AI is offline
If the AI service isn't configured or the marker fails, no provisional is written — the submission stays SUBMITTED (no total, breakdown, comment or integrity score) and you mark it fully by hand. This never blocks a learner submitting or you releasing a mark.
The two bulk actions
When the queue is non-empty, two bulk buttons sit at the top-right of the Marking queue heading. Each appears only when it has work to do, and each shows its own live count:
| Button | Appears when | What it does | Cap |
|---|---|---|---|
| AI pre-mark all (N) | There are N submissions still un-marked (the instant pre-mark didn't run — AI was offline or failed). | Runs the grounded marker + integrity check on every un-marked submission, oldest first, and moves each to AI_MARKED. | 20 per click — bounds AI spend and wall-time. Click again to work through more. |
| Confirm & release all (M) | There are M submissions already AI_MARKED. | Confirms every AI-marked answer's provisional as the final mark and releases them all: each learner is notified and the exam.result webhook fires per submission. | Up to 100 per run. |
Confirm & release all is confirm-gated — you must accept the dialog "Confirm and release all M AI-marked answer(s) to learners, using MOEgent's provisional mark and feedback as final?" before anything is released. For each answer it takes MOEgent's provisional total (clamped to the range 0…max) as finalMarks and MOEgent's overall comment as the feedback, stamps you as the reviewer, and sets the status to RELEASED.
Bulk release confirms the provisional verbatim
Confirm & release all accepts every provisional exactly as MOEgent scored it — you are not editing marks in this path. Use it when you have already reviewed the queue and are happy to sign off the provisionals as-is. If you want to change any individual mark or feedback first, release that submission on its own card (below) and let the bulk button handle the rest.
Re-run the pre-mark on one card
If a submission is still SUBMITTED (its instant pre-mark didn't run), an AI pre-mark button appears on its card. Pressing it runs the same grounded marker + integrity check for just that submission and moves it to AI_MARKED. This is the single-card equivalent of AI pre-mark all — useful for clearing the occasional answer that missed the instant pass. Running it on an already-released submission does not un-release it: it stays RELEASED and simply refreshes the provisional figures.
Release the mark (the human decision)
This is the authoritative step. Each card carries a release form with two fields, pre-filled from the provisional so it is review-and-confirm rather than mark-from-scratch. When a submission is AI-marked, a note reads "Mark & feedback pre-filled from MOEgent — review, edit if needed, then release."
| Field | What it does | Notes / limits |
|---|---|---|
| Final mark | The mark the learner actually receives, out of the question's max. | Number input. Pre-filled with the AI provisional total (if any). You can and should change it. Clamped to the range 0 to the question's max marks; a blank or invalid entry becomes 0. |
| Feedback | Free-text feedback shown to the learner. | Optional. Pre-filled with MOEgent's overall comment. Trimmed to a maximum of 6,000 characters. |
Press the release button — labelled Confirm & release on a pre-marked card, or Release mark on one you are marking by hand. This:
RELEASED.<topic>", with a body like "18/25 — feedback added" — linking them to their essays page.exam.result webhook to any configured integrations, carrying the submission id, learner id, topic, the released marks and the max marks.AI never sets the final grade
Whether you release one card, use Confirm & release all, or mark by hand, the final grade (finalMarks) is only ever written by a human action. MOEgent's provisional fills in a suggested number, a breakdown and feedback to speed you up — but nothing reaches a learner, and no downstream system is told, until you (or your bulk confirmation) release. On the per-card form the recorded mark is exactly what you type, not what the AI proposed.
Submission states
| Status | Meaning | In marking queue? |
|---|---|---|
SUBMITTED | Learner has submitted; pre-mark hasn't run (offline/failed). | Yes |
AI_MARKED | Pre-marked (on submit or by an AI pre-mark action); awaiting human release. | Yes |
RELEASED | A human has set the final mark; learner notified. | No |
Published questions
The final Published section lists every question that has passed the gate, with its topic, course (or "General"), total marks, and a count of how many learners have submitted an answer to it. When nothing is published yet it reads "Nothing published yet." This is a read-only overview — author, review and marking actions all happen in the sections above.