How the question decides the answer
Change nothing about the voters. Change only what the ballot asks. Watch the winner change.
A committee of seven has a shared fund and four things to spend it on. Each member has told you, honestly, how much they want each one. Nobody is strategising and nobody changes their mind below.
The only thing that changes is the shape of the ballot — and with it, the winner.
How should the shared fund be spent this quarter?
Pick a way of counting. The preference table above the buttons never changes; only the question being asked of it does.
| 7 members | Repair the roof | Fund the apprenticeship | Buy the tooling | Hold in reserve |
|---|---|---|---|---|
| Three members who use the building daily | ||||
| Two members who train newcomers | ||||
| Two members who do the work itself |
The ballot asks: Which single option do you want most?
- Repair the roof3 first choices
- Fund the apprenticeship2 first choices
- Buy the tooling2 first choices
- Hold in reserve0 first choices
Repair the roof wins with 3 of 7. Four of the seven members rated it zero. Nothing was counted wrongly — this is what “pick one” is for, and it is why the option most people can live with can lose to the one a large minority loves.
Computed by methodSpec(id).aggregate() — src/lib/domain/methods/
Counting heads, or asking about harm
The five above all rank things. The deepest split in the list is not between them, but between asking who is in favour and asking can anyone see harm here. Same room, same question, two readings.
As a yes/no vote
5 of 7 vote yes. A simple majority carries it, and the two objections become a number.
On the table: Sign the roof contract at the quoted price.
- Yes
- 5
- No
- 2
- Abstain
- 0
Carried
Computed by methodSpec("single_choice").aggregate()
As a consent decision
The identical ballots, read as consent. One reasoned objection is enough, so the proposal does not pass — and the reasons survive as text the group has to answer.
On the table: Sign the roof contract at the quoted price.
The quote is a year old and the contractor has not re-surveyed the roof since the storm.
Signing this quarter spends the reserve we agreed to hold until the audit closes.
Not passed — 2 objections to resolve
Computed by methodSpec("consent").aggregate()
The 6 methods, and what each is for
Every line below is read from the method’s own definition — the same object that validates the ballot, writes the text you sign, and counts the result.
| Method | Asks | Kind |
|---|---|---|
| Yes / nosingle_choice | Each member votes yes, no, or abstain. Abstaining counts toward quorum but not toward the result. | Decision |
| Consentconsent | Agree, abstain, or object with a reason. Any single reasoned objection stops the proposal — consent asks whether anyone sees harm, not who has the most votes. | Decision |
| Approvalapproval | Approve every option you find acceptable — as few or as many as you like. The option with the most approval wins. | Ranking |
| Dot allocationdot | Spend 5 dots across the options however you like. The dots are the priority. | Ranking |
| Scorescore | Rate each option from 0 to 5. The highest average wins. | Ranking |
| Ranked (Borda)ranked | Put the options in your order of preference. Earlier places earn more points; anything you leave out ties for last. | Ranking |