Documentation

This or That Rating Question

Article

This or That Rating Question

When and Why to Use

Use this to gather nuanced preferences across paired options using a rating scale. Ideal for:

  • Capturing degrees of preference between two alternatives
  • Visualizing directional lean with intensity
  • Behavioral or brand comparison tasks

Supports slider, button, or star-based input styles with configurable point scales.

Chat Experience
  • Each row shows a pair of options with a slider or buttons between them
  • The midpoint represents neutrality; endpoints indicate strong preference
  • Don't know option appears if configured
Button styleSlider style
Button Markdown ImagesSlider Markdown Many Options
Traditional Experience
  • Pairs are displayed in tabular layout with rating scale between them
  • Works well with remote or keyboard navigation
  • Layout adapts to available screen width
Button styleSlider style on mobile
485781413 b4686cd1 2035 4a8f b4fc b89e0290f4c7485781178 06d12725 9b82 475c adad f012d99a2cd8
Configuration Options
OptionTypeRequiredDefaultDescription
questionstringyes-The prompt shown to the user
row_optionsList[List[str]]yes-List of 2-option comparisons per row
row_namestringno"scale"Label for the row dimension in reporting
number_of_pointsintno5Number of scale points (e.g., 5 for -2 to +2)
first_pointintno1Starting value for scale (optional)
stylestringno"slider""slider", "button", or "star" input style
dont_know_optionstrno""Optional "Don't know" response per pair
randomizeboolnoFalseRandomize row order
defaultDict[str, int]norandomDefault values for test data
recodesDict[str, str]no-Map ranges or raw scores to grouped labels
imageMediaItemno-Optional image above the task
custom_validator`Callable[[Dict[str, int]], strNone]`no-
tagss.tag()no-Used in token substitution and reporting
Example Code

Basic usage:

s.this_or_that_rating_question( "Which of the following do you prefer?", number_of_points=5, row_options=[ ["Apples", "Oranges"], ["Coke", "Pepsi"], ["Dogs", "Cats"], ["Winter", "Summer"] ] )

With recodes:

s.this_or_that_rating_question( "Rate your preference for each pair", number_of_points=7, row_options=[["Tea", "Coffee"], ["Netflix", "YouTube"]], recodes={ "1": "Strongly Left", "4": "Neutral", "7": "Strongly Right" } )

With custom validation:

s.this_or_that_rating_question( "Indicate which you prefer in each pair", number_of_points=5, row_options=[["Texting", "Calling"], ["Books", "Podcasts"]], custom_validator=lambda d: "Please vary your responses" if len(set(d.values())) == 1 else None )
Notes
  • Use an odd number of points to include a neutral midpoint
  • The left option in each pair anchors the low end of the scale
  • recodes are useful for bucketing scale values into preference categories
  • custom_validator can prevent straight-lining or require balance