Fun & games

Chore Roulette

Spin a fair chore rota: random but balanced by effort, with a “not again” rule.

People (required)
People
#NameCapacity
1
2
3
4
Chores (required)
Chores
#ChoreEffort pointsTimes per week
1
2
3
4
5
6
Last week (optional)

Who did which chore last week, for the “not again” rule.

Last week (optional)
#ChorePerson
1
2
3

Same seed + same inputs = same draw. Leave empty to derive it from the inputs; change it (e.g. to the week number) to re-spin.

Try an example: Flat share of three · Family with a younger child

How it works

Enter the people (with an optional capacity, e.g. 0.5 for a child) and the chores with effort points. Chore Roulette draws a reproducible random assignment that balances everyone’s total effort, can avoid giving anyone the same chore as last week, and shows each person’s load against their fair share.

  • Each chore occurrence is a task with effort points. A person’s fair share is total effort × their capacity ÷ the sum of capacities.
  • The seeded random generator (sfc32 seeded with SHA-256 of the seed) shuffles the tasks and the people; tasks are then handed out largest first to whoever would end up with the lowest load relative to their capacity (ties go to the seeded order).
  • A local search then moves single tasks and swaps pairs whenever that lowers the sum of squared differences between each person’s effort and their fair share, until nothing improves. Moves never give someone a chore they did last week when the rule is on.
  • Fairness = 100 × (1 − Σ|effort − fair share| ÷ (2 × total effort)): the share of the work that sits with the right person. Spread = highest minus lowest effort per full share of capacity.
  • If everyone did a chore last week, a repeat is unavoidable and is reported. Without a seed, the seed is a hash of the inputs, so the same rota appears on the page, in the API and in MCP; change the seed to re-spin.

For scripts and AI agents

  • JSON API: POST https://choreroulette.usefulweb.site/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://choreroulette.usefulweb.site/mcp · tool name chore_roulette
Example request
curl -s -X POST https://choreroulette.usefulweb.site/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{"people":[{"name":"Alex"},{"name":"Bea"},{"name":"Chris"}],"chores":[{"chore":"Bathroom","effort":4},{"chore":"Kitchen","effort":3},{"chore":"Vacuum","effort":3},{"chore":"Bins","effort":1},{"chore":"Groceries","effort":2},{"chore":"Dishes","effort":1,"count":4}],"lastWeek":[{"chore":"Bathroom","person":"Alex"},{"chore":"Kitchen","person":"Bea"}],"avoidRepeats":true,"seed":"week-42"}'

Related tools

Feedback