A mobile app that helps roommates split and track shared utility bills fairly
Product Requirements Document (PRD)
Product Name: FairShare (Shared Utility & Balance Tracker)
1. Overview & Vision
FairShare is a mobile application that simplifies shared household finances by providing roommates with an intuitive, transparent ledger to track and split utility bills. The app focuses strictly on clarity and manual ease-of-use—allowing users to log bills, split them equally, and track who owes what without forcing financial transactions through the app.
2. Problem Statement
Living with roommates often leads to miscommunication, forgotten bills, and awkward discussions about shared expenses like electricity, water, and internet. Existing tools can be overly complex or require invasive bank integrations. Roommates need a lightweight, simple solution to keep an honest, agreed-upon record of utility balances.
3. Goals & Non-Goals
Goals
- Enable roommates to easily create a shared household and invite members.
- Provide a fast manual bill entry workflow for utilities.
- Automatically compute equal splits across active household members.
- Maintain a real-time, transparent balance ledger showing net debts and credits.
- Allow users to record manual "settle up" payments made externally.
Non-Goals
- Financial Transactions: The app will not process real money transfers (no Venmo, Stripe, or direct bank integration).
- Automated Bill Imports: No OCR bill scanning or direct utility provider integrations; input is 100% manual.
- Custom Split Rules: No custom percentage or income-proportional splits; all bills are split equally among active members.
4. Target User Personas
- The Organizing Roommate: The person who usually holds the utility account in their name and needs to request reimbursement.
- The Co-tenant: Wants visibility into what utilities were paid, their exact share, and total outstanding debt.
5. Functional Requirements
5.1 Household Management
- Create/Join Household: A user can create a new household or join an existing one using a unique join code or link.
- Member Management: Display active members of the household.
5.2 Manual Bill Logging
- Bill Fields:
- Bill Name / Category (e.g., Electricity, Internet, Water, Gas).
- Total Amount ($).
- Paid By (Select roommate who paid upfront).
- Date Paid / Due Date.
- Notes/Description (Optional).
- Validation: Prevent submission without required fields (amount, title, payer).
5.3 Equal Split Engine & Balance Ledger
- Automatic Split: Upon logging a bill, the total amount is split equally ($ Total ÷ Number of Active Members$).
- Individual Balances:
- Payer is credited with $(Total - Individual Share)$.
- Non-paying members are debited with $Individual Share$.
- Household Ledger Dashboard:
- Displays a clear summary: Who owes whom how much (net balance minimization).
- Shows a chronologically ordered feed of recent bills and settlements.
5.4 Settlement Tracking ("Settle Up")
- Manual Record Payment: Any user can log a settlement (e.g., "Alice paid Bob $45.00 via Cash/External App").
- Balance Adjustment: Reduces the net debt between the two parties accordingly.
6. User Flow
[ Open App ]
│
├──> [ Create / Join Household ]
│
└──> [ Dashboard ]
├──> View Net Balances ("You owe $30", "Alex owes you $15")
├──> [ Action: + Add Utility Bill ]
│ ├── Fill Details (Title, Amount, Paid By)
│ └── Submit ──> Ledger updates automatically (Equal Split)
│
└──> [ Action: Settle Up ]
├── Select Member & Amount Paid Externally
└── Submit ──> Net Balance set to $0 / adjusted
7. Key Success Metrics (KPIs)
- Monthly Active Households (MAH): Households with at least 1 bill logged per month.
- Log-to-Settle Ratio: Percentage of logged bills that result in a recorded settlement within 30 days.
- User Retention: 30-day and 90-day retention rates of onboarded household members.
- Run ID
- 08c2194c-9d82-4a35-8b00-f821cd8b3679
- Started
- 2026-08-21T02:21:36.992Z
- Ended
- 2026-08-21T02:24:04.864Z
- Total cost
- $0.0805
This run wasn't scored for quality. Only runs from the golden-set harness (npm run eval) are judged — see ARCHITECTURE.md §9.