Transparency
How Matching Works
An open explanation of how we calculate your match scores with candidates and ballot measures.
You take the quiz
The quiz presents pairs of opposing policy positions across six political axes. For each question, you choose the position closer to your own and rate how important the issue is to you (1–5).
The six axes
- Economic Policy
- Social Policy
- Environment & Climate
- Housing & Development
- Public Safety
- Government Role
Each axis uses a −100 to +100 scale. −100 represents one end of the spectrum (e.g., more government involvement) and +100 the other (e.g., less government involvement). 0 is the center.
We build your profile
Your answers produce two numbers per axis:
- Position — where you fall on the −100 to +100 scale, calculated as the weighted average of your answers on that axis.
- Priority — how much this issue matters to you (1–5), calculated as the average of your importance ratings on that axis.
You can refine your profile later with scenario questions that adjust your priority weightings using an Elo rating system.
We research candidates & measures
For each candidate and ballot measure on your ballot, we use AI to research their publicly available positions—voting records, campaign websites, public statements, and news coverage. The AI assigns a position on each of the six axes, along with a confidence level (high, medium, or low) and cited sources.
All AI-generated positions are reviewed by our editorial team before publication. When a candidate or measure has no clear position on an axis, it is marked “N/A” and excluded from the score calculation.
We calculate your match
The match score is a priority-weighted similarity calculation:
The formula
- For each axis where both you and the candidate have a position, calculate similarity:similarity = 100 − |your_position − their_position| / 2
Positions range −100 to +100, so the maximum difference is 200. Dividing by 2 converts to a 0–100% similarity.
- Weight each axis by your priority:weighted_score = similarity × your_priority
- Overall match:match% = sum(weighted_scores) / sum(your_priorities)
You see the breakdown
On your ballot page, each candidate and measure shows an overall match percentage. Click “Why this match?” to see the per-axis breakdown—your position, their position, and how each axis contributes to the overall score.
Issues where you set a higher priority have more influence on the final score. If you care deeply about the environment but not much about housing, a candidate who matches you on environment will score higher even if they disagree on housing.
Worked example
| Axis | You | Candidate | Priority | Similarity | Weighted |
|---|---|---|---|---|---|
| Economic | +40 | +60 | 5 | 90% | 450 |
| Environment | −70 | −30 | 4 | 80% | 320 |
| Public Safety | +20 | −20 | 2 | 80% | 160 |
| Overall match | 11 | 84.5% | |||
(450 + 320 + 160) / (5 + 4 + 2) = 930 / 11 = 84.5%
What matching does not do
- It does not consider party affiliation, endorsements, or fundraising.
- It does not account for leadership style, character, or electability.
- It does not tell you who to vote for—it shows how closely a candidate’s stated positions align with yours.
- A high match does not mean a candidate is “good” and a low match does not mean they are “bad.”