FIFO unit distribution ensures contributors are served units in the order they were uploaded: oldest batch first, row by row within each batch. Units from a newer batch are only served once all units in the current batch have been assigned. This is especially useful for projects with recurring data uploads (e.g. daily pipelines), where you need predictable batch completion timelines and want to prevent newer data from being annotated before older data.
Enabling FIFO
FIFO is configured at the job level, in the Job Settings page. It is off by default and must be explicitly enabled. Existing jobs are unaffected unless you turn it on.
The toggle can be turned on or off at any point during the job lifecycle. Changes take effect immediately for new unit assignments.
Note: FIFO is configured independently on the Work job and the QA job. Enabling it on the Work job does not automatically enable it on the QA job, and vice versa.
How FIFO works by job distribution
Work Only Jobs
Configuration | FIFO behavior |
|---|---|
Single judgment | Contributors receive units from the oldest batch first. The next batch unlocks only after all units in the current batch have been assigned. Within a batch, units are served in upload row order. |
Multiple judgments (judgments per row > 1) | Same batch-first logic applies. The next batch unlocks only after every unit in the current batch has received at least the minimum required number of judgments. Different contributors receive different units from the same batch concurrently. |
Dynamic judgments | FIFO order is preserved across all judgment rounds. Additional rounds do not change the batch sequence. |
Quiz mode
FIFO does not apply to test questions in Quiz mode. Quiz questions are always served in randomized order, regardless of whether FIFO is enabled on the job. This is by design.
Quiz + Work mode
Work units follow FIFO order. Test Questions in quiz remain randomized independently. Contributors complete quiz questions in random order, then transition to work units served in FIFO order with test questions depending on the selected frequency.
QA jobs
When FIFO is enabled on the QA job, checkers are served units in the same batch order as they were originally uploaded. QA sampling starts from the oldest uploaded units first.
Rework: When a checker rejects units and sends them back for rework, the original contributor receives those rework units in FIFO order: oldest rejected units are assigned first, before newer ones. FIFO order is also preserved when rework units return from the QA job back to the Work job.
How FIFO works with unit groups
Retain Grouping enabled
FIFO operates at the group level. Contributors receive complete unit groups from the oldest available batch first. Segments within a group are served in their original segment order.
When multiple contributors are working concurrently, they receive different groups from the same batch, not the same group. This keeps parallel annotation efficient while respecting batch order.
Retain Grouping disabled
FIFO operates at the unit level. Units are served individually in sequential upload order, without grouping constraints.
Compatibility summary
Feature | Compatible with FIFO |
|---|---|
Single judgment | Yes |
Multiple judgments | Yes |
Dynamic judgments | Yes |
Quiz mode (test questions) | No — quiz questions always randomized |
Quiz + Work mode | Yes — work units follow FIFO; quiz questions randomized |
Unit groups (Retain Grouping) | Yes — FIFO at group level |
Unit groups (Ignore Grouping) | Yes — FIFO at unit level |
QA job | Yes — configured independently |
Rework flow | Yes — rework units follow FIFO back to original contributor |
Important behaviors to be aware of
Batch gating: The next batch does not become available until all units in the current batch have been assigned (not necessarily completed). If some units in a batch are stuck in a non-judgable state, this may delay the next batch from unlocking. Check your unit statuses if contributors report running out of work unexpectedly.
Toggling mid-job: Turning FIFO off mid-job reverts distribution to random order for all new assignments going forward. Units already assigned are not affected.
Retroactive application: FIFO is not applied retroactively to units already uploaded or assigned before the toggle was enabled.
Project-level default: There is no project-level FIFO setting. The toggle must be set individually per job.