The vote is the product.
Most trip apps are a place to write the plan down. Truce is the thing that decides what the plan is - a real vote, held on a clock, that nobody in the group can override. Everything else it does is downstream of that.
- Votes per member
- One
- Organiser override
- None
- Decided by
- The clock
One block, start to finish
A trip is not one big decision, it is thirty small ones. Truce breaks them into time blocks - a slot on a day - and runs a self-closing vote inside each.
A block opens
Somebody carves out a slot - Saturday 14:00 to 18:00, or Thursday dinner. That slot is the unit of decision: you are not voting on a trip, you are voting on an afternoon.
Any member
Options go on the ballot
Anyone nominates into the block, pulling real activities from Viator or real restaurants, bars and sights from Google Places. The price and the ticket option come with it, so you are voting on the actual thing rather than the idea of it.
Any member
Everybody votes
One vote per person per option, up or down. Change your mind as many times as you like while the window is open - you still only ever hold one vote on it. Add a line saying why, if the why matters.
One each
The window runs down
The block carries an end time from the moment it is made, counting down live on every phone in the group. Nobody can end it early to catch a favourable moment.
Visible to all
It locks itself
At the deadline the highest score - votes up minus votes down - wins. The block drops off the ballot and the winner is on the plan. If everyone is looking, they watch it happen; if nobody is, a job five minutes later does exactly the same thing.
Automatic

What the vote guarantees
A thumbs-up icon is easy. What matters is what the thumbs-up is allowed to do, what it cannot be talked out of, and where the rule actually lives - in the interface, where it can be worked around, or in the database, where it cannot.
One vote per member
A uniqueness rule on the pair of member and option, not an honour system. Two votes from one person on one option cannot exist in the data, so no client bug and no clever request can manufacture one.
Database constraint
No casting vote
There is no tie-break power anywhere in the product. When the scores are level, the resolution is a runoff or chance - never a person.
Nobody holds one
No veto
An organiser cannot remove a nomination they dislike from the ballot, and cannot overturn a block that has already decided.
None
No early finish
The lock-in control does not appear until the window has actually closed. There is deliberately no way to end a vote while it is running - an earlier build had one for testing and it was taken out.
Deadline only
Nominating is not a privilege
Anyone can put something on the ballot. A per-day cap stops one enthusiast burying everyone else, and the organiser is exempt from that cap so a trip cannot end up with nothing to vote on.
Every member
Retracting takes the note with it
Pull your vote and the reasoning attached to it goes too. A justification with no vote behind it is just a comment, and Truce does not have comments.
By design
A tie is the honest test
Any system looks fair while there is a clear winner. What a voting system actually is shows up when the scores are level - and that is the moment most tools quietly hand the decision back to whoever is most senior in the group.
Reducible tie
24-hour runoff
Three or more options level at the top, with others below them. The stragglers are marked as lost, the block reopens for 24 hours, and the group votes again between the leaders only. Round one’s votes carry over - the second round is an amendment, not a fresh start, so nobody’s tally is inflated by voting twice.
Irreducible tie
The wheel
Two options level, or everything on the ballot level, or a runoff that ties again. There is nothing left to reduce, so it goes to chance: a segmented wheel spins on screen and lands on one. The winner is drawn before the animation begins - the spin is there so the group watches the same coin flip rather than being told the result.
Nobody watching
Same odds, no ceremony
Deadlines pass while people are asleep or on a plane. When that happens the server settles the block on identical odds, with no wheel and no audience. The outcome does not depend on who happened to have the app open.

The reason, attached to the vote
Knowing a thing lost 4–2 is less useful than knowing it lost because two people had already been and one of them cannot do stairs. So a vote can carry a line of reasoning, and that line lives on the vote itself.
It means the justification cannot drift away from the thing it justifies. Retract your vote and the note goes with it. Change your mind from yes to no and the note stays, ready to be rewritten, rather than being silently dropped while it still says the opposite of what you now think.
This is deliberately not a comment thread, and Truce is deliberately not somewhere to argue. Your group already has a thread for that. What it does not have is a record of why the group chose what it chose.

What it will not do
A voting system is defined at least as much by what it refuses. These are the things a group planning tool normally does that Truce does not.
It will not let the loudest person win
Volume is not an input. A vote is a vote whether it arrives with three paragraphs of argument or in silence at 2am, and the tally is the same either way.
It will not quietly ask the organiser
The organiser role exists to set up a trip, invite people and manage the rules of the game. It confers no extra weight inside a vote - no thumb on the scale, no final say, no deciding vote in a tie.
It will not lose the result
A decided block is not a message that scrolls away. The winner goes on the itinerary, the losers are kept and marked as such, and every vote and reason is still there afterwards.
It will not make you re-enter anything
The point of the vote deciding is that the decision then acts. There is no step where a volunteer copies the outcome into a spreadsheet, a doc, or another app.
It will not become a chat
Truce had message threads. They were removed, because your group already has a thread and was never going to keep a second one alive. What survived is the one part worth keeping: the reason behind a vote, attached to the vote.
Not everything is an activity
The ballot handles the things with a price and a time slot. Two other votes sit alongside it for the decisions that have neither.

Group polls
Which flat, whose car, what night, who is driving back. Single or multi-select, with a deadline like everything else, and anonymous if the honest answer needs cover. They sit on the same ballot as the activity blocks, so there is one place where open questions live.
Free · any question
Dates poll
Start a trip with no dates at all. Ranges get proposed, everyone marks each one available or not, and the grid fills in live so the group can see the answer forming. Confirming it unlocks the plan and the ledger.
Doodle-style
What is not a vote
Booking, paying and settling up are not put to the group - they are one person's action, recorded honestly for everyone to see. Voting decides what happens; the ledger records who did it.
On purpose
And then the decision acts
This is the part that makes the vote worth holding. The moment a block locks, three things happen without anybody doing them.
It joins the itinerary
The winner appears on the shared day-by-day plan, in its slot, for everyone. Clash detection has already made sure nothing else is booked over it.
Same second
The ledger expects it
A won activity shows up on the ledger as something still to be booked, with its cost known. Whoever books it fronts the money and the split freezes right there.
Awaiting booking
Everyone is told
A notification goes out and the trip's activity log records what won and when. Nobody has to relay the result, and nobody can claim they were not asked.
Push · log
Let the group decide it.
Truce is in build for iOS. Leave an email and we’ll send exactly one message on launch day - no newsletter, no drip, no sharing it with anyone.