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. 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 all the candidates Y (, Z, etc.) who were "supported" on that ballot pre-approved X. Otherwise, "don't know" is changed to "disapprove".
Tallies are kept of:
- Number of ballots which "support" each candidate.
- Number of ballots which "approve" each candidate.
- For each pair of 2 candidates, number of ballots which "support" both of them.
- 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")
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 adjust all tallies above to cancel out all ballots which support X. If that candidate has more than 1 quota of "support" votes, adjust all tallies to remove 1 quota of such votes.
If any candidate has over 1 quota of "support" votes, they get a seat. Adjust all tallies to remove 1 quota of their support votes.
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. Adjust all tallies to remove all their support votes, then adjust all tallies to remove enough further votes to make a full quota, taken uniformly from those votes that approve them.
If there is/are still seat(s) left to fill, pick the candidate(s) with the highest approval.
Say you are removing v "support" votes from candidate X with S(X) supports, A(X) approvals, SS(X,Y) support votes in common with Y, SA(X,Y) supporters who approve Y, and SA(Y,X) approvals from supporters of Y. Subtract v from S(X). Subtract sy=(S(X)-v)/S(X)*SS(X,Y) from SS(X,Y) and from S(Y). ....