Inspiration
When I was looking for a short, cheap lease in San Diego for my summer internship, I was recommended to use Facebook Marketplace. While the listings were in fact cheaper, I encountered many suspicious postings that reduced my overall trust in the platform, despite a majority of legitimate postings. Finding a rental property is already a tenuous process with balancing budget constraints, location preferences, and lifestyle needs, so we decided to build a tool that helps with flagging potentially fraudulent rental postings.
What it does
Rent Recon is a Chrome extension that assists in rental property search on Facebook Marketplace by identifying signs of fraudulence. It scrapes the listing content (address, description, images, etc) and cross-references multiple real estate databases to suggest a fraud risk score from 0 to 100, with concrete reasoning attached.
The algorithm determines the suggested fraud risk score based on 5 features:
| Features | Details |
|---|---|
| Address Lookup (−25 max) |
|
| Price Anomaly (−30 max) |
|
| NLP Analysis (−25 max) |
|
| Image Analysis (−20 max) |
|
| Video Presence (+15 bonus) |
|
How we built it
The frontend is a Chrome Extension built on Manifest V3 with React, TypeScript, and Tailwind CSS, Vite, and CRXJS. A content script scrapes information from a rental listing on Facebook Marketplace and passes that data to the backend via RestAPI.
The backend is a Python FastAPI server that orchestrates the analysis pipeline. It makes parallel requests to two real estate APIs: Rentcast for MLS property lookups and area median rent data, and Zillow via RapidAPI for secondary listing verification. It then uses the Gemini 2.0 Flash API to conduct NLP on listing text, including rent amount, address, bedroom count, suspicious phrases, payment apps, and missing legitimacy signals. Listing images are sent to Gemini Vision API for stock photo detection, staging analysis, and authenticity checks.
The returned data feeds into the 5 scoring features, where each module produces an independent sub-score, which is then used to compute the final Recon Score from 0 to 100. Results are cached with cachetools, API's are rate-limited with slowapi, and ratings are color-coded for intuitive visuals.
Challenges we ran into
Ideation proved to be much more challenging than we expected, especially because we knew the importance of having a well-defined and well-scoped project topic. We had several ideas to help both sellers and buyers in real estate, but many of these tools already exist and are difficult to outshine in 36 hours. We also had a few good ideas that were too ambitious which we ended up abandoning.
When we settled on the idea of detecting fake rental listings, the original model was made to output the probability of a listing being fake. However, the biggest challenge was being accurate enough to be trustworthy, especially given the lack of ground truth validation. We decided to pivot and have the model to focus on explainability rather than predictability, where our model produces informed warnings with concrete reasons rather than predicting exact numbers.
The biggest challenge we encountered was how to construct a good algorithm. We wanted to simulate and automate what people actually do to detect fake listings, so we looked at news articles, asked about personal experiences, and even dug through a few subreddits to collect information on this. We constructed our algorithm based on the most identifiable features from our research.
The last challenge we encountered was returning the right amount of details that are relevant, concise, and at the right length for the UI. This required carefully constructed guardrails and interaction with our reasoning engine to structure the output exactly how we like.
Accomplishments that we're proud of
We’re proud of how Rent Recon addresses one of the real pain points in finding a rental property, and how easy and seamless the user experience is. We bypassed the tension between predictiveness and trustworthiness in favor of transparency and explainability. Our model isn’t just a black-box numeric predictor; it conducts real cross-platform research and utilizes deterministic scoring to return concrete reasoning. We spent a lot of time polishing our project and we loved how intentional every detail turned out.
What we learned
- Andrew: The hardest part, and the most important part, of project development is specifying goals, requirements, and the definition of success. By carefully planning out the details of the project from the beginning, and diligently documenting each change and revision, the team works together more seamlessly.
- Zeeshan: Being very descriptive in prompts, not only in creating features, but also in debugging, helps a lot when it comes to developing efficiently. It is also important to identify exactly what the problem is and why it could be happening.
- Jason: By continuously tuning model parameters, I learned how to detect patterns and better identify discrepancies between different features.
What's next for Rent Recon
- Expand compatibility to other web browsers other than Chrome
- Evaluate our model with labeled dataset to produce concrete metrics as proof of reliability
- Improve Recon Score accuracy through machine learning models, landlord background checks, description similarity detection, and reverse image search for legitimate listings
- Increase transparency by including links to resources used to calculate Recon Score, such as Zillow references or suspiciously similar listings, which the users can investigate
Built With
- cachetools
- crxjs
- fastapi
- geminiapi
- manifestv3
- python
- rapidapi
- react
- rentcastapi
- restapi
- slowapi
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.