The Chad IRC Agent

General Description

Chad is a helpful agent for conducting a preference poll over an IRC session. It has been developed for potential use during W3C meetings, in particular for preference polls conducted during telcons. Votes are counted using the Single Transferable Vote system. Ties are broken randomly which is unlikely to be satisfactory for many cases, but may be useful in making important decisions such as which restaurant to book for the group meal.

Inviting Chad

To use Chad, you must first invite it to your IRC session. When you're finished, you should dismiss Chad from the channel.

/invite vote [<channel>]
Brings Chad on to your IRC channel. Most irc clients let you omit the channel name and will fill in the name of current channel. This is a feature of the irc client, not of Chad.

Talking to Chad

Chad also recognizes several commands during its logging session. All commands begin with either "chad, " or "vote: ".

In the command descriptions below, optional words in commands are indicated in square brackets. Chad's commands are not case sensitive, but, in general, must be grammatically correct. "Please" can be abbreviated to "pls" if you wish to be polite yet still save keystrokes.

Starting a New Poll

chad, new [straw] [poll]
chad, new [vote]
Clears question, options, votes and other data in preparation for a new poll.


chad, question: <text>
Sets the question text.
chad, what is the question[?]
chad, what's the question[?]
chad, question[?]
Retrieves the current question text.


An option id begins with a digit, e.g. "1", "3b", "5a1":

chad, option <id>: <text>
Adds or replaces the option text.
chad, withdraw option <id>
chad, delete option <id>
chad, remove option <id>
chad, drop option <id>
Removes the current option from the poll. Votes placed for this option will be ignored during the count.
chad, list [the] options
chad, what [are] [the] options[?]
chad, options[?]
Lists the current options.
chad, what is option <id>[?]
chad, what's option <id>[?]
Lists the identified option.

Casting a Vote

vote: <id>[[,] <id> ...]+
Casts a series of votes, the order of the list of options indicates the order of preference. You do not have to vote for all of the options.
vote: <name> :<id>[[,] <id> ...]+
Casts a series of votes for a name, possibly not someone not on IRC.
vote: abstain[s]
Abstain from the poll.
vote: <name> abstain[s]
Abstain on behalf of a name.
chad, list [the] voters
chad, who has voted[?]
chad, who voted[?]
chad, voted[?]
Lists the names of people who have voted.


chad, drop <voter>
drop the named voter's votes from the poll.
chad, [list] [who has] voted
chad, voted?
Lists the names of people who have voted.
chad, clear [votes]
Clears all votes taken in preparation for another poll using the same question and options.


chad, count
Counts the votes and reports on the winner.
chad, [show] [count] details
chad, details[?]
chad, detail[?]
Shows detailed informatin of how the votes were counted


chad, help
chad, hi
chad, say hi
chad, help me
chad, introduce yourself
Displays some brief help and version information


chad, ping
Returns a reflex pong message, useful when testing an IRC connection

Dismissing Chad

chad, excuse us
chad, leave [us]
chad, depart
chad, part
chad, goodbye
chad, bye
Disconnect Chad from your IRC channel.

Shutting Down Chad

chad, die die die
Causes the Chad process to disconnect from the IRC server and exit. This will remove Chad from all channels and make it no longer able to answer invitations.

Example Session

pauld chad, restart
chad  *new poll
pauld chad, question: which cuisine for tonight's meal?
chad  *question: which cuisine for tonight's meal?
pauld chad, Option 1a: Indian
chad  *option 1a : Indian
pauld chad, Option 1b: French
chad  option 1b : French
pauld vote: 1a,1b
chad  *paul votes: 1a, 1b
pauld vote: Roberto: 1b,1a
chad  *Roberto votes: 1b, 1a
Marsh vote: 1a
chad  *Marsh votes: 1a
Hugo vote: 1b
chad  *Hugo votes: 1b
pauld chad, count
chad  *Round 1: Count of first place rankings.
chad  *Round 2: Tie when choosing candidate to eliminate.
chad  *  Tie at round 1 between 1a, 1b.
chad  *  Tie broken randomly.
chad  *  Eliminating candidate 1b.
chad  *  Candidate 1a is elected.
chad  Winner is option 1a - Indian

Source Code

Chad is released as Open Source under GPL and available as source.


Chad is written in Python. Chad uses the following Open Source packages which are bundled with the release:

Known Issues

Valid HTML 4.0! Paul Downey
$Date: 2007/05/08 20:42:36 $