Goldilocks Range / Dual-Thumb Slider¶
The range slider schema presents a dual-thumb slider where annotators select a minimum and maximum value on a continuous scale, defining a range rather than a single point. This is sometimes called the "Goldilocks" task: annotators mark the acceptable range of a scalar property (not too low, not too high — but somewhere in between).
Overview¶
Standard sliders elicit a single point estimate. Many human judgments are more accurately described as ranges:
- A sentence is "formal enough" somewhere between 60–80 on a formality scale
- A paraphrase is acceptable if its meaning similarity is between 70–90%
- A response length is appropriate if it falls between 2–4 sentences
The dual-thumb slider captures this interval structure directly. Both thumbs are independently draggable; the selected range is highlighted between them.
Research Basis¶
- Pavlick, E., & Kwiatkowski, T. (2019). "Inherent Disagreements in Human Textual Inferences." Transactions of the Association for Computational Linguistics (TACL) 7. Shows that annotator disagreement on inference tasks reflects genuine semantic indeterminacy that is better modeled as a range than as a point.
- Jurgens, D. (2013). "Embracing Ambiguity: A Comparison of Annotation Methodologies for Crowdsourcing Word Sense Labels." NAACL 2013. Demonstrates that allowing annotators to express uncertainty via ranges or soft labels improves dataset quality compared to forcing single-point choices.
Configuration¶
Options¶
| Option | Default | Description |
|---|---|---|
annotation_type |
— | Must be range_slider |
name |
— | Schema identifier (required) |
description |
— | Task instruction |
min_value |
0 |
Minimum end of the scale |
max_value |
100 |
Maximum end of the scale |
step |
1 |
Increment between valid positions |
left_label |
"" |
Label displayed at the left (min) end of the track |
right_label |
"" |
Label displayed at the right (max) end of the track |
show_values |
true |
Display the current numeric range values above the thumbs |
label_requirement.required |
false |
Require range selection before proceeding |
The widget opens with no range: the thumbs sit at the two ends in grey, no band is drawn between them, and the readout says "No range set". It stays that way until the annotator moves a thumb. There is no starting position to configure. A pre-drawn range is not stored, so an annotator who agrees with what is on screen leaves the item unanswered and is not told.
YAML Example — Formality Range¶
annotation_schemes:
- annotation_type: range_slider
name: formality_range
description: "Select the range of formality scores that would be acceptable for this text in a professional email context."
min_value: 0
max_value: 100
step: 1
left_label: "Very informal"
right_label: "Very formal"
show_values: true
label_requirement:
required: true
YAML Example — Acceptable Confidence Interval¶
annotation_schemes:
- annotation_type: range_slider
name: confidence_interval
description: "Select the range of values you believe the correct answer falls within."
min_value: 0
max_value: 100
step: 5
left_label: "0%"
right_label: "100%"
show_values: true
default_low: 25
default_high: 75
YAML Example — Sentence Length Acceptability¶
annotation_schemes:
- annotation_type: range_slider
name: length_range
description: "How many words is acceptable for a summary of this article? Drag both thumbs."
min_value: 10
max_value: 200
step: 5
left_label: "Too short"
right_label: "Too long"
show_values: true
Output Format¶
The selected range is stored as two separate key-value pairs:
{
"formality_range": {
"range_low": "25",
"range_high": "75"
}
}
Both values are string-encoded numbers. range_low is always less than or equal to range_high.
Use Cases¶
- Vague scalar adjective annotation — measure acceptable range of "tall", "expensive", "fast"
- Acceptable paraphrase similarity — what similarity range qualifies as a valid paraphrase
- Quality threshold elicitation — what range of scores would a human accept as "good enough"
- Toxicity boundary marking — where does mildly offensive become clearly offensive
- Summary length norms — what length range is appropriate for a given source document
- Temporal expression annotation — mark the range of time a vague expression like "recently" refers to
Troubleshooting¶
Both thumbs overlap at the same position: This is a valid degenerate case (zero-width range = point estimate). If your task requires a non-zero range, add a validation check in the instruction text but note that the schema does not enforce a minimum range width by default.
An item comes back with no range: The widget records nothing until a thumb moves, and the unset state says so on screen. Set label_requirement.required if every item needs one.
Related Documentation¶
- Slider — single-thumb continuous slider
- Soft Label — probability distribution across categories
- Pairwise Comparison — scale mode with single slider between two options
- Schema Gallery — all annotation types with examples