Inspiration
One of our team members got scammed searching for a summer sublet in Ann Arbor. They sent $1,300 via Zelle to a landlord who turned out to be fake. The apartment didn't exist. That experience is what started this project. We looked into how widespread the problem was and found that ages 18–29 are 42% more likely to fall victim to rental scams than any other age group, and that the FBI tracked $173.5 million in rental fraud losses in 2024 alone.
What it does
SubletShield is an AI-powered multi-agent system that investigates rental listings in 30 seconds. A student pastes raw listing text, uploads a photo, and optionally attaches a lease PDF. Four specialized agents run simultaneously — a Contract Agent that scans lease PDFs for illegal clauses and Zelle payment demands, a Market Data Agent that calls the Rentcast API to flag bait pricing, a Street View Agent that fetches Google's actual photo of the claimed address and uses GPT-4o vision to detect building mismatches, and a Reverse Image Agent that uploads the listing photo and runs it through Google reverse image search to catch stolen photos. An orchestrator synthesizes all four results into a Trust Score from 0–100, a plain-English verdict, and an Action Kit with specific next steps, a copy-paste landlord reply, and direct FTC and IC3 reporting links.
How we built it
The backend is FastAPI with four independent agent modules. The listing parser uses GPT-4o-mini to extract structured data — address, zip, rent, suspicious language flags — from raw unformatted listing text. The orchestrator runs all four agents in parallel using asyncio.gather(), then applies a weighted scoring model where contract analysis carries 40%, street view 25%, market data 20%, and reverse image 15%. Cross-agent correlations are detected programmatically — when Street View mismatch and reverse image theft fire simultaneously, the orchestrator elevates it to a Photo Fraud alert. The investigation summary is generated by a second GPT-4o-mini call that synthesizes all agent outputs into two sentences written for a student under stress. The frontend is React and Vite.
Challenges we ran into
Rental fraud is a problem that sounds simple until you try to build a system that actually catches it reliably. The core difficulty is that no single signal is enough. A suspiciously low price alone could just be a motivated landlord. A photo that appears on Zillow could be a legitimate cross-posting. A Street View mismatch could be a renovation. The scam only becomes undeniable when multiple independent signals converge — and building a system that detects that convergence, rather than just running four separate checks, was the central engineering challenge.
The reverse image pipeline was the hardest individual piece. SerpAPI requires a publicly accessible URL, not raw image bytes so we had to build a compression pipeline, upload to imgbb to generate a temporary public URL, and pass that to SerpAPI, all within the agent's execution window. Getting address mismatch detection right required careful keyword matching against the address extracted by the listing parser, because SerpAPI returns URLs and not structured data, and we needed to infer whether the photo was appearing at a different property from the URL alone. The Street View agent required significant prompt engineering to prevent false positives: GPT-4o vision needs to focus on structural features like roofline shape and exterior material, and explicitly ignore seasonal variation, parked cars, and lighting changes, otherwise it flags legitimate listings too aggressively. Every agent also had to be designed to fail gracefully — an unhandled exception in one agent that breaks the entire pipeline is unacceptable when a student is waiting 30 seconds for a verdict on a listing they're about to send money for.
Accomplishments that we're proud of
The cross-agent correlation engine is the piece we're most proud of. It's not just four independent scores — the orchestrator detects when multiple agents independently reach the same conclusion through completely different data sources, which is a much stronger fraud signal than any single check. The fact that the system caught a real listing — 616 Pauline Blvd, Ann Arbor — with a Trust Score of 14, correctly identifying stolen photos on Zillow and Realtor.com, a Street View building mismatch, a wire transfer clause in the lease, and a price 57.1% below market, all without any manual input, felt like genuine validation that the architecture works.
What we learned
The most important thing we learned is that building a multi-agent system is fundamentally a contract design problem. Every agent in SubletShield returns the same fixed JSON schema — score, status, findings, summary — regardless of whether it succeeded, failed, or was skipped. That uniformity is what lets the orchestrator weight, compare, and synthesize four independent results without any agent's failure breaking the pipeline. We learned this the hard way: an agent that throws an unhandled exception instead of returning a graceful fallback JSON silently corrupts the entire scoring pipeline downstream.
The second thing we learned is where LLMs belong in an agentic architecture and where they don't. LLMs are poor at retrieval — market rents, Street View images, reverse image search results. They're exceptional at structured reasoning over ambiguous inputs — parsing a messily formatted Craigslist post, comparing two building photos, synthesizing four agent findings into two plain-English sentences. The rule we ended up with is simple: every real-world data call is an API, every judgment call is a language model. Mixing those up makes both worse.
What's next for SubletShield
Three immediate directions. First, expanding the Market Data Agent beyond zip-code averages to bedroom-level and neighborhood-level comparisons using Rentcast's full API, which would reduce false positives on legitimately affordable listings. Second, building a browser extension that runs SubletShield automatically when a student visits a Facebook Marketplace or Craigslist rental listing — no copy-paste required. Third, partnering with UMich Student Legal Services and AAPD to surface SubletShield through their existing housing warning channels, replacing static web pages with a tool students can actually use at the moment of decision.
Log in or sign up for Devpost to join the conversation.