Renter Deposit Documentation App
Build a renter move-in/move-out documentation app that captures time-stamped photos, generates condition reports, and drafts state-specific deposit dispute letters.
A tenant hands back the keys, mentally spending the $1,800 deposit they are about to get back. Six weeks later a statement arrives instead: $600 withheld for "carpet damage," $400 for "wall scuffs," $300 for a "deep clean." The tenant knows the carpet was already stained on move-in day and the scuffs were there when they signed. But knowing is not proving. They have a handful of blurry phone photos with no dates, a lease they skimmed, and a landlord who holds the money and the leverage. Most people give up right there, because fighting a $1,300 deduction means small-claims court, a demand letter they do not know how to write, and evidence they never collected. The gap between "this is unfair" and "here is time-stamped proof" is where deposits quietly disappear.
Built for Non-Technical, Solo Founders.
Suggested stack: React Native + Expo (EAS), Convex or Supabase (Postgres + Storage), Cloudflare R2 or S3 with object lock, OpenAI GPT-4o vision (with Claude fallback), react-pdf or a headless-Chrome renderer, Stripe Billing. Weekend scope: about 10 hours.
The Problem
A tenant hands back the keys, mentally spending the $1,800 deposit they are about to get back. Six weeks later a statement arrives instead: $600 withheld for "carpet damage," $400…
The Solution
A mobile-first app whose core loop is: photograph a room, get a time-stamped, organized condition record, and later turn that record into a formatted report plus a ready-to-send…
Market Research
The AI Home Inspection Software market was valued at USD 1,300 million in 2024 and USD 1,470 million in 2025, projected to reach USD 5 billion by 2035 at a 13.1% CAGR (Market…
Competitive Landscape
LegalZoom and Rocket Lawyer — Generic legal-document platforms. Rocket Lawyer runs about $39.99/month for membership (or roughly $49.99 per document without one), and LegalZoom…
Business Model
Free ($0) — Unlimited timestamped photos, guided room-by-room move-in and move-out checklists, cloud backup. The lead-gen wedge.
Recommended Tech Stack
React Native + Expo (EAS) — One codebase for iOS and Android with first-class camera access, background upload, and over-the-air updates. The capture flow is the product, so it…
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "RentGuard": a renter photographs each room at move-in, confirms a plain description of its condition, and later turns the record into a report and a deposit dispute letter. Photos are time-stamped by the server. It is documentation, not legal advice. Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Storage, Auth with email magic link), the Anthropic API (vision) to draft a description for the renter to confirm. It installs to the home screen as a PWA and uses the phone camera. One state's letter template this weekend. Deploy on Vercel. Tables (Row Level Security on, a renter reads only their own rows): - properties(id, user_id, address, state, lease_start, lease_end) - rooms(id, property_id, name, stage) stage is movein or moveout - photos(id, room_id, storage_key, sha256, captured_at, lat, lng, confirmed_description, flagged_items jsonb) captured_at is set by the server; a trigger blocks any update or delete of storage_key, sha256 and captured_at - reports(id, property_id, stage, created_at) - letters(id, property_id, amount_withheld_cents, deadline_date, body, created_at) Screens: /login, /properties, /capture/[roomId] (the guided checklist), /report/[propertyId] (printable), /letter/[propertyId]. Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), ANTHROPIC_API_KEY. Do not build: billing, plans or a dispute pack, a native app, object-lock storage, more than one state, attorney referrals, a model that writes the letter. Done when: npm run dev starts, you can sign in, and the five tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves RentGuard: a photo record that is hard to dispute, because the server stamped it and the renter confirmed it. 1. A guided checklist walks the renter room by room for move-in or move-out. For each room they take photos with the phone camera. 2. On upload, the server computes the SHA-256 of the file, sets captured_at from its own clock and saves them. Never trust the device clock. Keep optional location and the file's own date as extra fields. 3. Send each photo to the Anthropic API with this instruction: describe the visible condition objectively, list existing damage, wear or stains with their location, and do not guess at cause or fault. Use a strict JSON schema { condition_summary, flagged_items: [{ item, location, severity }] }. 4. Show the draft and require the renter to confirm or edit every line before it is saved. The saved description is the renter's. 5. At move-out, match each room to its move-in counterpart and show a before and after view with both server timestamps. 6. /report/[propertyId] is a printable page: each room, its photos, the confirmed descriptions, the SHA-256 and the server time, and the line "This is documentation, not legal advice, and does not create an attorney-client relationship." 7. The letter page takes the amount withheld, the deductions listed and the deadline for the state, and fills one letter template that lists the disputed items with their photo references and asks for an itemized statement and return of the deposit. Write the template from the state's official tenant guide, link that source on the page and have a lawyer review it before launch. Rules: say "tamper-evident, not tamper-proof". Never claim a court will accept the record. Deleting a property removes its photos. Empty state: with no properties, show the add form with the state picker. Done when: an uploaded photo shows a server time and a hash, an attempted update of the hash fails, no description is saved without confirmation, move-out matches move-in by room, and the letter lists the disputed items with their photos.3. Landing Page
Build a one-page landing site for RentGuard, move-in and move-out documentation for renters. Hero: "Get your full deposit back, with proof." Sub: "Photograph each room at move-in. We time-stamp every photo and turn them into a condition report, and a letter if money is withheld." One button: Join the waitlist. Sections: a phone showing the room checklist, the problem (renters lose deposits because they cannot show the move-in condition), how it works in four steps (capture, confirm, compare, dispute), and an FAQ on how timestamps and hashes work, which state is covered first, and a clear statement that RentGuard provides documentation and templates, not legal advice or representation. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, a calm off-white background, one mint accent, generous whitespace. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for RentGuard: a wordmark and an icon that suggest a door key with a small camera shutter in its bow. Colors: off-white, deep ink and one mint. Type: Geist, with tabular numbers for dates. Deliverables: wordmark, icon, a photo stamp (date, time, hash) that stays readable at small size, two stage labels (move-in, move-out) that differ by shape as well as color, and one launch graphic. Done when: each deliverable is saved in one folder and the stage labels are distinguishable without color.