Repository navigation
Releases: munimtechnologies/quote-check
Release list
v0.4.0: Where to look first
Quote check now points a teacher to the quotes worth reading first. A Words column gives each quote's length. For every changed quote, a Where to look column counts the words that differ from the passage the student wrote (a swapped word counts once): with 1 or 2 it says to compare word by word, with 3 or more to compare with the whole passage, since the quote may be reworded or a suggested phrase. A Changed quotes first box (off by default) puts unmarked changes with the fewest differing words at the top, then marked changes, then quotes not found; every row keeps its original number. Why: MV2's audit 3 found that close copies with one word changed were mostly in short quotes (3.19% of close 4-6-word quotes against 0.74% of close quotes of 11+ words), while two in three changed long quotes were loose matches. The 1-2 word cut is a reading aid chosen for this page, not an audit finding. The verdicts, the summary line, the similarity and the checking code are unchanged; both parity checks against the Python reference were re-run for this build with 0 mismatches (4,160 and 4,000 seeded synthetic cases). English and Spanish (Spanish translated with AI). Offline: the page loads and sends nothing. By MV2 of Munim, Inc. Made with AI agents working in his name. Apache-2.0. Open it: https://rawcdn.githack.com/munimtechnologies/quote-check/v0.4.0/quote-check.html
v0.3.0: Markdown-aware mode
Quote check now reads AI feedback the way MV2's audit of 50,742 published feedback quotes did. Bold and italics, curly quotes, spacing, punctuation at a quote's two ends and capitals are set aside, and a new 'Why not exact' column names which one made the difference. An ellipsis inside a quote is read as words left out ('Same words, some left out'), and a changed quote that shows bold or italics is labelled 'Changed words, marked'. That leaves 'Changed words' for unmarked changes, the ones a teacher should read first. On by default; untick it to get v0.2.0's verdicts exactly. The checking code is unchanged byte for byte since v0.1.0, and the new reading is a JavaScript port of feedback-quote-audit's explain.py, checked against it on 4,000 seeded synthetic cases with 0 mismatches (and the original checker's 4,160-case parity check re-run with 0 mismatches). English and Spanish (Spanish translated with AI). Offline: the page loads and sends nothing. By MV2 of Munim, Inc. Made with AI agents working in his name. Apache-2.0. Open it: https://rawcdn.githack.com/munimtechnologies/quote-check/v0.3.0/quote-check.html
Quote check v0.2.0: English and Spanish
The offline quote-check page can now be shown in English or Spanish (Language / Idioma, top right; the browser's language is picked by default). The checking code is byte-for-byte the v0.1.0 code, and the parity check against the Python reference was re-run on the built page: 4,160 synthetic cases, 0 mismatches (parity/parity-report-v2.json). The Spanish text was translated with AI and has not yet been reviewed by a teacher. Open it: https://rawcdn.githack.com/munimtechnologies/quote-check/v0.2.0/quote-check.html. By MV2 of Munim, Inc. Made with AI agents working in his name. Apache-2.0.
v0.1.0: check whether AI feedback quotes your student exactly (one offline HTML file)
First release. Download quote-check.html and open it in any browser; no install, no account, nothing sent anywhere (Content-Security-Policy default-src 'none', checked by test_quote_check_html.py).
Paste the student's text and the AI feedback. Every passage in "double", curly, guillemet or low-high quotation marks is labelled Exact, Same words (only punctuation/spacing/capitals differ), Changed words (with what the student actually wrote shown beside it) or Not found. Single quotes are skipped because they double as apostrophes; a one-quote-per-line mode covers them.
Why: in MV2's preregistered quote-fidelity studies (github.com/munimtechnologies/feedback-commons, research/), roughly one quote in ten from two small local models was not an exact copy of the student's words, sometimes silently fixing the very error the feedback was about.
Verification: the checker is a JavaScript port of verbatim_quote_check.py (feedback-commons tools/, tag v0.8.0), including Python difflib's SequenceMatcher.ratio. On 4,160 seeded synthetic cases (13 synthetic sources incl. NFD accents, Greek, Turkish, Chinese, Hindi, odd whitespace; thresholds 0 to 1) category, similarity (bit for bit) and word tokens matched in every case: 0 mismatches, Node v20.19.2 vs Python 3.12.15; all four verdicts exercised. Report in parity/parity-report-v1.json. No real student text was used.
Limits: checks copying, not feedback quality; only marked quotes are checked; not yet reviewed by a teacher. Apache-2.0. By MV2 of Munim, Inc., made with AI agents working in his name.