-
Each roommate privately marks only the belongings they want to keep.
-
Set up the household and the shared items before anyone votes.
-
The result maps who received each item and highlights any remaining contested connection.
-
FairShare re-checks EFX in plain language and surfaces a conversation prompt for the one item still contested.
-
Optional reference prices are agreed together before voting, never after the result is known.
Inspiration
Move-out day turns shared belongings into a surprisingly hard social problem: who gets the espresso machine, the desk, or the laptop? The argument is rarely only about the object. It is about whether everyone can trust the process.
FairShare began with one question: can a household divide indivisible things without turning the result into “who argued loudest”?
# What it does
FairShare lets each person privately mark each item as “want” or “don’t want”. It produces a deterministic allocation, then independently checks the result against the EFX fairness condition: if someone still prefers another person's share, removing one relevant item from that share removes the envy.
Instead of showing an unexplained score, the app translates the check into plain language: “If you swapped shares, would you actually be better off?”
For contested items, households can optionally agree on reference prices before voting. FairShare never proposes a payment or chooses a winner; it uses those prices only to start an honest conversation around the remaining conflict.
# How we built it
We built FairShare as a mobile-responsive web app with React, TypeScript, Vite, Tailwind CSS, and shadcn/ui.
The allocation engine uses a deterministic leximin-style routine with augmenting paths for binary preferences. A separate verifier recomputes utilities, envy, and the EFX result directly from the ballots and allocation. This separation matters: the app does not ask users to trust the allocator's own claim that it was fair.
We also added:
- A visual allocation graph showing who got what and what was contested
- A human-readable fairness matrix
- English and Vietnamese interfaces
- Light and dark themes
- Privacy by design: ballots remain in memory and are not saved to localStorage
- Automated engine tests and Playwright end-to-end tests, including a privacy check
Our research was informed by Fair and Truthful Mechanisms for Dichotomous Valuations. FairShare does not claim to implement that paper's exact truthful mechanism; it verifies EFX on the allocation it actually produces.
# Challenges we ran into
The hardest challenge was not computing an allocation. It was explaining fairness without making people read a mechanism-design paper.
We had to avoid two tempting but misleading shortcuts: claiming that binary votes capture how strongly someone feels, and treating cash as a mathematical solution to emotional conflict. FairShare is explicit about both limits. Binary votes trade intensity for a simple, checkable process, while prices are only conversation prompts—not payment recommendations or post-cash guarantees.
# What we learned
We learned that a mathematically correct result is not automatically a trusted result. People need to understand why the outcome happened, what the guarantee does and does not mean, and where the math should stop so a real conversation can begin.
FairShare's goal is not to decide who deserves the laptop. It is to make sure the laptop is the only thing left to discuss.
Log in or sign up for Devpost to join the conversation.