RosaVote ๐ŸŒน
Open source ยท Member-verifiable ยท Built for DSA

Count every vote.Prove every count.

RosaVote is an open-source, code-authenticated ballot system that runs on your own cloud โ€” with tamper-evident results any member can check, and the counting rules DSA actually uses built right in.

What you get

Everything a real election needs โ€” and nothing it doesn't.

A ballot box built for the way a democratic organization actually votes: proportional slates, diversity quotas, secret delegate ballots, and results the whole membership can audit.

Access

Code-authenticated voting

Single-use codes matched to your membership roll โ€” no accounts, no passwords. Codes are validated before they're spent, so a failed retry never burns a voter's ballot.

Trust

Members verify their own ballot

Every voter gets a receipt and can confirm their ballot in the published hash chain, right in the browser. Trust the math โ€” not the operator.

Sovereignty

Runs on your infrastructure

Ballots live in your own Google Cloud and flow to your data warehouse. Nothing is ever uploaded to a third-party election vendor.

Methods

Every method DSA uses

Scottish & Meek STV, Score, STAR, Bloc STAR and STAR-PR โ€” plus comparison counts (Condorcet, SPAV and more) to sanity-check any result.

Rules

DSA rules, built in

Diversity-quota reservations, Article V timing and time zones, delegate alternates, and national + chapter-scoped admin โ€” out of the box.

Audit

Independently recountable

Publishes standard .blt ballot files and a tamper-evident hash chain. Anyone can re-run the count with the bundled verifier and get the identical result.

Fairness

Deterministic tie-breaks

Ties resolve by a documented, reproducible rule you can inspect โ€” never a hidden coin flip inside a black box.

Reach

Reaches every voter

Deliver codes by email or SMS via Mailgun, Twilio or Scale to Win, with self-serve opt-out and automatic bounce/spam cross-channel resend.

Access for all

Accessible by default

Screen-reader friendly, fully keyboard-navigable, high-contrast ballots, and light/dark themes โ€” tested across browsers.

The whole point

Elections you don't have to take on faith.

Open code, open ballots, open counts โ€” from a chapter co-chair race to a national delegate election.

Cast โ†’ count โ†’ prove

Six steps from membership roll to a result anyone can check.

01

Import the roll

Upload your membership list once. RosaVote de-duplicates and issues a single-use code per member.

02

Send the codes

Codes go out by email or SMS through your provider of choice, with opt-out handled automatically.

03

Members rank or score

Voters open a clean, accessible ballot โ€” rank a slate, score candidates, or answer a motion.

04

Close & count

At the deadline the ballots are tabulated by the binding method โ€” Scottish/Meek STV, Score or STAR.

05

Publish the ballots

Anonymized ballots and a tamper-evident hash chain are published alongside the winners.

06

Anyone recounts

Members verify their receipt; observers re-run the count in independent software โ€” same result, every time.

Verifiability, not vibes

Your ballot, provably in the count.

  • A receipt only you hold. Each ballot is hashed with its answers and a secret nonce โ€” printed on your receipt, revealing nothing about how you voted.
  • A chain no one can forge. After close, every ballot links into a sorted hash chain. Change one vote and the published chain head no longer matches.
  • Checked in your browser. Paste your receipt into the in-page verifier โ€” or run the bundled verify.py yourself. No trust in the operator required.
# your ballot receipt
receipt = 7F3A-2B9E-C4D1
record = sha256(receipt | answers | nonce)
a1c9โ€ฆ4f0b

# published chain (sorted by record hash)
chain[k-1] = 3e7dโ€ฆ9a2c
chain[k]   = sha256(prev | record)
= 6b8fโ€ฆ1d40

โœ“ chain verified โ€” 4,281 ballots, head 6b8fโ€ฆ1d40
Built for the movement

Not a generic poll tool. A comrade that knows the bylaws.

Diversity minimums for a delegation. Article V secret ballots. Alternates that fill the right way when a seat opens. YDSA NCC quotas. Chapter admins who see only their own race, and national admins who see the whole map. RosaVote encodes the rules your organization already fights to uphold โ€” so the software never stands in the way of the politics.

Diversity-quota reservations Article V timing & time zones Secret delegate ballots Delegate alternates YDSA NCC presets National + chapter scoped admin Full-body quota groups Apportionment math
The preferred alternative

