How Issue Stance Scores Work
A technical explanation of how legislator stance scores are derived from voting records on specific policy issues in the South Dakota 101st legislative session.
What Are Issue Stances?
Each legislator on this site has scores on specific policy issues, derived entirely from their voting record. Scores range from -100 (consistent opposition) to +100 (consistent support) on each issue.
Issues are defined as directional action phrases. For example, a score of +60on “reduce property tax rates” indicates that the legislator has generally voted in favor of bills that reduce property taxes. A score of -40 on the same issue indicates the opposite pattern.
These scores describe voting behavior — how a legislator has voted on bills touching each issue. They do not represent personal beliefs, campaign positions, or intent.
The Issue Taxonomy
Bills are scored against a canonical list of 84 policy issues organized under 25 topics. Each issue is a directional action phrase:
When none of the canonical issues fit a bill, the scoring model may propose a new directional issue using the same naming convention. The live data set is therefore larger than the canonical list — more than 200 issues. For display, every issue is grouped into one of 20 topic categories. Breadth varies widely: Healthcare & Medicaid covers 23 mapped issues, while Immigration and Veterans & Military cover only 2–3.
Top 12 of 20 display topics by number of mapped issues.
How Bills Are Scored
Each bill is analyzed by Claude Haiku to identify 1 to 5 relevant policy issues — drawn from the canonical list, or proposed anew when nothing fits. For each identified issue, two values are assigned:
- Stance (-1.0 to +1.0): What a Yea vote on this bill means for this issue. Positive means the bill supports the action, negative means it opposes it.
- Relevance (0.0 to 1.0): How central this issue is to the bill. A bill primarily about property taxes would have high relevance for tax issues and lower relevance for tangentially related issues.
Worked example: a hypothetical property tax relief bill
A Yea vote on this bill indicates support for reducing property taxes (positive stance) but opposition to reducing government spending (negative stance, since the bill reduces revenue).
Procedural bills (appointments, commemorations, scheduling) receive no stances and do not affect legislator scores. Only stances with a relevance of 0.2 or higher are carried forward into legislator scoring; tangential, low-relevance associations are dropped.
How Legislator Scores Are Computed
For each legislator and each issue, the system aggregates their Yea/Nay votes on all bills that touch that issue:
- Vote direction: +1 for Yea, -1 for Nay. For tabling and kill motions (where a Yea vote stops the bill), the direction is inverted so it counts as opposition.
- Amendment motions excluded: Votes on motions to amend adopt a specific amendment rather than the bill itself, so they are left out of issue scoring. Final passage votes on amended bills still count.
- Recency weighting: The current session is weighted at full value, and each session year further back is multiplied by 0.7 (so a vote two years old carries roughly half the weight), keeping scores tilted toward recent behavior.
- Confidence: Based on the number of scored votes for that issue. A legislator needs at least 15 relevant votes for full confidence; fewer votes produce a lower confidence value.
Data flow from bill text through issue identification and vote records to per-legislator stance profiles.
Reading the Stance Profile
On each legislator's page, stances are displayed grouped by topic category. Each topic section lists the individual issue scores on a diverging bar chart, with the score shown as a badge on the bar.
Color scale
Scores are displayed on a color scale: green indicates support (positive scores), gray indicates neutrality (scores near zero), and red indicates opposition (negative scores).
Topic grouping
Topics with multiple scored issues get their own section header. Topics with only one scored issue are collected under “Other Topics” with the category shown as an inline prefix. Issues that don't map to any topic appear in a collapsible “Uncategorized” section.
Limitations & Methodology Notes
- Voting behavior, not beliefs. Scores reflect how a legislator voted, not their personal views or stated positions. A legislator may vote against a bill for procedural reasons unrelated to the policy issue.
- Low-coverage issues. Some policy issues appear in few bills during a session. Scores on these issues have lower confidence and may shift as more relevant bills are voted on.
- Absent and voice votes. Only recorded Yea and Nay votes are captured. Absent votes and voice votes (where individual positions are not recorded) are excluded.
- AI classification. The system uses AI (Claude Haiku) to identify which policy issues each bill addresses and to assign stance and relevance scores. This classification is probabilistic and may occasionally miscategorize a bill's relationship to an issue.
- Session scope. Scores draw from South Dakota legislative sessions back through 2019, with recency weighting that emphasizes the most recent sessions. Legislators with shorter tenures have less voting data available.
Stance profiles are visible on each legislator's page. For details on how these scores are used to predict votes, see How We Predict Votes.