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

Rubric vs latent
r = -0.96
over 538 members
Votes reproduced
95.8%
by the one-dimensional model
Informative votes
1433
near-unanimous roll calls dropped
Bills on the axis
62/482
the rest scored nothing

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

DimensionWeightShareTermsWhat it covers
Racial equity & civil rights1.0013%23Anti-discrimination enforcement, voting rights, affirmative action, reparations, disparate-impact remedies.
LGBTQ+ rights & gender identity1.2016%16Sexual-orientation and gender-identity protections, gender-affirming care, trans participation in sport, recognition of same-sex marriage.
Immigration & border1.0013%22Pathways to status, asylum and refugee protection, enforcement, detention, deportation, border security.
Gender & reproductive rights1.1015%18Abortion access, contraception, IVF, pay equity, pregnancy discrimination, gender-based violence.
Speech, expression & education1.1015%17DEI programmes, curriculum content, critical race theory, book access, campus speech, academic freedom.
Criminal justice & policing0.9012%18Sentencing reform, police accountability, incarceration, the death penalty, re-entry and record clearing.
Climate & environmental justice0.709%13Emissions policy, environmental-justice targeting, fossil-fuel regulation, green transition.
Economic redistribution & labor0.507%12Adjacent 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

Sources

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.