A system for coordinating groups

Having flatmates again means that there are now a whole bunch of things that are a shared responsibility that were previously all down to me. This has caused me to think about the problem of how you coordinate such things.

At the moment we’re adopting a really boring approach: We’re talking about things and doing what seems to make sense.

Obviously this sort of natural human interaction is not to be tolerated and must be replaced with PRECISE ALGORITHMIC RITUALS and EFFICIENT MARKET BASED SOLUTIONS.

Err. Um. Yes.

That is to say, an interesting approach to occurred to me a while ago and I concluded it was an obviously bad idea. But it keeps coming back to mind and I keep solving the problems that make it an obviously bad idea to the point where now it’s only a probably bad idea, and it might be an interesting one.

I haven’t tried it, and for the problem of flatmate decision making I’m not sure I’m that interested in trying it. At only 3 people (and two cats, but the cats don’t really pull their weight, the tiny furry slackers) talking about things mostly works as a solution. For larger groups this might be a more compelling approach.

The basic setup is this: You have a number of people, and a number of things they need to share. For example, for flatmates it might be “doing the cooking”, “cleaning the kitchen”, “cleaning the bathroom”, etc. You want to divvy these up in a way that is not only fair but also matches individual preferences: For example, someone might be strongly averse to cleaning the bathroom but perfectly happy to do a disproportionate share of the kitchen cleaning to make up for it, and everyone might much prefer to cook than to clean. On the other fairness dictates people do about an equal amount of “the work”, whatever that abstraction might be (time is not necessarily a good measure. Cleaning the bathroom might be a short task that some people would trade much more time on other tasks to do).

So how do you accommodate these constraints?

The system works as follows: You have a number of currencies. These should correspond relatively closely to the tasks you want to share. For example they could be “cooking a meal”, “cleaning the bathroom”, “minutes spent cleaning the kitchen” (because the latter is a more unbounded task, depending on the amount of mess made by cooking, while the former are more defined tasks). They don’t have to be quite so closely tied to the tasks – you could e.g. define a bundle currency which is just “total amount of time spent cleaning” but it’s probably better if they are. You do however need to ensure that every action only corresponds to one currency.

Everyone has a balance in each of these currencies, starting at zero.

Balance is accrued at an agreed upon rate by performing actions. You cook a meal, you get one “cook a meal” credit, you spend half an hour cleaning the kitchen you get 30 “clean the kitchen” credits, etc. When this happens, everyone else who is a beneficiary of that action (this is agreed upon per action type. e.g. cooking a meal the beneficiaries are just those who eat it, cleaning the kitchen the beneficiaries are the people who made the mess in it, cleaning the bathroom the beneficiaries are everyone) acquires an equal share of debt totalling that credit. So e.g. if I cook a meal for myself and one other person, I acquire 1 meal-unit of balance and they lose 1 meal-unit of balance. If I cook a meal for myself and two other people they each lose half a meal unit of balance.

Note that:

  1. All currency units are infinitely divisible even though it might not be possible to perform fractional actions to get them (so you can have fractional balances in cooking meals even though you can’t cook a fraction of a meal).
  2. Every operation is zero sum and always leaves the total balance at zero.

When it comes time to perform an action, the person available to perform it who has the lowest balance in the relevant currency always performs it. If there are multiple people with the lowest balance, then they draw straws or some other random way of deciding.

Once you’ve decided who should perform the action, they may choose instead decide to conduct an auction. This consists of saying “I need X units of this currency and am willing to exchange it for this other currency”.  For example I could say “I need two units of bathroom cleaning and am willing to exchange it for cooking credits”.


  1. They need to ask for enough of the relevant currency so that they would no longer have the lowest balance (but can ask for any amount more than that if they choose).
  2. They cannot exchange it for any currency they are currently in negative balance for.
  3. There must be at least one person who has that amount of balance available (otherwise there isn’t anyone who can bid in the resulting auction)

Once they have made this offer, a sealed second price auction occurs amongst all the people who have enough balance in the asked for currency. Additionally, the auctioneer also puts up a bid which effectively acts as a reserve price. This reserve may not be greater than their balance in the offered currency (so if I’ve a balance of 5 extra meals cooked, my reserve can’t be greater than 5, but it may be less). People may choose not to bid, but they should keep this secret as well (it’s effectively the same as bidding more than the upper bound on the reserve price).

The winner of the auction is the person who bid the lowest (because this auction is backwards from normal second price auctions. They are giving the thing being auctioned, not receiving it). If that’s the auctioneer with their reserve, oh well they have to perform the action after all. If not, they give the auctioneer the asked for amount of balance (i.e. it is subtracted from their balance and added to the auctioneer’s balance) and then they receive amount of the offered currency equal to the second lowest bid (this may of course be the auctioneer’s reserve). In the event of a tie, the winner is a randomly selected person with the lowest bid who is not the auctioneer, and the second lowest bid is the same as that tied lowest bid.

Now you repeat the process. If the person with the new lowest balance is willing to perform the action, they do so. If not, they may offer another auction. This continues until someone is either willing to do it (or doesn’t have anything in credit they can auction off in exchange) or an auction fails to meet its reserve.

I haven’t done any proofs of fairness here, and to be honest it’s probably not all that fair, but it should have the property of allowing people to exchange chores at a mostly reasonable rate. It almost certainly will be vulnerable to arbitrage and other financial shenanigans in practice, but the fact that you can’t really use money to make more money and acquire debt from other people contributing to the system should limit the worst of the excesses of market based systems.

(I may do a simulation of this at some point to see what happens. I got about half way through writing one and then couldn’t be bothered to continue, but that might change).

This entry was posted in Uncategorized on by .