Transferable Ballot Method of Proportional Representation Tabulator
This program is not "bulletproof"; if you try, you can probably break it -- please don't! When loading files no error messages are provided. Do not enter .csv (or any other) filename extensions. The Number of Offices, Candidates, Voters, and Ballot Number come from the first file listed -- so you must put an entry there!
First print up ballots. Download the Blank-Ballots form to Excel and click on the appropriate tab at the bottom. Change the date in row 1. Overwrite the Candidate Names in the same format. If more slots are needed, insert rows in the middle and then copy an existing row to the new ones (don't type, use copy (Cntrl-C) and paste (Cntrl-V). The Candidate Codes will populate automatically. Block the candidate rows (initially 9-21 for the Board sheet); sort. If any of the Candidate Codes are identical (easy to spot since they are sorted), overwrite with unique codes. If any of the Candidate Names are only one- or two-characters, delete the comma in the Candidate Code (you will have to delete and re-type). Delete the rank numbers (shown on rows 25 and 28 on the Board sheet) greater than the number of total candidates to prevent confusion. Print and distribute to Central Committee members.
Begin by entering above the number of Offices, Candidates, and Voters; the initial Ballot Number should usually be 1. The number of Candidates should be one more than actual people running. Then click Start Fresh.
Enter the 3-character Candidate Code from the ballots to identify each candidate; always include NOT for None of the above. Usually the first three characters of the last name suffices; for multiple Smiths, for instance, use SM1, SM2, ...
If more than one person/station is going to do the data entry: after entering the above information, and before entering the voter information, click Save as: after providing a filename, i.e. EB-0. Distribute the paper ballots amongst the data entry stations. Have each such person first begin with their own browser, specify EB-0 in the first file box, and click Load files:. Then proceed with entering the ballot information.
The voter name entries are not required, but useful for cross-checking ballots. To use files, however, a non-blank name must be provided. Each voter list shows the candidates preferred, in order. Duplication is pointless. All voting fields are not necessary, but there should be at least one entry on each ballot or it increases the threshold without a corresponding vote. After the ballots are entered (don't Tabulate), enter filename EB-1, EB-2, EB-3, etc. at each station and click Save as: (don't specify EB-0 or anyone else's files!). The user may re-load the same file to check against the paper ballots for verification; actually this should be done, and click Tabulate. Closely inspect every line displayed for each voter -- if you see "=Invalid", make a note for each; then click Go back and make changes (or just go back and reload the file). Fix the error(s) and repeat until clean.
After all users have finished entering their ballots and saved with unique filenames, at the station with a printer enter all of those filenames and click Load files:. Inspect and if it looks good, Save as: EB-ALL for instance to provide a single file with all ballot entries in case it's needed later (which will permit re-running tabulation from scratch).
Proceed with Tabulate. After each ballot, use the browser to print to PDF with different filenames (and also print to an actual paper printer). Follow the instructions provided after tabulation. Sometimes the election is completed; sometimes a candidate must be voluntarily removed and if not, the lowest-votes candidate must be forcibly dropped. In such cases, do that and Continue with Next Ballot as necessary, printing to PDF and paper at each iteration. It may turn out that the exact number of candidates as remaining offices exist, but they have not met the required threshold; decide what to do in such instances.
For help, contact