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.