Task Assignment

What is a Task?

A Task is either a single image, series, or entire study that moves through the annotation workflow in a single unit. The intention is for a Labeler to view and annotate a single Task together; therefore, if you'd like your Labelers to view & annotate an entire MRI study comprised of 4 series together, you should upload the entire study as a single Task.
Please read the data import documentation to understand how to import data as a single image/series/entire study.


Task assignment helps manage the delegation of work amongst your entire team. RedBrick AI has automatic task assignment protocols, but you can override these with manual/programmatic task assignment as well.
Labelers (i.e. Project Members) can only view Tasks that have been assigned to them. Admins can view all Tasks but only modify tasks assigned to them.

Automatic Task Assignment

All projects use automatic task assignment by default. The automatic task assignment protocol is a first-come-first-serve system that assigns the oldest data to the annotators that request new tasks first.
Labelers can request new tasks by keeping the Annotation Tool open or clicking on the "Label/Review" buttons on the Project Dashboard.
You can disable automatic task assignment in Project Settings -> Overview.

Manual Assignment

You can override the automatic assignment protocol by manually assigning tasks to users from the Data Page.
RedBrick AI will not automatically re-assign tasks that you have manually assigned.

Programmatically Assigning Tasks

You can programmatically assign tasks using our SDK or prescribe the assignment during data upload as part of your items file.

Prescribe Assignment on Upload

You can use the preAssign field in the items file to assign a Task to a specific user(s) at each Stage.
For example, the snippet below will assign study01 to [email protected] in the Label Stage. Once the annotation is complete, the Task will be queued in Review_1 and [email protected] will be assigned as the Reviewer.
Always double check that your Stage Names (i.e., Label, Review_1, etc.) and user emails have been input correctly.
Also, when preassigning Tasks, all emails must be associated with an existing Project Member.
"name": "study01",
"preAssign": {
"Label": "[email protected]",
"Review_1": "[email protected]"
"series": [
"items": "file.nii.gz",

Assign Tasks using the SDK

Please visit our SDK documentation for an overview of how to assign Tasks programmatically.

Labeling Queue

Once a task is assigned to a user, it is added to their Labeling Queue. You can view your labeling queue in two ways.
  1. 1.
    From the Data Page: On the Data Page, you can filter existing Tasks by Queued for Labeling/Review and then by Tasks assigned to you.
  2. 2.
    In the Annotation Tool: The Labeling Queue can be expanded/retracted by clicking on the corresponding button in the top bar of the Annotation Tool.
While in your Queue, a Task can be in a few different states depending on the status of the annotation:
  1. 1.
    Assigned Tasks that you have not worked on yet will be displayed as Assigned.
  2. 2.
    Saved Once you save your in-progress annotation (either manually or through auto-save), the Task will show as saved.
  3. 3.
    Pending Finalization Once you are done with the annotation, you can Submit a Draft. All drafts that have been submitted will still be in your Labeling Queue pending finalization. You must finalize the draft to complete it and send it to the next stage of the workflow.
  4. 4.
    Skipped If you encounter a Task that you would like to complete at a later time, you can skip it to send it to the end of your Labeling Queue.
The diagram below is a visual guide to the flows associated with completing Tasks in your Labeling Queue, including associated actions and Task states.
Guide to submitting Tasks in your Labeling Queue

Task Prioritization

RedBrick AI allows you to designate specific Tasks as prioritized, which elevates them to the top of your Labeling Queue.
Task Priority is reflected in the Web Application in the following ways:
  1. 1.
    Task Priority is visible in the Data Page when sorting by Queued for Labeling/Review or Recently Labeled/Reviewed - this logic applies to all Stages except for Ground Truth.
  2. 2.
    Task Priority will persist throughout Raising an Issue and/or Rejecting a Task at any Stage.
  3. 3.
    Task Priority will be visible in the Annotation Tool when viewing the Queue
  4. 4.
    Tasks that are Assigned and Prioritized will occupy a higher position in the queue than Tasks that are Unassigned and Prioritized.
As seen in the snippet below, you can use the update_tasks_priority() method to designate a float between 0 and 1 that reflects the priority of a given Task (where 1 is the highest priority and 0 is the lowest).
tasks =
# High Priority Task
"taskId": "2716057",
"priority": 0.95
# Mid Priority Task
"taskId": "BU221729",
"priority": 0.50
# Low Priority Task
"taskId": "8675309",
"priority": 0.32
For the truly brave, our Prioritization API supports up to the billionth place for floats.