Chore Roulette
Spin a fair chore rota: random but balanced by effort, with a “not again” rule.
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 namechore_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
- Tournament Bracket Maker – Single or double elimination or round robin: seeded brackets, byes, results and downloads.
- Movie Night Consensus Picker – Everyone ranks the films, vetoes count: Borda, approval, runoff and Condorcet decide.