Voting method
Single Transferable Vote (STV)
Single Transferable Vote is a ranked-choice voting method designed for filling multiple seats — a board, a council, a committee — in a way that's proportional to voter preferences. It minimizes wasted votes and produces results where every winning candidate has the support of a real, measurable share of the electorate.
Why use STV?
Most multi-winner elections in the wild use one of two flawed methods. Block voting ("vote for up to N candidates") lets a 51% bloc sweep every seat. Cumulative voting spreads ballots across favorites but encourages tactical choices and produces unstable outcomes.
STV solves both problems. A 30% bloc of voters elects roughly 30% of the seats. Voters can rank their honest first choice without fear of "wasting" their vote — if their favorite gets eliminated or has more support than they need, the surplus flows to the next preference on the ballot.
The downside: counting is more complex than tallying X's. That's BallotFlow's job.
How the ballot works
A voter sees a list of candidates and ranks them in order of preference: 1, 2, 3, and so on. They can rank as many or as few as they want. They can stop after their first choice if they only care about one candidate, or rank every candidate on the ballot if they want to express a complete preference order.
BallotFlow's ballot page presents this as a drag-and-drop (or tap-to-rank on mobile) interface — voters move candidates from an "available" column to a "ranked" column in the order they prefer. Submitted ballots are stored as ordered arrays of candidate IDs.
How the tally works
STV counts in rounds. Each round, the algorithm computes a quota — the minimum number of votes needed to guarantee election — and then either elects candidates who have crossed the quota or eliminates the candidate with the fewest votes.
The interesting part is what happens to surplus votes. If a candidate is elected with more votes than the quota requires, the excess shouldn't be locked to that candidate — it represents voters whose support is now extra, and those voters' next preferences should still count. Surplus votes flow proportionally to the next preference on each ballot.
Likewise, when a candidate is eliminated, their ballots aren't discarded — they transfer in full to each ballot's next-ranked surviving candidate.
Meek's method (and why BallotFlow uses it)
The trick in STV is the "proportionally" part of surplus transfer. There are several methods, each with different tradeoffs:
Scottish / WIGM uses an integer Droop quota
and transfers surpluses with a fractional weight equal to
surplus / total. Simple, well-understood, used
by Scottish local elections.
Hare transfers a randomly-selected portion of ballots. Easy by hand, but introduces randomness into the result. Avoid.
Meek's method assigns every candidate a
"keep factor" — initially 1.0 for everyone — and iterates
until the totals converge. When a candidate is elected,
their keep factor drops to quota / total, so
they retain exactly the quota and pass the rest of the
ballot's weight to the next preference. Because the keep
factors interact (a ballot's contribution to candidate B
depends on what happened to candidate A above them), the
quota is recomputed each iteration until everything
settles.
BallotFlow uses Meek per Hill, Wichmann, and Woodall's 1987 Computer Journal paper. Why Meek over Scottish/WIGM?
- Equal treatment of ballots. Every ballot that contributes to an elected candidate contributes the same fractional amount, regardless of when in the count the candidate was elected. Scottish/WIGM treats earlier and later ballots slightly differently when transferring surplus.
- Accurate handling of exhausted preferences. When a voter doesn't rank enough candidates, Meek naturally adjusts the quota downward as ballots become exhausted, so the remaining seats are still filled by candidates with proportional support.
- It's the de facto reference. The
droopcommand-line tally tool (widely used in academic and election-research contexts) implements Meek. BallotFlow's tally engine is verified against droop on hand-authored.bltfixtures, so results match the field's reference implementation.
Real-world adoption
STV is used for public elections in Ireland, Malta, Australia (Senate), Scotland (local), and Northern Ireland. It's used by professional and academic organizations including the American Mathematical Society, the Royal Statistical Society, and many university student governments. Cambridge, Massachusetts uses it for city council elections.
When STV is the right call
STV fits when you're filling multiple seats and want the result to proportionally reflect voter preferences. Boards, councils, committees, and any election where "the top N candidates win" produces results that feel wrong to the voters who didn't choose them.
For single-seat elections, BallotFlow runs instant-runoff voting instead — which is just STV with one seat. For elections where ranking feels like overkill, approval or plurality are right there too.