Inspiration

Rental scams are a solved problem for anyone who can afford a buyer's agent and an afternoon of due diligence, and a four-figure trap for everyone else. The scammer's playbook is standard: stolen or stock photos, an invented address, urgency, and a deposit request before a viewing. Every check that would expose it (county ownership records, price sanity against HUD data, whether those photos are real photos of a real unit) is mechanical work.

Mechanical work is exactly what AI agents are for. So we built the fraud-analyst desk that renters and out-of-state buyers could never afford, and priced it at $9.99.

What it does

RemotePropView verifies DFW property listings end to end.

  • Paste a listing message and the scam detector scores it. In our demo, a real scam message is flagged High scam risk, 75/100, with named flags: payment app to a stranger, deposit before viewing, landlord "out of the country", and a live detection that the street address does not resolve to any real street on mapping providers, because scammers invent addresses.
  • Check the photos. Gemini vision rules on whether a listing photo is a real photo of a specific unit or a stock/marketing/AI-generated image, and explains why. In the demo, a real Craigslist photo comes back Suspicious, stock/marketing 85%, with reasons: overly perfect staging, controlled lighting, mass-produced decor, no lived-in personal touches.
  • Run the full report. A researcher agent works through county records, crime data, schools, flood and storm history, and market comparables, on camera, and produces a TruVerified trust score with real Street View imagery of the actual house.
  • Subscribe. Paid tiers ($9.99 Basic, $175 Realtor, $299 TruReport per month) include the downloadable scam-check PDF and deeper verification for professionals serving remote clients.

The promise is one sentence: know whether a listing is real before you send a deposit.

How we built it

Node/Express with Sequelize on Postgres for the API, Next.js for the client, deployed on Render, Stripe for subscriptions.

The AI operations layer is the product:

  • Gemini as the production vision judge. A dependency-free REST handler (gemini-2.5-flash) reviews listing photos fetched through an SSRF-guarded pipeline with a hard size cap, and its verdict feeds our composite trust score. One production lesson is baked in: Gemini 2.5's thinking tokens draw from the same output budget and were silently truncating our JSON mid-object, so every structured call now runs with a zero thinking budget.
  • Cross-provider failover as a logged decision. If the primary text provider fails, the call fails over to Gemini automatically, the fallback is written to the log, and provider order is configuration rather than code. Fallback output is never written to the response cache, so a degraded answer can never be served for 24 hours as if it were a healthy one.
  • A researcher agent with honest gaps. Per-report source orchestration with retries. Our data-quality rule forbids invented values, so when a source fails the UI shows "still researching" instead of a fabricated zero. This rule is enforced in code, not in a style guide.
  • Verification discipline. 2,764 unit tests pass on the merged branch, plus count-bound network-budget tests in Playwright that prove the new pages cannot request-loop: the scam photo check fires exactly one API call per click even when the API returns an error. That bug class has actually shipped in this codebase before, so it is now regression-guarded rather than trusted.

Challenges we ran into

The hard problem was making an AI verdict trustworthy enough to influence a decision about someone's deposit. Our answer was bounding, logging, and honesty: verdicts carry confidence percentages and written reasons, they are framed as signals to verify rather than accusations, and every decision records which provider answered and whether it was a fallback.

The mundane problems were real too. Our address extractor mis-parsed genuine listings, two bugs we found and fixed while shooting the demo, with the corrected extraction now visible on camera. Our own rate limiter fought the demo shoot. And a vision service that assumed one provider had to be taught to boot in an environment where a different provider is primary.

Accomplishments that we're proud of

A working AI-native professional service operated by one person. The verification, the verdicts, the failover, and the fulfillment all execute without a human in the loop, while a human owns strategy and every promise made to a customer.

And the demo is the real application: a real property, a real scam message, a real Gemini verdict, and a real checkout. No mockups, no re-enactments.

What we learned

AI leverage compounds, but only with discipline. Logged decisions, bounded outputs, and honesty about uncertainty are what turn "a model said so" into a professional-grade signal someone can act on. The moment you are willing to fabricate a value to fill a gap in a report, you have built something worse than nothing for the person deciding whether to wire $899 to a stranger.

What's next for RemotePropView

Scout reports, which turn verification into paid local gig work for people photographing and confirming units on the ground (the system already exists in the codebase). A partner program for corporate relocation teams and police or Better Business Bureau co-branded scam alerts, turning the verification engine into infrastructure other organizations build on. Then Houston as the second metro once DFW conversion proves out.

Built With

Share this project:

Updates