Skip to content

Citations: verify that a well-formed reference is a real work #27

Description

@peopleworks

#26 ships the half that needs no network: whether a document contradicts itself. This tracks the
other half — whether a reference that is internally consistent corresponds to a paper that exists.

The shape it should take

A reference that survives every offline check can still be invented. Catching that means a lookup
against Crossref or OpenAlex, which crosses the line this project has held since the beginning.

Non-negotiables if it gets built:

  1. Opt-in, per analysis, never remembered silently. The default stays "nothing leaves this
    machine".
  2. Only the citation string goes out — never the document. A DOI, or an author/title/year triple.
    Not the essay, not the surrounding sentence, not the file name.
  3. Say so where it happens, in the same panel, before the request. Not in a privacy policy.
  4. A negative result is not proof of anything. Plenty of real work has no DOI, is not indexed, or
    is a book, a thesis, a government report, a newspaper. "Not found in Crossref" must never render as
    "invented" — and this is where a tool in this category most easily becomes unfair to writers
    outside English-language journal publishing.

Where it fits

ICitationLookup in Core, implemented in the host with the injected HttpClient — the same seam
ILocalPerplexity and IDocumentReader already use, so SignsOfAI.Core keeps its zero package
dependencies.

Smaller follow-ups from #26

  • Note-style citations (Chicago footnotes, Ibid., op. cit.) are not read at all. Numbered and
    author-year are.
  • Reference-list detection needs a heading. A bibliography that just starts, with no
    "References"/"Referencias" line, is invisible — deliberately, since guessing produces complaints out
    of formatting. Worth revisiting whether a trailing block of author-shaped lines is safe to detect.
  • In-text ranges across styles: [1]–[3] with the dash outside the brackets is not expanded.
  • A false "missing reference" is the bug report I want most. No server, no telemetry, so a human
    reporting it under False positives in Discussions is the only way we find out.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions