MongoDB Student Builder Day 2026
ScamRing
Checks a rental listing against linked scam reports before a student pays.

- applicants for the build day
- 500+
- evidence signals behind each score
- 5
- repository tests
- 49
The problem
Rental scams peak when students look for accommodation before term. Between January and July 2026, An Garda Síochána received over 230 reports of rental and reservation scams, with losses above €400,000.
A listing can look ordinary on its own. The warning signs are in what it shares with other reports.
What we built
A student pastes a listing or a chat message and can add photos. ScamRing links it to other reports through shared phone numbers, emails, payment handles, reused photos and copied text, then returns a LOW, MEDIUM or HIGH score with the evidence behind it.
Scores add up from five signals and cap at 100: below 30 is LOW, 30 to 69 is MEDIUM, and 70 or above is HIGH. When a moderator confirms a scam, everyone who checked a linked listing gets an alert.
Key decisions
Judged by connections
- Problem
- Scammers change the wording but reuse contacts and photos.
- Decision
- Reports are linked through shared identifiers with MongoDB’s $graphLookup, capped at two hops and 60 reports, and photos are matched by perceptual hash.
Alerts that survive a restart
- Problem
- A worker can crash between saving an alert and delivering it.
- Decision
- The worker follows a change stream and saves alerts before it recalculates verdicts. Each alert has a unique key, so a restart or repeated delivery can’t create duplicates.
Contacts stored as hashes
- Problem
- Linking reports shouldn’t mean keeping people’s phone numbers.
- Decision
- Phone numbers and emails are stored as HMAC hashes with masked hints, and contacts are redacted from the saved listing text.
One database is also the search engine and the event bus
- Problem
- A one-day build has no time to run a search cluster and a message queue as well.
- Decision
- MongoDB Atlas does all of it: $graphLookup for the rings, vector search for known scam scripts, a transaction for each moderation decision, change streams for alerts, and a TTL index that expires unconfirmed reports after 30 days.
More screenshots
Limits and next steps
The demo uses synthetic listings and reports. A score describes evidence, not proof that a listing is safe or fraudulent. Moderation uses a shared demo PIN, so authentication and abuse prevention need work before a public release.
Test misleading connections between listings and improve access control before a public release.

