Plagiarism & integrity.
Two students hand in the same paragraph. On paper a teacher might spot it; across a class of forty online submissions, they will not. YESS puts a quiet integrity check under the LMS: when a student submits text, the database compares it against every other submission on that same assignment and raises a flag if two look copied. A review board collects those flags, and the teacher decides — real concern, or false alarm. This handbook is deliberately honest about a small, sharp tool: it catches classmate copy-paste, and it is not a web-scale plagiarism service.
- 2detection methods
- 2flag states
- 5chapters
- ≈8 minto read
Prologue
A small, sharp tool#
Let us be precise about what this module is, because the word "plagiarism" invites expectations it does not meet. This is not Turnitin. It does not search the web, published papers, other assignments, or previous years. It has no external service behind it and no AI paraphrase detector. What it is: a guard, built entirely inside the database, that catches the most common academic shortcut in a class — one student copying another's answer on the same assignment.
The whole feature is one table of flags and one review screen at /dashboard/lms-plagiarism. There is nothing for a teacher to run, schedule, or configure. A flag appears when the database notices two submissions are too alike; a teacher reads it and either lets it stand or dismisses it as a false positive. That is the entire loop, and its honesty is the point — a school knows exactly what it is relying on.
Catch the obvious copy between classmates, surface it plainly, and leave the judgement to the teacher.
Chapter one
How a flag is raised#
The detection is automatic and runs at the moment a student submits. When a text submission is written or updated, a database trigger wakes up, normalises the text (lower-cased, whitespace collapsed), and compares it against every other submission on the same assignment in the same school. It works in two passes:
Two ways it compares
- 1
Exact match (hash)
The normalised text is hashed. If another submission on the assignment has an identical hash, the two are character-for-character the same after tidying whitespace and case — a straight copy-paste. The flag is recorded as an exact match at the top of the similarity scale, and the check stops there.
- 2
Near match (trigram)
If nothing is identical, the trigger measures character-trigram similarity between the submission and each other one. When two submissions cross a high similarity threshold — a light edit of the same text — a near-match flag is raised carrying the measured similarity. It is good at catching 'changed a few words', weaker against genuine paraphrase.
A few honest boundaries baked into the trigger: it only looks at text submissions of a reasonable length (very short answers are skipped, since two one-liners are naturally alike); it only ever compares within a single assignment; and it never reaches outside the school. File uploads, PDFs, and images are not analysed at all — only typed text. And the whole check is best-effort: if the text-similarity capability is unavailable, the trigger simply skips rather than blocking the submission.
Chapter two
The review board#
A teacher or admin with LMS-assignment view rights opens /dashboard/lms-plagiarism. The screen is a single board — every flag in the school, split into what needs looking at and what has already been handled. Across the top, four counts:
- Active — flags not yet dismissed; the working queue.
- High severity — the strongest matches, the ones to open first.
- Exact match — the character-for-character copies.
- Dismissed — the flags already cleared as false positives.
Each active flag is a card carrying its similarity, a tag saying whether it was an exact or a near match, when it was detected, and the identifiers of the two submissions involved — sorted so the strongest matches sit at the top. The only action is Dismiss as false positive: the reviewer must type a short reason (a template answer everyone was told to reuse, a shared quotation, a legitimate collaboration), and the flag moves into the history section with that reason attached. There is no un-dismiss — clearing a flag is a considered, recorded decision.
Chapter three
What it does not do#
Being clear about the ceiling is as useful as describing the floor, so a school can size its expectations correctly:
- No web or corpus check. A student who copies from a website, an encyclopedia, or a friend at another school is not caught — only similarity between two submissions on the same assignment is measured.
- No cross-assignment or cross-year memory. Reusing last year's essay, or the same answer on a different assignment, does not raise a flag.
- Text only. Uploaded files, PDFs, images, and audio are never analysed; a submission has to be typed text to be compared.
- Not paraphrase-proof. The near-match measure is character-based, so a thorough rewrite that keeps the ideas but changes the words will slip under the threshold.
- The teacher decides. There is no severity ladder that punishes on its own, and no student notification — a flag is information for a human, not a verdict.
None of this is a defect to hide; it is the deliberate scope of a minimum guard. If a school needs web-scale originality checking, that is a different, larger integration — noted in the roadmap below.
Chapter four
What this guard does well#
Four things done right
- 1
Detection you cannot forge
Flags are written only by the database trigger; the review screen can dismiss but never create one, and the client is blocked from inserting flags outright. Every flag reflects a real measured similarity, not a manual accusation.
- 2
Zero effort to run
There is nothing to schedule, upload, or configure. The check fires on submission automatically, so a teacher's only job is to read the board — the detection has already happened by the time they open it.
- 3
Exact and near, in one pass
The same trigger catches the character-for-character copy via a hash and the lightly-edited copy via trigram similarity, tagging each flag with which it was so a reviewer knows how strong the match is at a glance.
- 4
A dismissal with a reason
Clearing a false positive requires a written reason and is kept in history — so the record of what was reviewed, and why it was cleared, survives long after the assignment is graded.
Planned & honest gaps
What is still to come#
This module is intentionally the minimum guard, and its author labels it exactly that. The larger integrity product is roadmap, not shipped — here is the straight list.
Five honest gaps
- 1
External originality checking
Web, corpus, and cross-year comparison — the kind a dedicated plagiarism service does — is out of scope today. A pluggable external-provider integration is the planned upgrade for schools that need it.
- 2
Per-assignment filtering
The board shows every flag in the school at once; filtering to a single assignment or class is not wired yet, so at scale the queue can get long. A per-assignment view is planned.
- 3
File-content analysis
Only typed text is compared; uploaded documents are never read. Extracting and comparing text from file submissions is planned.
- 4
A resolution trail
A flag is either active or dismissed — there is no 'confirmed', 'escalated', or 'penalty applied' state, and the reviewer's identity is not yet stamped on a dismissal. A richer resolution workflow is planned.
- 5
Student notification
Nothing notifies a student that their work was flagged, and no consequence fires automatically. Linking flags to conduct and to a notification is planned.
Adjacent modules
Where integrity connects#
The integrity check sits under the LMS assignment flow, feeds the teacher's judgement in the gradebook, and shares the anti-cheat instinct of the examinations engine.
Adjacent modules
- 12LMS & virtual classesFlags are raised on assignment text submissions; the review board is gated by the same LMS-assignment permissions as the course itself.
- 07Gradebook & assessmentA flag is evidence a teacher weighs when grading — the consequence of a real match is applied in the gradebook, not by the flag itself.
- 08Examinations & online examsThe exam engine carries its own real-time invigilation and anti-cheat; this module is the assignment-side cousin of that instinct.
- 11Conduct & restorationA confirmed integrity breach is a conduct matter — recording it and choosing a restorative response lives in the conduct register.
- 57Offline assignmentsPaper-modality assignments are recorded and graded off-platform, outside the text-similarity check that only sees typed submissions.
Tutorial
Do it step by step#
Work the integrity check the way it is meant to be worked — let it run on its own, then review what it surfaces. Four steps, all on the teacher's side.
- 1
Let submissions flow in
Nothing to switch on. When students submit text on an assignment in the LMS, the database compares each one against the others on that assignment and records a flag for any that are too alike — automatically, at submission time.Only typed text of a reasonable length is compared. File uploads and very short answers are skipped by design.
- 2
Open the review board
Go to /dashboard/lms-plagiarism. Read the four counts — active, high severity, exact match, dismissed — and start with the high-severity and exact-match flags at the top of the active list. - 3
Read the flag
Each card shows the similarity, whether it was an exact or near match, and the two submissions involved. Open the assignment in /dashboard/assignments to read the actual work and judge whether the match is a real concern. - 4
Dismiss or let it stand
If it is a false positive — a shared template, a common quotation — click Dismiss as false positive, type a short reason, and it moves to history. If it is genuine, simply leave it active and handle the consequence through grading or a conduct note. There is no automatic penalty.There is no un-dismiss, so dismiss deliberately — the reason you type is kept on the record.
A copy caught the moment it lands, surfaced with its evidence, and cleared or kept by the one person who should decide — the teacher.