RosaVote is the better default.

OpaVote is a good partner to DSA โ€” affordable, dependable, and a solid choice, especially for high-stakes or contested elections where an independent third party adds trust. RosaVote is the preferred alternative for everything else: stronger, more flexible, fully customizable, and more affordable. We're not forcing a migration โ€” chapters choose what fits each race.

OpaVoteRosaVote
Cost at DSA scale ~$0.08 per voter, per election โ€” fine for one vote, but it multiplies across 200+ chapters. Runs on cloud DSA already operates โ€” a fraction of the cost, at any scale.
Customization One general-purpose ballot template. Multi-section ballots, chapter-unique questions, randomized slates, per-section visibility.
DSA-specific rules Quotas and bylaw timing handled by hand, around the tool. Diversity quotas, Article V timing, alternates and scoped admin built in.
Flexibility & control Proprietary and hosted โ€” you work within its limits. Open source (AGPL-3.0) โ€” DSA owns the roadmap and can extend anything.
Data ownership Ballots hosted by the vendor, removed about 12 weeks after the vote. Ballots stay on DSA infrastructure, retained on DSA's own terms.
Voter verification Published results and a downloadable ballot file. Per-voter receipts, a public hash chain, and an in-browser verifier.
Counting methods Scottish STV, Borda, IRV, Condorcet โ€” a solid, proven set. All of those plus Meek STV and Score/STAR/STAR-PR โ€” open and reproducible.
Support & independence Commercial support and a neutral third party โ€” a real plus for high-stakes races. DSA-maintained and extensible, with the whole movement able to contribute.

OpaVote is a good partner, and no chapter is being pushed off it โ€” some will keep it for high-stakes races. RosaVote is simply the better default for most, and it's here whenever a chapter is ready. See the full side-by-side โ†—

Estimate the numbers

What would an election cost?

OpaVote's per-voter fee is reasonable for a single vote โ€” but across 200+ chapters it adds up fast. RosaVote runs on cloud DSA already operates, so an election costs a fraction as much. Move the sliders to see the gap โ€” every rate below is editable and sourced.

Your election
Estimated cost
OpaVote
$0
RosaVote
$0
Assumptions & sources โ€” edit any rate

Defaults: OpaVote is free up to 25 voters, then $10 per 125 voters (~$0.08/voter), a flat rate that holds at high volume (opavote.com/pricing). RosaVote figures reflect Google Cloud Run (scales to zero between elections) plus typical bulk email/SMS sending rates; your actual provider rates may differ.

The honest caveat: OpaVote's fee includes hosting and support, and for a one-off vote that convenience is worth something โ€” which is why some chapters may still choose it for a high-stakes race. But at DSA's scale the savings are real and they compound. The trade is that DSA runs the cloud itself, and SMS or postcards cost extra in either tool.

Different tools, different jobs

RosaVote and OpenSlides aren't rivals.

Some of DSA's most important decisions happen live, in a room. That's OpenSlides โ€” and DSA uses it to run national convention and recommends it for live meeting votes. RosaVote handles the other half: asynchronous ballots members cast on their own time. The two barely overlap.

OpenSlides โ€” the live assembly

Runs the room

The floor process itself: agenda, motions and amendments, speakers list, quorum, the projector, and live votes while delegates are present. Open source, and DSA's system for convention.

  • Motions, amendments & the whole floor process
  • Live Yes / No / Abstain and per-candidate votes
  • Real-time results, in the room, in the moment
RosaVote โ€” the async ballot

Runs the election

Votes that happen before anyone's in the room: members ranking candidates on their phones over days, with proportional counts and results the whole membership can verify.

  • Scottish & Meek STV, Score/STAR โ€” ranked, proportional elections
  • Single-use codes to 100,000+ members over days or weeks
  • Member-verifiable, independently recountable results

Ranked-choice STV elections aren't what OpenSlides is built for today โ€” that's RosaVote's lane โ€” and running a live convention floor isn't RosaVote's. DSA uses each for what it does best, and keeps recommending OpenSlides for live meeting votes.

Put it to work

A ballot box your members can open.

Run your next endorsement, officer race, or convention delegate election on a system that's open from the roll to the recount.