Papers and abstracts

A paper or an abstract is written to the rules of a journal or a conference. chaff finds by machine mixed British and American spelling, a doubled word, and references to figures that are not there. The genre is academic/paper.

What usually goes wrong

Co-authors write different sections, and someone joins them at the end. That is where the spelling mixes.

What goes wrongExample
Mixed spelling“behavior” twice, and “behaviour” once in the section another author wrote
A doubled word“and the the user has to search”, left over from an edit
A figure that is not thereThe figures were merged into one, but the text still says “Figure 3 shows”

These are the first things a reviewer notices. They cost the reader’s trust before the content is read.

What chaff checks, and what it does not

These are the main rules for this genre. All of them run by default.

RuleWhat it finds
spelling-consistencyBritish and American spellings mixed in one document
doubled-wordThe same word written twice in a row
dangling-figure-referenceA figure or table the text refers to that the document does not have
quote-without-sourceWords given to someone (“X argued …”) with no citation in the paragraph

What it does not do is decided too.

  • It does not judge whether the results support the conclusion. The authors and the reviewers read and decide.
  • It does not check the reference list against the journal’s style.
  • It does not decide whether British or American spelling is right. It points at whichever the paper uses less. When the two are close to even, it says nothing, since the paper may mix them on purpose.
  • For academic writing, the rules on passives and hedging do not run. Science writes in the passive, and hedges its claims on purpose.

style: in chaff.yaml names a journal’s house style. The styles chaff has now are for Japanese papers. For an English paper, write the team’s spellings under prefer instead (see the starter file below).

Try it

If you have not set up yet, do Getting ready first. The abstract and part of a paper below were saved as paper.md. They were written for this page.

# Assigning free rooms first to cut meeting room booking delays

## Abstract

We propose a method that assigns a free room at the moment a booking is made, during the hours when bookings peak. Using three months of logs from our booking server, we found that the average wait for a booking fell from 42 seconds to 18 seconds. The method changes no user behavior and can be deployed without changing the existing server, its database or its configuration.

## 1. Introduction

Room bookings peak between 9 and 10 in the morning. In this hour, bookings for the same room collide, and the the user has to search for another free room. As Figure 1 shows, our method assigns a free room as soon as a booking arrives, which minimizes collisions.

![Figure 1. How rooms are assigned](fig1.png)

## 2. Evaluation

We used the logs from June to August 2026. Figure 3 shows the results. The wait fell in every hour. The behavior of users did not change, and the size, the location, and the equipment of the room made no difference.

## 3. Conclusion

We proposed a method that assigns free rooms first, and showed that it shortens the wait. We will next evaluate it in large rooms, where the behaviour of users may differ, and organise a trial at a second site.

Run without a genre, chaff sees the headings of a paper and suggests the paper genre.

$ npx chaffjs paper.md --compact

paper.md   blog/tech · English   genre from the default
   Looks like: Academic paper. Try --genre academic/paper

  9:111   warning "the the" doubles a word; one of the two is left over
                  doubled-word
  15:44   warning Figure 3 is referred to, but the document has no Figure 3
                  dangling-figure-reference
  19:142  info    "behaviour" here, where the document usually spells it "behavior" (1 of 3)
                  spelling-consistency

3 findings, 70 rules not run

Add the genre, as suggested. --compact prints each finding on two lines.

$ npx chaffjs paper.md --genre academic/paper --compact

paper.md   academic/paper · English   genre from --genre

  9:111   warning "the the" doubles a word; one of the two is left over
                  doubled-word
  15:44   warning Figure 3 is referred to, but the document has no Figure 3
                  dangling-figure-reference
  19:142  info    "behaviour" here, where the document usually spells it "behavior" (1 of 3)
                  spelling-consistency

3 findings, 96 rules not run

The guide that comes first

With the genre set, chaff opens the report with the genre’s guide: what a good paper does, as questions to check the draft against. Under them is a line naming the rules that matter most for this genre. Most of the questions are ones no rule can answer, so read them before the findings. An AI that rewrites the text works to the same lines (Using the guide with an AI).

$ npx chaffjs paper.md --genre academic/paper

Guide: Academic paper (academic/paper)

  Before the findings below, check the draft against these.

  - Does the abstract alone give the question, the method, the result and the conclusion, within its length?
  - Does every citation match one entry in the reference list, in one citation style?
  - Are figures and tables numbered in the order they are referred to, and do the numbers in the text match them?
  - Does each claim go no further than the results (shows, or suggests)?

  Rules that matter most for this genre: abstract-length, citation-reference-mismatch, citation-style-mix, figure-reference-order, quote-without-source
  Change it with guide: in chaff.yaml; leave it out with --no-guide.

════════════════════════════════════════════════════════════

paper.md   academic/paper · English   genre from --genre
…

A genre that was guessed from the path or the content, or left at the default, prints no guide. A guide for the wrong kind of document would mislead. --compact and --no-guide leave it out. A team changes the lines with guide: in chaff.yaml (Changing the genre’s guide).

What each finding means

LineFindingWhat it meansHow to fix it
9doubled-word“the the”Delete one “the”
15dangling-figure-referenceThere is no Figure 3. The only figure is Figure 1Add the results figure and number it, or point to the right figure
19spelling-consistencyThe paper writes “behavior” twice, and “behaviour” hereWrite “behavior”, as the rest does

The paper also writes “organise” once and “minimizes” once. With one of each, chaff cannot tell which the paper uses, so it says nothing. Decide, and add the pair to prefer.

No checks that read meaning

For this genre, npx chaffjs test sends nothing to an AI. npx chaffjs test paper.md --genre academic/paper --dry-run says 0 passages would be sent. Whether the results support the conclusion is for the authors and the reviewers.

A starter chaff.yaml

Put this chaff.yaml in the folder that holds your paper.

genre: academic/paper
language: en

With this file in place, npx chaffjs paper.md reads the file as a paper without --genre. When the journal sets a spelling, write each pair under prefer; preferred-term then flags the other spelling:

prefer:
  behaviour: behavior
  organise: organize

How prefer works is in Configuration, under “Making the team’s spelling consistent”.