Annotation guidelines template
Last reviewed: 2026-07-07.
A task-agnostic starting point for a new corpus's annotation guidelines document, modelled on the structure MasakhaNER 2 (Adelani et al., 2022) and AfriSenti (Muhammad et al., 2023) use. Fork this file, rename it, drop your task in, and adapt the sections. The section structure is what matters: it is the same structure the playbook's Case Studies chapter compares projects against.
How to use this template
- Copy everything below the divider into a new file (
docs/annotation-guidelines.mdin your project repo). - Replace every
[BRACKETED FIELD]with a real answer. - Delete task-inappropriate sections and add a one-line
Not applicable: [why]note in place of what you removed. - Version this document. Annotation guidelines drift; a guidelines document without a version and a change log is untrustworthy.
- Store the guidelines alongside the corpus so future readers can verify what an annotator was actually told.
Motivated by the Annotation Design chapter and by every corpus retrospective in the Case Studies chapter that names annotation-guideline drift as a source of quality problems.
[PROJECT NAME] annotation guidelines
Version: [X.Y] · Date: [YYYY-MM-DD] · Language(s): [LANGUAGES] · Task: [TASK]
1. What we are annotating and why
- The task in one sentence: [E.g., "Classify each Twitter post in Hausa, Igbo, or Yoruba as positive, negative, or neutral sentiment."]
- What the annotated corpus will be used for: [Training a specific model, benchmark release, downstream deployment. Be specific; annotators annotate differently when they know the use case.]
- What the corpus is NOT for: [Avoid uses the community has agreed on. Explicit here helps the annotator make judgement calls at the margin.]
- Reference project(s) this is modelled on: [E.g., "MasakhaNER 2 guidelines, adapted for [DOMAIN]."]
2. The team
- Lead annotator: [NAME + short bio]
- Native-speaker annotators: [NAMES, or "N annotators, native speakers of [LANGUAGE], recruited via [CHANNEL]."]
- Adjudicator: [The person who resolves disagreements. Usually the lead annotator; can be someone else.]
- Linguistic consultant, if any: [NAME + role]
- Reviewer / auditor: [The person who periodically checks annotation quality without doing annotation themselves.]
- How annotators were compensated: [Rate + benchmark. Fair-rate community-anchored rates are part of the core principles; state what you paid.]
3. Definitions
Every term the annotator uses is defined here, in one place, in plain language. This is the most-important section. Guideline drift usually starts with two annotators reading the same term and understanding it differently.
- [TERM ONE]: [Definition + one positive example + one negative example ("this is NOT [TERM]") for contrast.]
- [TERM TWO]: [Same shape.]
- [TERM THREE]: [Same shape.]
Add every term the annotator will encounter. Cross-reference to definitions used in the reference project (MasakhaNER 2, AfriSenti, LAFAND-MT) explicitly, noting any differences.
4. The annotation itself: decision procedure
Written as a step-by-step procedure the annotator can follow for a single example, from opening the labelling tool to submitting the annotation.
- Read the example fully before assigning any label. [Especially important for classification tasks, since snap judgements based on the first few words are the main source of low-quality labels.]
- Check the context. [If the example is a tweet, what is the thread? If the example is a sentence in a document, what is the surrounding paragraph? Instructions on how much context to consider.]
- Assign the label using the decision tree below.
- If uncertain, mark the example as UNCERTAIN with a short note. [Uncertain examples go to the adjudicator; do not force a label when unsure.]
- Submit and move on. Do not revise earlier annotations after the fact unless a guideline change requires re-annotation.
4.a Decision tree
Is [DIAGNOSTIC QUESTION 1]?