Evidence array schema

Every flagged sentence carries an evidence array — machine-readable reason codes that explain why it was flagged, instead of a bare probability. This is the EssayDetector difference: the output is reviewable, not just a number.

Sentence object

{
  "text": "The aforementioned paradigm shift necessitates a comprehensive reevaluation.",
  "score": 0.87,
  "evidence": [
    { "reason_code": "low_perplexity", "detail": "token-level surprise below human baseline" },
    { "reason_code": "burstiness", "detail": "uniform sentence rhythm across the paragraph" }
  ]
}

Reason codes are stable identifiers you can branch on; the detail string is human-readable. Codes vary by method (model or deterministic fallback), and the response always labels which method ran.

Why evidence, not a score

A bare probability is unactionable and unverifiable. An evidence array lets you show your users why a sentence was flagged, audit the detector against your own samples, and build review workflows where a human makes the call. Detection remains a review cue — never proof of authorship.

Academic basis

The signal families behind the evidence codes (perplexity, burstiness, log-rank) build on published detection research. These references are the public basis for the method; the response always labels which method ran for a given request.

  1. Gehrmann S, Strobelt H, Rush A M. GLTR: Statistical detection and visualization of generated text[J]. Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics: System Demonstrations, 2019: 111-116.
  2. Solaiman I, Brundage M, Clark J, 等. Release strategies and the social impacts of language models[J]. arXiv preprint arXiv:1908.09203, 2019.
  3. Mitchell E, Lee Y, Khazatsky A, 等. DetectGPT: Zero-shot machine-generated text detection using probability curvature[J]. Proceedings of the 40th International Conference on Machine Learning, 2023: 4993-5001.