primaries is a web app for conducting primary elections. The app is free to install and use by any political party who wants to have fair primary elections.
The web app is built on the comsocwebapp python package, available here: https://github.com/ariel-research/comsocwebapp.
It currently supports a single ballot type: approval ballots (each voter can approve any number of candidates). It supports two voting rules:
- Approval voting - The list of candidates is ordered by descending order of votes, from the candidate with the most votes to the candidate with the least votes. This is a very simple rule, but it is unfair towards minorities.
- Phragmen's sequential rule - A rule that guarantees fair representation to both minority and majority groups, without having to define them in advance.
- New primary elections — give it a title and a preference format (currently only
approval). - Add candidates one by one, or bulk-upload a CSV with the columns
name,description,0. - Generate invitations — personal links die once redeemed; generic links can be mailed to a list. Each email can register only once.
- Generate dummy users to test a rule before real people arrive; choose
the distribution (
uniform,normal,exponential), the bounds and a seed for reproducibility. Delete them all with one button. - Set the status to
openso participants can vote (closedlocks it). - Run a rule over real users only, dummy users only, or both. The outcome
and the step-by-step log are stored in
execution_logsand shown to admins and participants alike. - Export anonymised preferences and execution logs as CSV.