Preflight for LaTeX papers and theses

Write your paper with any AI agent, or by hand. Ship one that checks out.

Overfull is a free, open preflight kit for LaTeX. It compiles your document, reads the log and the PDF, looks up every reference, and tells you what is wrong in plain language, with the file and line to fix.

The browser check runs on this page; your files are not uploaded.

Version
3.0.0, the successor to tex-thesis
Licence
MIT; templates MIT-0
Runs on
Docker, or a local TeX Live 2026
Agents
Claude Code, Codex, Cursor, Copilot, Gemini CLI, or none

What goes wrong

What goes wrong before a deadline

A citation to a paper that does not exist, or exists with a different year. ?? where a figure number should be. A figure without alt text. Ten pages when the workshop allows nine. Whether you typed the LaTeX or an agent did, these slip through on the last night, and none of them needs judgement to find: they are facts about the log, the PDF and public indexes, so a program can check them.

Retrieval improves proof search when the index is built from verified lemmas, as shown in Figure ?? and in recent work on scaling [?].

Proof mark: ref?

Proof mark: no alt text

  1. A. Vaswani et al. Attention is all you need. NeurIPS, 20172018.
  2. L. Chen and R. Okafor. Scaling laws for retrieval-augmented proof search. ICLR, 2024.

Proof marks: year: 2017 (arXiv)
not in CrossRef, DBLP, arXiv

10

Proof mark: limit 9 pp.

A draft page as an editor would mark it. Each red note is a problem overfull check reports with a rule id, a location and a fix.

Three ways to work

Three ways to work

By hand

Write LaTeX the way you always have. make build compiles in Docker, so a local TeX Live is optional. make check prints the report in plain language, with the file and line of each problem.

Working by hand

With an agent

The templates ship AGENTS.md and skills that coding agents read. The agent adds references only through overfull cite, which writes the entry from CrossRef, arXiv or DBLP, runs overfull check --json after each change, and opens a pull request you review with the changes highlighted in the PDF.

Working with an agent

In CI

The GitHub Action reads the log, PDF and .bib your workflow already builds, annotates the pull request at the right lines and writes a summary. Each template also ships a workflow that builds in Docker and runs veraPDF.

The GitHub Action

All three give the same report, and so does the browser check on this site.

Five checks

What a check covers

  1. Build

    TeX errors from the log, grouped by root cause, with the file and line that caused them.

    31 rules

  2. Output

    What reaches the PDF: ?? for undefined references, [?] citations, missing figures, overfull lines, stale bibliographies.

    16 rules

  3. References

    Every bibliography entry looked up in CrossRef, doi.org, arXiv and DBLP. Entries no index knows are reported, never silently kept.

    13 rules

  4. Accessibility

    Tagged PDF, document language and title, alt text on figures, and a PDF/UA validation with veraPDF when it is installed.

    9 rules

  5. Venue

    Page limit, paper size, anonymity for double-blind review, AI-use disclosure, arXiv packaging rules.

    18 rules

An agent session

Cite, check, fix, repeat

A workshop paper, a nine-page limit, one request. This is the loop the template’s instructions put an agent in.

youAdd the Vaswani et al. transformer paper to related work. We need to stay under the 9-page limit.

agentI’ll look the paper up instead of writing the entry from memory.

$ overfull cite arXiv:1706.03762
found  arXiv 1706.03762  Attention Is All You Need
       Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, Polosukhin (2017)
added  vaswani2017attention → references.bib

agentCited it in sections/related.tex as \citet{vaswani2017attention}. Building and checking.

$ overfull build && overfull check --json
{ "status": "fail", "checks": [ …
  { "check": "venue", "status": "fail", "problems": [
    { "rule": "page-limit-exceeded", "severity": "error",
      "message": "Main text runs to page 10; the limit is 9",
      "location": { "page": 10 } } ] } ] }

agentOver by about half a page. Table 3 floats onto page 10. I’ll move the per-dataset rows to the appendix and keep the summary row in the main text.

$ overfull build && overfull check
build          pass
output         pass
references     pass   32 of 32 verified
accessibility  pass   tagged, PDF/UA-2
venue          pass   main text 9 of 9 pages (11 total)

agentAll five checks pass. Opened pull request #42, “Cite Vaswani et al.; move Table 3 detail to appendix”, with the report and a PDF showing the changes.

The report

One sheet per build

Every problem carries a rule id, a location and a fix. Log cascades fold under their root cause, so one missing brace is one problem, not forty.

The same report comes out as terminal text, JSON for agents, Markdown for pull request comments, and GitHub annotations.

Make one from your own files

Overfull report paper.pdf
Overall: Revised proof required
overfull 3.0.0

Build

Status: pass Build succeeded (paper.pdf, 10 pages)

Output

Status: fail 1 × undefined-reference
  • error Reference to fig:results is undefined

    There is no \label{fig:results}, so the PDF shows ?? where it is referenced.

    Fix: Add \label{fig:results} after the caption or heading it should point to, or fix the spelling in \ref{fig:results}.

    Evidence
    LaTeX Warning: Reference `fig:results' on page 1 undefined on input line 4.

References

Status: fail 29 of 31 references verified
  • error No index has a record of "Scaling Laws for Retrieval-Augmented Proof Search" (2024)
    references.bib:88reference-not-found

    Searched CrossRef, DBLP and arXiv by title; no candidate is similar.

    Fix: Ask the author for a DOI or arXiv id. If none exists, remove the entry and its \cite.

  • warning vaswani2017attention: year is 2018 in the .bib, 2017 in arXiv

    Fix: Run overfull cite arXiv:1706.03762 --key vaswani2017attention to rewrite the entry from the record.

Accessibility

Status: fail Tagged PDF/UA-2, language en, 1 of 6 figures without alt text
  • error Figure on page 4 has no alternative text

    Fix: Add alt={…} to \includegraphics, describing what the figure shows.

Venue

Status: fail Profile: paper
  • error Main text runs to page 10; the limit is 9

    Fix: Cut or move material to the appendix until \label{overfull:main-end} lands on page 9.

Templates

Start from a template

The thesis and paper templates produce tagged PDF/UA-2; Beamer slides cannot be tagged yet. Each template sets its language and title, requires alt text on figures, and ships agent instructions, a Makefile and a CI workflow. A fresh copy builds without errors; the paper template warns until you write its AI-use statement.

Thesis
Bachelor’s, master’s and PhD. A4, chapters, front matter, PDF/UA-2. overfull init thesis
Paper
Research papers and preprints, with a page-limit marker and arXiv packaging. overfull init paper
Slides
Beamer for defences and conference talks. overfull init slides

What is in each template

Getting started

Start in five minutes

You need Docker (or a local TeX Live 2026). The first build downloads the image, about 3 GB (9–10 GB on disk); after that, builds take seconds.

  1. Get the overfull command: a single-file download from GitHub Releases (native executables for Linux, macOS and Windows), or skip it and run everything from the Docker image ghcr.io/amet13/overfull:3.

    $ curl -fLo overfull https://github.com/amet13/overfull/releases/latest/download/overfull-linux-x64$ chmod +x overfull && sudo mv overfull /usr/local/bin/
  2. Create a project from a template.

    $ overfull init paper my-paper && cd my-paper
  3. Build and check it. Or open the folder in your coding agent and ask for the change you want; it runs the check itself. In CI, add uses: amet13/overfull@v3.

    $ make build$ make check

Already have a LaTeX project and a build log? Check it in your browser now. Source and issues are on GitHub.