Inspiration
In shared NYC apartments, rent is messy. One roommate fronts the whole payment and chases everyone else, utility splits are confusing, reminders come too late, and scams like "your landlord changed bank accounts, send rent here" are real. We wanted every tenant to have a personal rent agent they could trust with money. But nobody trusts an AI with rent unless the rules are enforced somewhere the AI can't override.
What it does
aartee. gives every tenant their own AI rent agent, RT, that lives in iMessage.
- Reminders by text: RT texts each tenant on the due date, during the grace period, and when a late fee starts.
- Ask it anything: tenants text "How much do I owe?" and get a plain-English breakdown ($1,450 rent + $38 ConEd).
- Fair roommate splits: Gemini reads the building's ConEd bill and splits it by unit, so each roommate pays only their share.
- Late fees done right: no fee during the 5-day grace period, then $5/day capped at $50, and only the late roommate pays it.
- Pay-later requests: tenants can agree on a later payment date with their agent.
- Scam protection: a fake "landlord changed banks" message is flagged and ignored, because it doesn't come from the landlord's verified agent.
- Rent wallet on the XRP Ledger: each tenant has an RLUSD rent wallet with autopay, a spending cap, and 2-of-3 keys, so no single key can move the money alone.
- Rental reference: on-time payments build a record ("11 months on time") tenants can show future landlords.
How we built it
- iMessage agent: Photon Spectrum (TypeScript, Bun). Each tenant has their own iMessage number. The bot delivers reminders from an outbox, acknowledges each one so nothing is sent twice (even across restarts and network drops), and relays tenant questions to their agent.
- Agent backend: Next.js API routes on Vercel, Gemini for bill reading and replies, MongoDB Atlas for tenants, bills, and reminders.
- Money layer: XRPL Testnet with RLUSD, multi-signature rent wallets, and a Guardian service that checks every payment against the rules before it can go through.
- Dashboard: a Next.js web app at aartee.tech showing each tenant's dues, wallet, rules, and unit chat.
Challenges we ran into
- iMessage limits how many messages a bot can send someone who hasn't replied, so we built the reminder flow to deliver each message exactly once and never spam tenants.
- Keeping four people's work in sync across the bot, backend, money layer, and frontend. We used shared API contracts and an automated merge gate (build, smoke tests, and AI code review) on every pull request.
- Flaky venue Wi-Fi: the bot had to reconnect and retry on its own without losing or duplicating messages.
Accomplishments that we're proud of
- A real end-to-end flow: the agent decides, the bot texts a real phone, the tenant replies, and the agent answers.
- Guardrails that live on the ledger and in the Guardian, not in the AI.
What we learned
Trust in AI finance comes from constraints the AI can't override, not from the AI being smart.
What's next for aartee.
Real bank off-ramps for landlords, more buildings and tenants, and on-chain credentials for every landlord agent.
Note: aartee. runs on the XRPL Testnet with test RLUSD. Bills and payees are demo stand-ins; no real money moves.
Built With
- bun
- gemini
- imessage
- mongodb-atlas
- next.js
- photon-spectrum
- react
- rlusd
- tailwind
- typescript
- vercel
- xrpl
- xrpl.js
Log in or sign up for Devpost to join the conversation.