Glossary
Definitions of AfriAnnotate-specific terms — useful as a link target from other pages and a quick reference when you're trying to remember which thing nests inside which.
A
Annotation
A single labeling result on a single task. One task can have many annotations from different annotators (or the same annotator at different times). Contains an array of result entries, each describing one region of the labeled data.
Annotator
The lowest-permission role inside an org. Can label tasks assigned to them in projects they're members of. Cannot see Data Manager (unless granted), cannot see other org members, cannot create projects. Compare: Reviewer, Manager, Admin, Owner.
Annotator agreement
A measure (0–1) of how much two annotators on the same task agreed. Used in review-and-quality to surface tasks where annotators disagree (likely worth reviewer attention) vs tasks where they all agreed (safe to accept). Specific algorithm depends on the tag type — Cohen's kappa for choice tags, IoU for bounding boxes, etc.
B
Bundle ID
The unique identifier for an iOS / Android / macOS app. Used by
Apple/Google to differentiate apps. Common format:
com.<your-org>.<app-name> (e.g. com.afriannotate.app). Different
platforms each need their own bundle ID — iOS, macOS, and the
desktop variant should be distinct.
C
Capacitor
The native-app wrapper that lets the same React SPA run as iOS / Android / macOS / Windows apps. The mobile and (partly) desktop apps use it. See Mobile architecture.
Cloud storage
External S3 / GCS / Azure Blob buckets that a project can be connected to as either a source (the bucket has data; sync it into the project as tasks) or target (annotations are exported back to the bucket as JSON files).
Consent template
A reusable consent form (terms an annotator agrees to) configured at the org level. Once attached to a project, every annotator working on the project must accept it before labeling. See Consent library.
Control tag
An XML tag in a labeling configuration
that determines what type of annotation annotators produce — e.g.
<Choices>, <Labels>, <RectangleLabels>, <TextArea>. Pairs
with an object tag via toName=.
D
Data Manager
The tabular view of all tasks in a project. Lets you filter, sort, bulk-assign, and dive into individual tasks. Clicking into a project lands on the project dashboard; Data Manager is one tab away.
DKIM
DomainKeys Identified Mail — a cryptographic signature on outgoing email that recipients verify against a DNS record. One of the three DNS pieces (alongside SPF + DMARC) you need to set up for email deliverability. See Email delivery.
DMARC
Domain-based Message Authentication, Reporting & Conformance —
policy for what receivers should do with mail that fails SPF or DKIM.
Lives as a TXT record at _dmarc.<yourdomain>. See
Email delivery.
G
File check
The check on every source storage connection that samples its files and says whether they will load and play in the browser: readable, allowed by the bucket's CORS rule, in a format browsers play, and not heavy. See Cloud storage.
Ground truth
An annotation that's been promoted to "this is the correct answer" for its task. Used as the reference annotation when calculating agreement metrics for other annotators on the same task.
Heavy file
A media file long or large enough to load slowly and cost data on a phone. What counts is the organisation's policy (by default a recording over 10 minutes, audio over 50 MB, video over 200 MB, an image over 10 MB). The storage file check and the Data Manager's Heavy file column flag them; nothing is refused.
Guest
The most restricted role inside an org. Can view projects they're explicitly added to but cannot annotate, review, edit, or manage anything. Useful for stakeholders, external auditors, ethics reviewers, or new hires shadowing before becoming Annotators. See Roles.
I
Internal tester (TestFlight)
A tester you add to TestFlight by email in App Store Connect. Up to 100 per app. No Apple Beta App Review required — builds become available within ~5-15 min of upload-processing. See iOS TestFlight.
J
JWT
JSON Web Token — the authentication primitive AfriAnnotate uses
for API + mobile auth. Two tokens issued per session: an access
token (24 hours) and a refresh token (30 days by default;
operators can raise it via AFRI_REFRESH_TOKEN_DAYS). The access
token is sent on every API call; the refresh token mints new access
tokens when the old one expires, and doubles as the mobile
offline-auth window.
L
Labeling config
The XML document attached to a project that defines what annotators see (object tags), what they can label (control tags), and how it's laid out (visual tags). The source of truth for the labeling interface + the export schema. See Labeling config.
Labeling interface
The actual UI annotators interact with — rendered from the labeling config. Live in Project → Settings → Labeling Interface.
Labeling stream
The sequential view of "next task" → label → submit → "next task". Triggered by clicking Label All Tasks on a project. The default flow for annotators.
Lead time
The wall-clock seconds an annotator spent on a single annotation,
including breaks while the tab was open. Stored on each annotation
as lead_time. Used for productivity reporting.
M
Maintenance job
The daily job (manage.py maintenance) that clears expired sessions and
applies the organisations' retention policies. See
Organisation policies.
Manager
A role inside an org. Can create + edit projects, manage project members, see all annotations. Cannot manage org membership or billing (that's Admin / Owner). Compare: Roles.
O
Object tag
An XML tag in a labeling configuration
that declares the data type being labeled — e.g. <Image>,
<Text>, <Audio>, <HyperText>. Paired with one or more
control tags via the name= ↔ toName= link.
Organisation (org)
The top-level multi-tenancy container in AfriAnnotate. Every user belongs to zero or more orgs. Every project belongs to exactly one org. Every database row is filtered by org at the query layer — no path lets a user in org A see rows from org B.
Outbox
The write-through queue inside the mobile app's offline-first
IndexedDB mirror. Annotation / draft writes that fail while offline
land in the outbox; a sync runner drains it on reconnect, replaying
each request with exponential backoff and a per-row unique_id so
the cloud dedupes duplicates. Replays the cloud rejects move to a
dead-letter store instead of vanishing. See
Mobile install.
Owner
The highest-permission role inside an org. Can do everything an Admin can plus manage billing + transfer ownership + delete the org. The first user on a fresh platform is auto-promoted to Owner of the auto-created default org.
P
PAT
Personal Access Token — a long-lived JWT you generate yourself in Profile → Security & access for API access (one active token at a time, Full-access or Read-only scope). Bearer-authentication like session JWTs but doesn't expire until you delete or regenerate it. Treated as production secrets. See API → Authentication.
Platform owner
A user with is_superuser=True — has access to Platform-level
settings (branding, rate limits, users across all orgs). Different
from an Owner role inside an org. The first user on a fresh
platform is auto-promoted to platform owner.
Pre-annotation (prediction)
A model-produced annotation pre-loaded on a task. When an annotator
opens the task, the pre-annotation appears as draft regions they can
accept, edit, or discard. Used for active learning + speeding up
labeling. Stored as predictions[] on the task. See
Task format.
Project
A container that holds a dataset of tasks, a labeling config, and a set of members with project-specific roles. Lives inside an organisation. The unit of work for annotators.
R
Region
The selected area of data that's been labeled — a text span, an
image bounding box, an audio segment, etc. Identified by a unique
id string per annotation. Multiple result entries can share
the same region ID (e.g. a bounding box that's labeled both as
"Coffee" and tagged with a per-region price).
Result
A single labeled entry inside an annotation's result[] array.
Has a region id, a from_name (which control tag produced it),
a to_name (which object tag it applies to), a type, and a
value whose shape depends on the tag type.
Reviewer
A role inside an org. Can label tasks AND review other annotators' work — accept, reject, or fix-and-accept. Can't create projects. Compare: Roles.
S
SPA
Single Page Application — the React app at web/apps/labelstudio/
that powers the AfriAnnotate web experience. The mobile + desktop
apps are wrappers around the same SPA. See
Mobile architecture.
SPF
Sender Policy Framework — a DNS TXT record listing which mail servers are authorised to send mail for your domain. One of the three DNS pieces (alongside DKIM + DMARC) needed for email deliverability. See Email delivery.
T
Task
A single unit of data to be labeled — one row of a CSV, one image,
one audio clip. Lives inside a project. Has a data JSON dict whose
keys match the project's labeling config's $varname references.
A task can accumulate many annotations from different annotators.
See Task format.
TestFlight
Apple's pre-release distribution channel for iOS (and macOS) apps. Internal testers (≤ 100) skip Apple review; external testers (≤ 10k) go through Beta App Review on first build. See iOS TestFlight.
V
Verify-email gate
The middleware that requires a user to click their verification email before they can sign in. Bypassable by a platform owner via Platform → Users → Mark as verified. See Mark a user verified.
W
Webhook
An HTTP POST your platform fires on configurable project events — task created, annotation submitted, etc. Configured per-project at Project → Settings → Webhooks. Useful for piping annotations into downstream ML pipelines or BI tools.
Workspace
A container that groups related projects within an org. Optional — projects can live at the org root or under a workspace. Use workspaces for campaigns, languages, business units, or whatever your team's natural grouping is. See Workspaces.