Admin ConsoleRosaVote
Sign In

Scoped admin token

Enter your admin token. National tokens see every poll; chapter tokens see only their own. All actions are recorded in the audit log under your token's name.


Just exploring?

Use the public demo token DEMO-ADMIN-TOKEN-2026 — it opens the console as a national root admin so you can explore the full experience: build elections, import a (synthetic) roll, watch turnout, adjudicate provisionals, void & reissue, set vote weights, run the count workbench, and view results across every poll. This is a demo sandbox with synthetic data only — changes here don't touch any real election. (The sandbox's voting test code is TEST-SANDBOX-2026-DEMO.)

Signed In

Polls

Loading…

Voters

Turnout status per voter: whether their code was used and whether a ballot record was received and stored for it — never how anyone voted. The integrity check counts used codes with no stored ballot (should always be 0).


Ballot lookup — troubleshooting (root only, audited)

Find a specific ballot by member ID or receipt. Shows the voter's identity-linked answers (admin-visible by policy) and whether their secret-ballot record exists — never the secret ranking. Voters can also self-check at /p/<poll>/verify?receipt=XXXX (public, status only).


Import voter roll (national admins)

Required header: member_id. Optional: chapter, weight (integer 1–1000 ballot weight, default 1). Every other column is ignored, so a full membership export works as-is. One code is minted per new member; already-imported members are skipped. Codes are stored hashed — the plaintext manifest exists exactly once, wherever you receive it.

Election Builder
The election builder is for national admins. You're signed in as a chapter admin, so you can run your chapter's existing polls (Voters, Results, Provisionals, Void) but not create or edit election configs. Ask a national admin to build the election, or sign in with a national token.

National admins only

Art. V §5 applies only to National Convention delegate elections — mark a ranked question as a delegate election to enforce it. Ordinary referendums and chapter officer elections have no window restrictions.

No questions yet — add one below or use a template.

Templates:

Question

Advanced — raw JSON (questions, quota groups)
Results

Results unlock when a poll is finalized (automatic ~15 minutes after close). Ranked contests are counted here by the shipped Scottish STV tabulator — delegate contests include the alternates recount. Free-text answers are counted, never displayed. National sees every poll; chapter tokens see their own.


Ballots — export & independent verification

Download each contest as a standard .blt file (ballot weights included) and reproduce the result in software we don't control:

Pick a poll above, then

How to independently verify results

1 · Get the ballot files. Download the .blt for each contest above. The format is the OpaVote/OpenSTV standard: first line = candidates seats; each ballot line = weight rank1 rank2 … 0 (1 0 is an abstention); then a 0 terminator, quoted candidate names, and the title.

2 · Recount in independent software. Any of: upload to OpaVote (choose Scottish STV); run OpenSTV/Droop; or run the tabulator that ships with this codebase: python3 tools/stv_tabulate.py contest.blt — it prints the same round-by-round table the Results tab charts. Yes/No contests are 1-seat files where the counts are directly visible.

3 · Delegate alternates (expanded count). Download the same contest with "recount" — identical ballots, seats set to delegates+alternates. Winners of the recount who aren't already delegates are the alternates, in order of election.

4 · Check the record itself. After certification the close-out export publishes a tamper-evident hash chain over every ballot (tools/build_chain.py, verified by tools/verify.py); voters can confirm their own receipt at /p/<poll>/verify?receipt=… and against the aggregate used-code counts on the Voters tab.

Weighted polls: weights ride in the .blt weight column, so independent tabulators reproduce weighted results with no extra steps. Current weights are visible per voter on the Voters tab; every weight change is in the audit log.

Count Workbench

Load any .blt file (e.g. one exported from the Results tab, or from another system), run a Scottish STV count, and see the same round-by-round chart. The ballot text is editable — tweak ballots, weights, or the seat count in the header and rerun to explore how the outcome responds. Nothing here touches stored election data.

Advanced — quota constraints (leadership elections)

The BLT ballot file format

RosaVote reads and writes the standard BLT format (also used by OpaVote and OpenSTV), so ballots move freely between systems:

  • Line 1: two numbers — how many candidates, how many seats.
  • Optional line 2: negative numbers mark withdrawn candidates (-2 = candidate 2 dropped out; their rankings are skipped). This is how dropout recounts work.
  • Ballot lines: first number is the ballot weight (1 unless the voter has a weighted vote, or ballots are packed so identical ballots share a line), then candidate numbers in ranked order, ending with 0. 1 0 is an empty/abstain ballot. A - is a skipped ranking; 3=2 is an overvote (two candidates at one rank) — counting rules skip past both.
  • A lone 0 ends the ballots.
  • Then each candidate's name in straight double quotes (one per line, in candidate-number order), and finally the contest title in quotes.
  • Blank lines, extra spaces, and # comments are ignored.
4 2          # 4 candidates, 2 seats
-2           # candidate 2 withdrew
1 4 1 3 0    # Amy 1st, Diane 2nd, Chuck 3rd
6 4 3 0      # Amy 1st, Chuck 2nd — weight 6
1 0          # empty ballot
0            # end of ballots
"Diane"
"Bob"
"Chuck"
"Amy"
"Demo Election"
Provisional Adjudication

Sealed provisionals: identity fields only — the ballot answers stay sealed. Verify needs the matched member ID; it burns the member's unused codes and promotes the sealed ballot. Reject records a note. If the member already voted by code, verification is refused.

Void & Reissue

Flags the ballot voided (kept forever, excluded from tallies) and issues the member a fresh code — shown once, deliver it securely. Open-window only; every action is audited.