Triage Annotation Schema
The triage annotation schema provides a Prodigy-style binary accept/reject/skip interface optimized for rapid data curation tasks. This schema is ideal for filtering large datasets quickly, performing data quality checks, or any task requiring quick binary decisions.
Overview
The triage schema presents three large, visually distinct buttons: - Keep (green) - Accept the item for inclusion - Discard (red) - Reject the item - Unsure (gray) - Skip when uncertain
With auto-advance enabled (default), annotators can process hundreds of items per hour using just keyboard shortcuts.
Quick Start
Add a triage annotation scheme to your configuration:
annotation_schemes:
- annotation_type: triage
name: data_quality
description: Is this data sample suitable for training?
auto_advance: true
show_progress: true
Run the example project:
python potato/flask_server.py start examples/advanced/triage/config.yaml -p 8000
Configuration Options
Required Fields
| Field | Type | Description |
|---|---|---|
annotation_type |
string | Must be "triage" |
name |
string | Unique identifier for this schema |
description |
string | Instructions displayed to annotators |
Optional Fields
| Field | Type | Default | Description |
|---|---|---|---|
accept_label |
string | "Keep" |
Text label for the accept button |
reject_label |
string | "Discard" |
Text label for the reject button |
skip_label |
string | "Unsure" |
Text label for the skip button |
auto_advance |
boolean | true |
Automatically move to next item after selection |
show_progress |
boolean | true |
Display progress bar in the triage widget |
accept_key |
string | "1" |
Keyboard shortcut for accept |
reject_key |
string | "2" |
Keyboard shortcut for reject |
skip_key |
string | "3" |
Keyboard shortcut for skip |
Example Configurations
Basic Data Quality Filtering
annotation_schemes:
- annotation_type: triage
name: quality_filter
description: Is this text high quality and suitable for training?
auto_advance: true
Custom Labels for Content Moderation
annotation_schemes:
- annotation_type: triage
name: content_moderation
description: Does this content violate community guidelines?
accept_label: "Safe"
reject_label: "Violates"
skip_label: "Review Later"
auto_advance: true
Custom Keyboard Shortcuts
annotation_schemes:
- annotation_type: triage
name: sentiment_triage
description: Does this review express a clear sentiment?
accept_key: "a"
reject_key: "r"
skip_key: "s"
Without Auto-Advance (For Careful Review)
annotation_schemes:
- annotation_type: triage
name: careful_review
description: Review each item carefully
auto_advance: false
show_progress: true
Combined with Other Schemas
Triage can be combined with other annotation types when you need both filtering and detailed annotation:
annotation_schemes:
# First, triage the data
- annotation_type: triage
name: include_item
description: Should this item be included in the dataset?
auto_advance: false # Don't auto-advance when combined
# If included, annotate further
- annotation_type: radio
name: category
description: What category does this belong to?
labels: ["News", "Opinion", "Review", "Other"]
Keyboard Shortcuts
Default keyboard shortcuts are designed for rapid one-handed operation:
| Key | Action |
|---|---|
1 |
Keep (Accept) |
2 |
Discard (Reject) |
3 |
Unsure (Skip) |
The keys 1, 2, 3 are adjacent on the keyboard, allowing fast annotation without looking at the keyboard.
Output Format
Triage annotations are saved in the standard annotation format:
{
"data_quality": {
"labels": {
"decision": "accept"
}
}
}
Possible values for the decision field:
- "accept" - Item was marked as Keep
- "reject" - Item was marked as Discard
- "skip" - Item was marked as Unsure
UI Features
Progress Indicator
When show_progress: true, a progress bar displays:
- Current item number
- Total item count
- Visual progress bar
Visual Feedback
- Buttons show clear visual states when selected
- Smooth animations provide feedback on selection
- Color coding matches decision semantics (green=accept, red=reject)
Accessibility
- Full keyboard navigation support
- ARIA labels for screen readers
- High contrast mode support
- Reduced motion support for users who prefer it
Use Cases
Data Quality Filtering
Filter noisy data from web crawls or user-generated content:
annotation_schemes:
- annotation_type: triage
name: quality
description: Is this text grammatically correct and coherent?
accept_label: "Good Quality"
reject_label: "Poor Quality"
skip_label: "Borderline"
Relevance Filtering
Filter search results or recommendations:
annotation_schemes:
- annotation_type: triage
name: relevance
description: Is this document relevant to the query?
accept_label: "Relevant"
reject_label: "Not Relevant"
skip_label: "Partially Relevant"
Content Moderation
Review user-generated content for policy violations:
annotation_schemes:
- annotation_type: triage
name: moderation
description: Does this content comply with community guidelines?
accept_label: "Approve"
reject_label: "Remove"
skip_label: "Escalate"
Training Data Curation
Curate datasets for machine learning:
annotation_schemes:
- annotation_type: triage
name: training_data
description: Should this example be included in the training set?
accept_label: "Include"
reject_label: "Exclude"
skip_label: "Maybe"
Best Practices
-
Use auto-advance for high-throughput tasks: When items are simple and decisions are quick, auto-advance significantly improves throughput.
-
Disable auto-advance for complex decisions: When annotators need time to think or make additional annotations, disable auto-advance.
-
Provide clear descriptions: Make the triage criteria unambiguous to ensure consistent annotations.
-
Use meaningful labels: Customize labels to match your specific use case rather than using generic "Accept/Reject".
-
Combine with attention checks: For crowdsourcing, insert known items to verify annotator quality.
-
Set appropriate time alerts: Disable or set high time alerts (
alert_time_each_instance: 0) for triage tasks since decisions are intentionally fast.
Comparison with Other Annotation Tools
| Feature | Potato Triage | Prodigy | Label Studio |
|---|---|---|---|
| Three-button interface | Yes | Yes | Partial |
| Auto-advance | Yes | Yes | Yes |
| Keyboard shortcuts | Yes (customizable) | Yes | Yes |
| Progress indicator | Yes | Yes | Yes |
| Custom labels | Yes | Partial | Yes |
| Combined schemas | Yes | No | Yes |
| Self-hosted | Yes | Yes | Yes |
Troubleshooting
Auto-advance Not Working
- Verify
auto_advance: trueis set in the config - Check browser console for JavaScript errors
- Ensure
navigateToNext()function is available (part of annotation.js)
Keyboard Shortcuts Not Responding
- Ensure you're not focused in a text input field
- Check if custom keybindings conflict with browser shortcuts
- Verify triage.js is being loaded
Progress Bar Not Updating
- Check that
show_progress: trueis set - Verify the progress counter element exists in the template
- Check browser console for errors
Related Documentation
- Schemas and Templates - Overview of all annotation types
- Quality Control - Attention checks and gold standards
- Crowdsourcing - Deploying triage tasks to crowdworkers