Methodology
“Wokeness” is not a measurable physical quantity. There is no ground truth to validate against, no instrument to calibrate, and no experiment that could show a score here to be wrong. What follows is therefore not a discovery of anyone’s wokeness — it is a definition, applied consistently, with the workings shown.
What is actually being measured
Position on a social-progressivism axis: the cluster of policy positions concerning identity, equity, inclusion and social justice. 0 is the traditionalist pole, 100 the progressive pole, 50 exactly neutral. This is close to what comparative political science calls the GAL–TAN or second dimension, and it is deliberately not a general left–right axis — economic redistribution is included at the lowest weight precisely because it correlates with the target construct without being it.
The scale is descriptive, not evaluative. A score of 90 and a score of 10 are statements about which side of recorded votes a member took, not about whether they were right to.
Step 1 — scoring bills
Each bill’s title and Congressional Research Service summary are read against a published lexicon of 139 terms across 8 dimensions. Two problems make naive keyword counting useless, and both are handled explicitly:
Valence
A bill banning gender-affirming care and a bill protecting it contain the same keywords. For every matched concept the scorer finds the clause nearest the match and takes the first governing verb inside it, classifying it as advancing or curtailing the concept. Negation is honoured, so “shall not prohibit X” reads as protecting X.
Promoting cues: protect, expand, establish, require, authorize, fund, funding, guarantee, ensure, strengthen, extend, promote… | Restricting cues: prohibit, ban, repeal, restrict, prevent, eliminate, defund, terminate, rescind, block, penalize, criminalize…
The clause rule matters more than it sounds. In “to prohibit federal funding of X”, the word funding sits closer to X than prohibit does, so a nearest-verb rule would score the bill as funding X.
Framing vocabulary
Some terms signal a stance simply by being used — “illegal alien”, “unborn child”, “systemic racism”. Nobody writes a bill to advance an illegal alien, so valence detection is skipped for these and their sign is fixed by their presence.
Topic versus direction
CRS legislative subject terms are hand-assigned by librarians and are excellent evidence that a bill is about a dimension. They carry no direction — the subject “Abortion” is attached to bills on both sides — so they raise a dimension’s confidence without moving its score.
Step 2 — scoring legislators, twice, from independent evidence
The rubric score aggregates each member’s votes on scored bills, weighted by how strongly and how confidently each bill was scored. This is the same construction interest-group ratings have used for decades. Procedural questions are handled rather than ignored: a Yea on a motion to table opposes the underlying measure, and motions to recommit are excluded entirely because their direction depends on instructions absent from the vote record.
The latent score comes from a one-dimensional item-response model fit to the roll call matrix — the same family of method behind DW-NOMINATE. It contains no policy judgements whatsoever; it simply asks what single dimension best explains who votes with whom. The recovered axis has arbitrary sign and units, so it is anchored to the rubric’s scale by least squares.
The headline score blends the two, weighted toward the rubric as a member accumulates scored votes, so members with thin records lean on the latent estimate rather than on a handful of accidents.
Step 3 — the check on itself
Because the two estimates share no inputs, their agreement is meaningful. A high |r| says the rubric is tracking the dominant axis of disagreement in Congress rather than an artefact of its own word list. It does not say the rubric measures “wokeness” correctly — only that it measures the thing Congress actually divides over.
The dimensions and their weights
| Dimension | Weight | Share | Terms | What it covers |
|---|---|---|---|---|
| Racial equity & civil rights | 1.00 | 13% | 23 | Anti-discrimination enforcement, voting rights, affirmative action, reparations, disparate-impact remedies. |
| LGBTQ+ rights & gender identity | 1.20 | 16% | 16 | Sexual-orientation and gender-identity protections, gender-affirming care, trans participation in sport, recognition of same-sex marriage. |
| Immigration & border | 1.00 | 13% | 22 | Pathways to status, asylum and refugee protection, enforcement, detention, deportation, border security. |
| Gender & reproductive rights | 1.10 | 15% | 18 | Abortion access, contraception, IVF, pay equity, pregnancy discrimination, gender-based violence. |
| Speech, expression & education | 1.10 | 15% | 17 | DEI programmes, curriculum content, critical race theory, book access, campus speech, academic freedom. |
| Criminal justice & policing | 0.90 | 12% | 18 | Sentencing reform, police accountability, incarceration, the death penalty, re-entry and record clearing. |
| Climate & environmental justice | 0.70 | 9% | 13 | Emissions policy, environmental-justice targeting, fossil-fuel regulation, green transition. |
| Economic redistribution & labor | 0.50 | 7% | 12 | Adjacent to the axis rather than core to it, and weighted low for that reason: it correlates with social progressivism without being the same construct. |
Weights are arguable by design and live in one file (packages/core/src/rubric.ts). Change them, re-run the pipeline, and every number on this site changes with them.
What this cannot tell you
- The rubric is a set of opinions. Which dimensions belong on the axis, which terms signal which side, and how the weights trade off are all editorial choices. Reasonable people would write a different file and get different numbers.
- Only recorded votes count. Most of a legislator’s work — sponsorship, committee action, negotiation, what they stopped from reaching the floor — is invisible here. Members vote on the agenda they are given.
- Votes are not beliefs. Members vote for procedural, strategic, party-discipline and constituency reasons. A vote is an observable; a belief is not.
- Bill text is a summary of a summary. Scores read titles and CRS summaries, not full statutory text, and a short title is often a piece of persuasion rather than a description.
- The intervals understate uncertainty. The bootstrap band covers variation in which measures reached a vote. It cannot express uncertainty in the rubric itself, which is the larger source of error and is not quantifiable.
- Precision is not accuracy. A score of 61.4 is not meaningfully different from 58.9. Read the intervals, and treat the ordering of adjacent members as noise.
Sources
- unitedstates/congress-legislators
- clerk.house.gov Electronic Voting System
- senate.gov Legislative Information System
- govinfo.gov BILLSTATUS bulk data
- unitedstates/congress-legislators committee-membership-current
All four are public and require no API key, so any claim on this site can be checked by re-running the pipeline. Dataset generated 2026-08-18 covering 1,535 roll calls.