Inspiration
Every apartment has a group chat. And every month, that group chat descends into uncomfortable friction:
- Chasing people for rent or utility money.
- Venmo requests hanging unresolved for weeks.
- Awkward financial timing: one roommate gets paid on the 1st, another biweekly, and another on the 15th with gig income.
Nobody wants to announce to their roommates in a public group chat: "Hey, I only have \$310 in my checking account and can't pay rent until my paycheck hits on the 15th."
Existing apps like Splitwise only solve retrospective accounting (logging debt after the fact) and require everyone to download yet another app. They don't move money, they don't know when paydays arrive, and they don't prevent overdrafts.
We built House Rules to reduce this friction by grouping finances privately and empathetically, and connecting directly to bank accounts.
What it does
House Rules lives directly inside your roommates' iMessage and Telegram chats, combining anticipatory cash-flow forecasting with autonomous banking execution to ensure roommates stay solvent and bills get paid on time without social embarrassment.
1. Anticipatory Solvency Checks (Before Bills Are Due)
Instead of waiting for rent to bounce, House Rules runs background solvency checks using deterministic financial health indicators (cash runway, days to payday, liquidity buffer).
2. Private Payday Fronting (Zero-Shame Bridge Financing)
When rent is due (\$2,400 total / \$800 each) and a roommate (Jordan) cannot cover their share until payday (Dec 15):
- The Group Chat: Receives a calm, green-light coordination message: > "ποΈ Rent for December is \$2,400 due Dec 1 (\$800 each). Sam sends share to Alex; Alex pays Maple Court Apartments. Jordan's share is covered via fronting plan until Dec 16. Reply 'yes' to approve." (Sam never learns that Jordan was low on funds or that Jordan needed help).
- Jordan's Private DM: Receives reassuring, private assistance: > "Rent is \$800 due on the 1st, but your safe balance is tight until your Dec 15 payday. Alex's account will front your share now, and you will auto-repay Alex \$800 on Dec 16. Reply 'yes' to agree."
- Alex's Private DM (The Fronter): Receives explicit, respectful consent requests: > "Jordan's buffer is tight until his Dec 15 payday. Because you have a healthy cash reserve (\$4,200), the house plan proposes you front Jordan's \$800 share, with an automatic payback scheduled for Dec 16. Reply 'yes' to agree to front."
3. Group Affordability Solver (From "Awkward No" to "Actionable Plan")
When someone asks: "Can we afford a \$1,200 couch?", House Rules doesn't just check if the house has \$1,200 today. It runs can_cover against each roommate's cash buffer.
- When \$400 upfront fails for one member, it tests extended horizons.
- It proposes a 3-month installment plan (\$133.33/mo each) where Alex purchases the couch upfront and roommates auto-reimburse Alex monthly.
4. Autonomous Money Movement (Nessie Banking)
Once all required owners reply yes, the backend Treasurer agent moves real money through Capital One Nessie: P2P transfers, scheduled transfers, merchant purchases, and landlord bill pay.
How we built it
The 6 Core Primitives
- Split (
split_bill): Pure arithmetic applying house rules (e.g., Rent equal; Sam pays 40% of electric for remote work). - Cover (
can_cover): Deterministic evaluation of checking balance, committed pending legs, and payday timing. Returnsok(buffer $\ge$ \$200),tight($\ge$ \$0), orno(< \$0). - Plan (
payday_plan&group_affordability): Mathematical solver that resolves shortfalls via fronting pairing or multi-month installment schedules. - Propose (
create): State machine packaging bank actions into immutableLeggraphs with explicit approver lists. - Approve (
record_reply): High-speed regex/enum parsing ofyes,ok,approve, and π. - Execute (
execute&run_due): Treasurer executes immediate legs via Nessie and queues scheduled legs until demo clock advance.
Least-Privilege Agent Roster
- House Agent: Lives in the group chat. Sees shared bills and house rules. Coordinates group proposals.
- Personal Agents (x3): Live in each roommate's private DM. Has access to that roommate's accounts and indicators. Releases only
ok / tight / noor a date to the house agent. - Treasurer: Backend only, zero chat. The only component with Nessie write access.
- Auditor: Pure code security gate between agents and chat. Blocks any number not generated by a tool and strips any private balances or incomes from group messages.
Challenges we ran into
- The "Alex in the Loop" Consent Paradox: In early prototypes, when the bot noticed Jordan couldn't pay rent, it automatically selected Alex (who had a \$4,200 balance) to front Jordan and announced it in the group chat. We quickly realized this broke our own ethical thesis: Alex felt ambushed in public, and Jordan felt embarrassed. We solved this by implementing the Dual-Rail Notification: the group chat receives a discrete summary, while Jordan and Alex receive tailored private DMs asking for mutual, explicit consent.
- Preventing LLM Financial Hallucination: LLMs cannot be trusted with arithmetic or banking authorization. We instituted a strict policy: the LLM never computes numbers and never authorizes money movement. The state machine and financial math are 100% deterministic code. Outgoing LLM drafts are audited by a deterministic code gate before delivery.
- Cross-Platform Parity: Keeping the Python FastAPI backend, TypeScript Photon gateway, Expo React Native bank app, and Next.js dashboard in sync across frozen contract interfaces. We locked shared Pydantic models and TypeScript types early, allowing parallel development without merge conflicts.
Accomplishments that we're proud of
- Zero Private Balance Leaks: Formally verified by our Auditor test suite; no private financial figure ever escapes to the group.
- Zero-Friction User Experience: Roommates don't need to install an app or log into a portal. Everything happens naturally in iMessage or Telegram through quick text replies and tapbacks.
- Real Banking Feedback Loop: Within 3 seconds of the final "yes" in iMessage, the Expo Bank app reflects the live balance update and scheduled payback.
What we learned
- Public Coordination vs. Private Vulnerability: The secret to collaborative consumer AI isn't more data; it's respecting social dynamics and privacy boundaries between group and 1-on-1 channels.
- Least-Privilege Agent Design: Splitting agents by what they may see and do (rather than by topic) makes AI systems radically safer, more auditable, and easier to debug.
What's next for House Rules
- Receipt Scanning with Grok Vision: Snap a photo of a Costco or Trader Joe's receipt in group chat; Grok itemizes line items and lets roommates claim what they shared.
- Predictive Lease Renewal: Analyze whether the household can afford a 10% rent hike before signing a lease extension.
- Voice Approvals on Photon: Voice check-ins for missing rent approvals via Photon SIP integration.
Built With
- capital-one-nessie
- cursor
- fastapi
- full
- grok
- photon
- python
- react-native
- typescript
