VoteMoCo
Transparency

Methodology

VoteMoCo is a structured matching tool — not an LLM black box. Here is exactly what goes into a recommendation.

The score, in plain terms

Match = PolicyScore × 0.70 + InfluenceScore × 0.30
        (re-weighted to only count what we have data on for you + this candidate,
         then a ×1.3 contrast factor so real differences show)

Two things drive your match: how closely your issue positions line up (PolicyScore) and how well a candidate fits the endorsement and influence preferences you set (InfluenceScore).

We only blend the parts we actually have signal for. If you didn’t set the influence sliders, or we have no endorsement data for a candidate, that part is dropped and your policy match carries the score — instead of diluting everyone toward 50% with a neutral placeholder. We then apply a small contrast factor so genuine differences in alignment are visible rather than bunched near the middle. It only spreads scores apart; it never changes who ranks above whom.

How complete and well-sourced a candidate’s record is does not inflate or deflate their match percentage. Instead it drives our confidence: thin records get a “Limited data” flag so a high score never masquerades as certainty.

PolicyScore

We compare your answers to a candidate’s structured stances on individual dimensions like “housing supply,” “tenant protections,” and “school funding.” Each dimension contributes proportionally to how important you indicated that issue is, weighted by our confidence in the candidate’s position.

For each dimension we both have data on, we compute a 0–1 similarity score (1.0 = identical positions, 0.0 = opposite). Those similarities are averaged using your importance × the candidate’s confidence as the weights.

Your own words count

The open-ended questions aren’t just for show — they feed back into the score. When you mention a topic in your own words (e.g. “housing affordability,” “teacher pay,” “Vision Zero”), the matching engine recognizes those keywords and lifts the importance of the related dimensions toward a per-question ceiling:

  • Top priorities — up to 100% importance for dimensions you mention.
  • Doing poorly — up to 85%.
  • Anything else — up to 70%.
  • Doing well — up to 60%.

We never let open text reverse the direction of your structured answers — if you wrote “we need lower taxes” but slid the tax slider toward more services, your slider wins on direction; the word “tax” only boosts how much the tax dimension matters to your match.

InfluenceScore

Separately, you can tell the tool how much you care about endorsements, union support, experience, and grassroots vs. establishment positioning. These map to candidate-level signals (e.g. teachers-union endorsement, environmental-group endorsement). The score reflects how aligned you and the candidate are on each, weighted by how strongly you indicated a preference.

Signals are facts, not value judgments. An MCEA endorsement, a Sierra Club endorsement, or a Chamber of Commerce endorsement is just a thing that happened; VoteMoCo doesn’t decide whether it’s a good or bad thing. That’s why every influence slider is bidirectional:

  • Slide positive and candidates strong on that signal will score better.
  • Slide negative and the same signal counts against them.
  • Leave at zero and the signal has no effect on your match.

So a voter who sees an MCEA endorsement as evidence of pro-MCPS-staff alignment can slide the teachers-union slider positive. A voter who sees the same endorsement as insufficient accountability for the system can slide it negative. Both are valid; the matching engine just respects the voter’s call.

See the full endorser catalog for plain-language descriptions of every org we track — who they are, what they advocate for, and why some voters see them as a positive while others see them as a negative.

ContextScore

A small adjustment for data quality — how complete is the candidate’s profile, how confident are we in the underlying sources. Below a confidence threshold (35%), candidates are shown with a “Limited data” flag regardless of policy match.

Where the data comes from

  • Candidate questionnaires (when available).
  • Public statements, debate transcripts, and interviews.
  • Reported endorsements from civic groups, unions, and outlets.
  • Voting records and campaign finance disclosures (for incumbents and prior officeholders).
  • Reputable local news coverage.

Each candidate stance and signal carries source citations. The full machine-readable dataset (and the research prompts used to build it) will be published in a separate public repository before launch — see the About page.

Limitations

  • This is not an official voter guide. Always consult the Montgomery County Board of Elections for ballot specifics.
  • Real candidates change positions; we will update data as we discover it, but there will always be lag.
  • Open-ended responses are stored but do not directly affect ranking — they exist for human researchers.
  • Scoring weights are reasonable defaults, not consensus. They are configurable and audited here.

You are always in control

Every recommendation is overridable. You can pick any candidate, skip any race, or mark a race “undecided.” The exported slate reflects your choices, not ours.