PODA voting (proportional optionally-delegated approval) is a proportional voting method designed for city council elections; that is, for electing small numbers (5-20) of seats at a time without relying on partisan labels.
Here's how it works:
(Optional:) Voters and candidates may be divided ahead of time into a number of "wards" that's less than the total number of seats to be elected. For instance, there might be 7 wards and a total of 13 seats. Ballots list same-ward candidates first.
Candidates pre-rate each other as "approve" or "disapprove". Candidates may not approve more than half of the incumbents. These pre-ratings are public.
Voters rate candidates at one of 4 levels: "Support", "Approve", "don't know/delegate", or "disapprove". Default is "don't know". (In most cases, it is enough to "support" only one candidate, though supporting a few additional candidates is probably also strategically OK.)
Any "don't know/delegate" ratings for candidate X are changed to "approve" ratings if over half the candidates Y (, Z, etc.) who were "supported" on that ballot pre-approved X. Otherwise, "don't know" is changed to "disapprove".
Define a "quota" as the number of votes divided by the number of seats.
(Optional:) For each ward, the candidate X with the most same-ward votes gets a seat. If that candidate has less than 1 quota of "support" votes, then remove all ballots that support X. If that candidate has more than 1 quota of "support", then remove one quota of votes that support X. (There are several rules that would work for removing those ballots. For instance, you could start at a random vote and then remove every nth vote from there on, with n chosen so as to make as close to one full circuit around the votes as possible. Or, if voters prefer not to have a random aspect, all ballots supporting that candidate could be reduced by a fractional "weight" so that the total weight added up to the right amount.)
If any candidate has over 1 quota of "support" votes, they get a seat. Remove 1 quota of their support ballots.
As long as any candidate has over 1 quota of votes combining "support" and "approve" tallies, choose the one of those with the most "support" votes, and give them a seat. Remove all their support ballots, then remove enough of their approval votes to total one quota of ballots removed.
If there is/are still seat(s) left to fill, pick the candidate(s) with the most approvals.
Summable PODA (alternative version)
The above algorithm requires full data from all ballots; it cannot be run exactly using just precinct-level tallies. As long as it is possible to bring all the ballots to be counted centrally, the above is probably best. However, if that is not an option, it can be approximated, if the following tallies are kept:
- Number of ballots which "support" each candidate X, denoted S(X).
- Number of ballots which "approve" each candidate X, denoted A(X).
- For each pair of 2 candidates X and Y, number of ballots which "support" both of them, denoted SS(X,Y)=SS(Y,X).
- For each ordered pair of 2 candidates X and Y, number of ballots which support X and approve Y. ("How many Y approvals come from X supporters") This is denoted SA(X,Y)
There are various algorithms for maintaining a consistent set of tallies while virtually removing "support ballots" or "approval ballots" for a given candidate. Explaining the details of such algorithms is too tedious to go into here, but all of them are just versions of "reduce the tally you're focusing on by the target amount, then guess what fraction of that target amount overlaps with each of the other tallies, in a way that ensures there are no logical inconsistencies". None of these algorithms gives exactly the same result in all cases as having actual ballots, but all of them are pretty close. In cases where the extra transparency and security of summable tallies is more important than the precision of full ballots, a summable version of PODA is a good option.