HotConf Home


Some conferences have PC members vote for papers. In allotment voting, each PC member is assigned a vote allotment to distribute among unconflicted papers; a PC member might assign one vote to one submission and five to another. In approval voting, each PC member can vote for as many papers as they like. The PC’s aggregated vote totals might help determine which papers to discuss.

HotCRP supports voting through tags. The chair can define a set of voting tags and allotments. Votes are represented as twiddle tags, and the vote total is automatically computed and shown in the public tag.

For example, an administrator might define an allotment voting tag “#allotment” with an allotment of 10 votes. To assign two votes to a submission, a PC member can either enter that vote into a text box on the submission page, or directly tag that submission with “#~allotment#2”. As other PC members add their votes with their own “#~vote” tags, the system updates the main “#vote” tag to reflect the total. (An error is reported when PC members exceed their allotment.)

To see papers’ vote counts in a list, search for show:#allotment. To list the papers with votes, sorted by vote count (most votes first), search for rorder:#allotment or rorder:#allotment show:#allotment.

Hover to learn how the PC voted:

[Hovering over a voting tag]

New voting procedures

Voting is implemented using the automatic tag facility and formulas, and you can use automatic tags to define your own voting procedures. For example:

sum.pc(#_~vote) || null

This formula implements allotment voting by computing the total number of “#~vote” votes per submission. “sum.pc” loops over all PC members. Inside the summand, the special syntax “#_~vote”, which can be used only in formulas, expands to the “#~vote” twiddle tag belonging to the indexed PC member. Finally, “|| null” translates the value 0 into null; this removes the tag entirely from submissions with zero votes, rather than assigning a 0-valued tag.

count.pc(#_~vote) || null

This implements approval voting by counting PC members with votes. This, unlike the sum formula, ignores vote count.

count.pc(#_~cata + #_~catb + #_~catc ≥ 2) || null

This implements a category-based voting procedure. Every submission is evaluated along three dimenions, “cata”, “catb”, and “catc”, and the metric computed is the number of PC members who voted for the submission in two or more dimensions.