FraudLens
1st place · Finnovate 2026Checks a suspicious message, link or document before you pay, in English, French and Kreol Morisien.

What I did
- Ran the QA rounds, built local test pages for the Chrome extension, and wrote a script that confirms each reported bug is fixed before it goes back to QA.
- Fixed some of the bugs QA found, mostly in the backend. Two examples: the endpoint analysts use to record outcomes was open to anyone and now needs a token, and old organisation data is purged.
- Built the PDF and Word document forensics.
- Reviewed the Kreol scam dataset, and tested how often the model’s answer to the same Kreol message changes between runs. The model is only shown the 61 dataset rows a person reviewed.
- Role
- QA and testing, backend fixes, document forensics
- Team
- Dhruv & Friends, four developers
- When
- September 2026
- Built for
- Finnovate Web and AI Hackathon 2026
The problem
Scams in Mauritius arrive in mixed Kreol and French: an SMS saying your MCB account is blocked, a WhatsApp "bank" asking for the one-time code it just sent, a fake MRA refund page. Generic filters don’t read Kreol, don’t know that mcb.mu is real and mcb.nu isn’t, and hand back a score nobody can explain.
How it works
- 01
Every warning quotes the message
A language model reads the message and may only return tactic codes from a fixed list, each with a quote copied from the message. Plain code then checks every quote against the original and drops anything it can’t find there.
- 02
The rules engine sets the verdict
A versioned rules engine turns those findings into the score, the verdict and the advice, and lists every point it added.

How it decides. The model reads, fixed checks verify, the rules engine sets the verdict. - 03
Links are checked against the real domains
A registry of official domains for seven Mauritian banks, telecoms and government bodies catches look-alike links, including Cyrillic letter swaps.

A site security report, with the checks behind the grade. - 04
One backend, three front ends
The web app, a Chrome extension and an Outlook add-in all call the same backend. None of them has its own copy of the detection logic.

Link Guard, the Chrome extension, checking the current site. - 05
Documents are checked for how they were made
A forensics service looks inside PDF and Word files for signs such as a signature pasted onto a scan or edits made after signing. It reports them as warning signs, never as “forged”.

Tools for specific situations: before paying, checking a document, reading a whole chat.
Design decisions
- It still works when the AI is down. If the model fails or times out, the rules return a full verdict on their own. It was designed for a live demo on bad Wi-Fi.
- The same findings always give the same score. The model never scores anything.
- In the web app, phone numbers, emails and account numbers are redacted in the browser before a message is sent.
Results
| Rules only, model off | 46 of 63 scam messages caught, 0 of 21 legitimate messages flagged |
|---|---|
| Backend tests | 631 passing |
| Web app tests | 99 passing |
| Outlook add-in tests | 77 passing |
| Chrome extension tests | 46 passing |
| Document forensics tests | 48 passing, 2 skipped |
More screenshots
Built with
- Node and Express
- Next.js 15
- Chrome extension
- Outlook add-in
- SQLite
- Tesseract OCR
- Python forensics service
