TextAlign has four roles. Each role has a distinct set of permissions and a dedicated dashboard view.
| Role | Slug | Responsibilities |
|---|---|---|
| Admin | admin |
Manages users, groups, and batches. Does not participate in transcription. |
| Annotator | annotator |
Receives tasks with noisy/OCR text. Corrects the text against the source image and submits for review. |
| Reviewer | reviewer |
Reviews submitted corrections. Can approve (advancing to Final Review) or reject (sending back to the Annotator). |
| Final Reviewer | final reviewer |
Performs the last quality check. Approval marks a task as Gold Standard (Completed). Rejection sends it back to the Annotator. |
A new user who logs in without a role is shown the Pending Approval screen and cannot access any features until an Admin assigns them a role.
Each task moves through a strict sequence of states. The diagram below shows all valid transitions.
┌──────────┐
│ Pending │
└────┬──────┘
│ (admin assigns / annotator claims)
▼
┌────────────┐
│ InProgress │◄─────────────────────────────────┐
└─────┬──────┘ │
│ (annotator submits) │
▼ │
┌──────────────────┐ │
│ AwaitingReview │ │
└────────┬─────────┘ │
│ (reviewer claims) │
▼ │
┌──────────┐ │
│ InReview │ │
└──┬────┬───┘ │
(approve) │ │ (reject) │
│ ▼ │
│ ┌──────────┐ │
│ │ Rejected │─────────────────────────────────┘
│ └──────────┘ (re-assigned to annotator)
▼
┌────────────────────────┐
│ AwaitingFinalReview │
└───────────┬────────────┘
│ (final reviewer claims)
▼
┌─────────────┐
│ FinalReview │
└──┬──────┬───┘
(approve) │ │ (reject)
│ ▼
│ ┌──────────┐
│ │ Rejected │──► InProgress (re-assigned to annotator)
│ └──────────┘
▼
┌───────────┐
│ Completed │ ← Gold Standard
└───────────┘
| State | Meaning |
|---|---|
pending |
Task created, not yet assigned |
in_progress |
Assigned to an Annotator, being corrected |
awaiting_review |
Annotator submitted, waiting for a Reviewer to claim |
in_review |
Reviewer has claimed and is reviewing |
awaiting_final_review |
Reviewer approved, waiting for a Final Reviewer to claim |
final_review |
Final Reviewer has claimed and is reviewing |
completed |
Final Reviewer approved — Gold Standard |
rejected |
Rejected by Reviewer or Final Reviewer, re-queued for Annotator |
When a task is rejected (at either review tier), it transitions back to rejected and is then re-assigned to its original Annotator as in_progress. The rejection comment and actor are recorded in the task's audit history. The Annotator can see the rejection reason in the workspace sidebar before making corrections.
Each task tracks independent counters for annotation rejections and review rejections, surfaced in the Admin batch view.
Every state change is recorded as an immutable history entry. Actions available:
| Action | Triggered by |
|---|---|
created |
Admin uploads batch |
assigned |
Admin or system assigns task |
started |
Annotator opens task |
submitted |
Annotator submits corrected text |
claimed_for_review |
Reviewer picks up task |
approved |
Reviewer approves |
rejected |
Reviewer rejects |
claimed_for_final_review |
Final Reviewer picks up task |
final_approved |
Final Reviewer approves |
final_rejected |
Final Reviewer rejects |
reassigned |
Admin reassigns task manually |
text_updated |
Annotator saves a draft |
The workspace is the primary working view for Annotators, Reviewers, and Final Reviewers.
Layout: The image viewer occupies the left panel; the text editor occupies the right. A sidebar shows task metadata, history, and navigation.
Image Viewer:
- Pan and zoom with mouse or trackpad
- TIFF files are supported (decoded in-browser via
utif2) - Keyboard shortcuts:
Ctrl/Cmd + +/-/0
Text Editor:
- Font family and size are configurable per user (persisted in localStorage)
- Drafts auto-saved with
Ctrl/Cmd + S - Submit and Approve/Reject actions are in the toolbar
- Go to Admin → Batches → Create Batch.
- Upload a CSV or JSON file containing task entries (
name,url,transcript). - Assign the batch to a Group.
- Tasks are created in bulk and enter the
pendingstate.
- Go to Admin → Users.
- Create a user by email — they receive an Auth0 invitation.
- Assign a Role and a Group (optional).
- Users can be updated or removed at any time.
Groups organize users and batches together. A user belongs to one group; a batch is assigned to one group. This allows admins to scope work to specific teams.