ReadOnce: I wanted less rereading, so I kept the model's mistake visible
Description and use
ReadOnce is a web app that compares earlier and current notes, flags possible repeats using sentence embeddings and lexical guards, and outputs an audit JSON while preserving all original content.
Problem
Users need to detect repeated or paraphrased content in new notes without losing the original text or relying on external APIs.
Outcome
In 4/4 calibration and 12/12 held‑out synthetic cases, ReadOnce matched expectations, outperforming an exact‑only baseline (0/4 and 10/12). One role‑swap miss was documented and retained for transparency.
Workflow
- Load current and earlier notes into the two input boxes
- The app tokenizes each note and generates 384‑dimensional vectors via Xenova/all-MiniLM-L6-v2
- Compute cosine similarity between each current note and all earlier notes
- Apply lexical guards (quantity, date, negation, status words, uppercase identifiers) to filter false positives
- Flag notes with cosine ≥0.82, runner‑up gap ≥0.06, and equal protected lexical facts as "possible repeat"
- Render all current notes with reference links and reasons
- Export audit JSON containing original text, references, scores, reasons, settings and timings
Evidence
ReadOnce takes a smaller job: compare an earlier set of notes with a current one and suggest which lines might repeat earlier meaning. It keeps every current line, its earlier reference, the actual model score and a reason. Nothing is deleted or rewritten.
The final actual browser-model run matched the authored expectations in 4/4 calibration cases and 12/12 held-out cases.
The matching rule is deliberately visible: cosine at least 0.82, a best-versus-runner-up gap of at least 0.06, and equal protected lexical facts.
- Record date: 2026-10-21T13:56:18.669Z