About Pref.Tools Vote
Development
Pref.Tools Vote was developed with the assistance of Claude Opus 4.5 (Anthropic) and was first published in January 2026.
The backend voting rule computations are powered by adapted versions of:
- pref_voting — A Python library for preference voting methods (single winner, rank aggregation, multi winner)
- abcvoting — A Python library for approval-based committee voting
- pref.tools/apportionment — A web app for apportionment methods
- Method of Equal Shares: Online Computation Tool — A web app for computing the Method of Equal Shares in participatory budgeting
Open Source
The source code for this application is MIT licensed and available on GitHub:
github.com/DominikPeters/pref-tools-vote-app
Feedback, bug reports, and contributions are welcome!
Features
Question Types
Pref.Tools Vote supports a variety of input types designed for social choice applications:
- Single Choice — Standard radio button selection
- Approval Voting — Select multiple options (with optional min/max limits)
- Ranking (Full) — Drag-and-drop complete ranking of all options
- Ranking (Partial) — Rank a subset of options (truncated preferences)
- Ranking with Ties — Allow indifference classes in rankings
- Star Rating — Rate options on a configurable star scale (2-10 stars)
- Grade Voting — Assign grades (Excellent, Very Good, Good, Fair, Poor, Reject)
- Yes / No / Abstain — Three-option voting for each alternative
- Participatory Budgeting — Budget allocation with project costs
- Short Text — Single-line free text response
- Long Text — Multi-line free text response
Single-Winner Voting Methods
For ranking and approval-based questions:
- Schulze Method — Condorcet-consistent method using beat paths
- Ranked Pairs — Lock-in method based on pairwise margins
- Instant Runoff Voting (IRV) — Sequential elimination of last-place candidates
- Borda Count — Positional scoring rule
- Copeland — Count pairwise victories
- Minimax — Minimize worst pairwise defeat
- Plurality — Most first-place votes wins
- Split Cycle — Condorcet method using cycle resolution
- Stable Voting — Defeat-dropping Condorcet method
- Approval Voting — Most approvals wins
Multi-Winner & Committee Methods
- Proportional Approval Voting (PAV) — Thiele method for proportional representation
- Method of Equal Shares — Proportional method for approval ballots
- Single Transferable Vote (STV) — Ranked-choice proportional method
- Sequential Phragmén — Load-balancing proportional method
- Chamberlin-Courant — Diversity-maximizing committee selection
- Apportionment Methods — Seat allocation (D'Hondt, Sainte-Laguë, etc.)
Rank Aggregation
- Kemeny — Optimal ranking minimizing pairwise disagreements
- Squared Kemeny — Variant using squared distances
- Borda Ranking — Ranking by Borda scores
Rating & Judgment Methods
- Score Voting — Sum of ratings
- STAR Voting — Score Then Automatic Runoff
- Majority Judgment — Median-based grade aggregation
Participatory Budgeting
- Method of Equal Shares — Proportional budget allocation
- Utilitarian Greedy — Maximize total utility
- PaBuLib Export — Export data in standard research format
Visualizations & Analysis
- Pairwise Margins Graph — Head-to-head comparison visualization
- Response Matrix — Doodle-style overview of all responses
- Multi-Rule Comparison — Compare outcomes across voting methods
- Condorcet Winner Detection — Identify candidates beating all others
- Data Export — PrefLib and PaBuLib formats for research
Poll Configuration
- Multiple Questions per Poll — Combine different question types
- Privacy Settings — Full transparency, anonymous votes, or private results
- Access Control — Public, password-protected, one-time tokens, or email invitations
- Voting Modes — Open, identified, or secret ballot
- Response Editing — No editing, edit own, or edit any (Doodle-style)
- Option Randomization — Randomize option order to reduce bias
- Markdown Support — Rich text in descriptions and messages