Check out our demo: https://www.youtube.com/watch?v=nSGzNeinPCA Codes: https://github.com/WilliamK112/Madhacks2025---TrustRent Presentation slides: https://docs.google.com/presentation/d/1coIGBHnXb2unah7VrG8qhpR485gF1uVMKJJ1MasxG4s/edit?usp=sharing
Inspiration
TrustRent grew out of a story we kept hearing from friends and classmates: “The place already had that scratch / stain / broken thing when I moved in, but the landlord still kept my deposit.” Move-in and move-out are stressful for both sides. Renters feel powerless and worry about losing money they can’t afford, while property managers feel buried in ad-hoc photos, emails, and disputes that are hard to resolve fairly.
We wanted to build something both renters and property managers could actually trust — a shared, structured record of what the lease says and what the unit looked like at move-in and over time, instead of relying on memory and arguments.
What it does
TrustRent turns move-in tokens, checklists, photos, and leases into organized, AI-assisted evidence.
On the company / admin side, property managers: Register a company and create apartment buildings and units Generate renter invitations (each with a unique 6-digit access token tied to a specific unit) See an admin dashboard with active invitations, past invitations, active renters, and submitted inspection PDFs Open a unit and quickly see which renters have registered and whether an inspection PDF has been submitted
On the renter side, the experience is mobile-first and straightforward: The renter receives an email with a 6-digit token and a link to the TrustRent /access page They enter the token, are validated against the correct unit, and create a renter account (with email matching the invite)
Inside the app they have two main flows: Checklist & Photos – upload a photo of a paper move-in checklist, get structured items from AI, rename items, add notes, and attach move-in / move-out photos or short videos for each area Lease Advisor – upload a lease PDF or paste text, add the property location (e.g. “Madison, WI”), and get a structured explanation of key clauses, potential fees and deadlines, and things tenants often forget (clearly framed as guidance, not legal advice) When they’re ready, renters generate an inspection PDF that includes their profile, dates, checklist items, and photos, and submit it to the property manager; the PDF is stored and visible in the admin dashboard as evidence for that unit Longer term, this data can power a Rental Credit Score that reflects both payment history (via integrations) and how carefully someone treats a property across multiple leases.
How we built it
We split the build into three main pieces: 1. Admin & portfolio portal Next.js admin interface where property managers can create companies, buildings, and units Generate and withdraw renter invitations and see which units have inspection PDFs on file Backed by PostgreSQL + Drizzle ORM, with tables for companies, buildings, units, invitations, renters, sessions, drafts, and submissions 2. Renter experience Protected /app area for renters, optimized for mobile Token + email-based onboarding through /access and /register Checklist & Photos tab for AI-parsed items, editable labels/notes, and move-in/move-out media per checklist item Guardrails that require at least one move-in photo and a complete profile before final PDF submission, while still allowing late photo uploads Cookie-based sessions plus lightweight sessionStorage flags to drive the client UX 3. AI + document pipeline Backend route handlers for: Checklist parsing (image → structured items with categories) using Google Gemini Lease analysis (PDF/text + location → structured summary of key info, risks, and fees) Client-side PDF generation via pdf-lib: Renter details, unit, and dates Checklist items with notes Embedded move-in / move-out photos with timestamps and captions Final PDF upload to an API endpoint, stored in Postgres in the submissions table and linked to the correct renter + unit
Challenges we ran into
Balancing usefulness with legal safety We wanted the Lease Advisor to be genuinely helpful without pretending to be a lawyer. That meant iterating prompts to avoid hallucinated statutes, flag possible jurisdiction mismatches (e.g. lease text vs. provided location), and clearly label everything as informational guidance.
Connecting admin and renter journeys The invite system had to reliably map an access token and email to a single company, building, and unit, and then ensure every draft, lease analysis, and PDF is stored against that same record. Getting “invite → access token check → account creation → inspection → submission → admin view” smooth took a lot of schema design and debugging.
Handling messy, real-world leases and media Leases are long, inconsistently formatted documents. We had to extract just enough signal for the model (rent, deposits, deadlines, key clauses) without overloading it. On the media side, we normalized images for embedding in PDFs while staying performant for mobile users.
UX clarity around timing rules Early on, strict “photo windows” (e.g., only within 7 days of move-in) made sense logically but blocked real users from finishing their report. The current design keeps guidance about recommended windows, but never fully blocks uploads or submissions as long as required fields and at least one move-in photo exist.
Accomplishments that we’re proud of
A complete, end-to-end pipeline In one flow we can show: an admin registering a company and units, sending an invitation, a renter onboarding with the token, uploading a checklist photo + lease, generating and submitting an inspection PDF, and the admin immediately reviewing that PDF on the dashboard.
Lease Advisor that actually changes understanding Test users discovered clauses and fee structures they had never noticed in leases they had already signed. That was a strong signal that focusing AI on comprehension (instead of raw summarization) is solving a real understanding gap.
A coherent story across admin and renter views From the TrustRent branding and logo in the renter app to labels like “Renter invites,” “Checklist & photos,” “Lease advisor,” and “Inspection PDF submitted,” the product consistently reinforces a narrative about evidence, fairness, and shared trust.
What we learned
Evidence beats memory Even a simple combination of structured checklist items, timestamped photos, and a generated PDF changes the tone of deposit discussions. Both sides can look at the same record instead of arguing over what they “remember.”
Local and legal context matters Small checks—like surfacing when the lease location doesn’t match what the renter typed—prompt better questions and highlight how many existing tools ignore jurisdiction entirely.
Copy and UX framing are product features A lot of the polish came down to naming: “Renter invites,” “Checklist & photos,” “Potential fees & fines,” “Latest evidence.” Those small decisions helped judges and users understand the flow within seconds, without a long walkthrough.
What’s next for TrustRent
Toward a Rental Credit Score Use inspection quality and property-care signals, combined with payment history (via integrations), to build a Rental Credit Score that rewards renters who consistently treat properties well and gives property managers a data-driven view of risk.
Timeline and multi-lease history Add a timeline view per unit and renter that shows every key event — invite sent, token used, lease upload, photo batches, final PDFs, and major updates — so both sides can understand the story of a unit across multiple leases.
Deeper integrations and pilots Integrate with existing property-management systems to avoid double data entry and pilot TrustRent with student housing and other high-turnover properties, where churn and deposit disputes are especially intense. The goal is to turn the most stressful part of renting into a transparent, repeatable process backed by shared, up-to-date evidence.
Built With
- and-supabase
- bcryptjs-for-authentication
- built-with-typescript
- drizzle-orm
- google-gemini-ai-(gemini-2.5-flash)
- next.js-16
- postgresql
- react-19
- sendgrid
- tailwind-css-4
- using-pdf-lib-for-pdf-processing
- zod


Log in or sign up for Devpost to join the conversation.