Inspiration

Faking damage now takes one sentence: upload a photo of an intact item to a chat app, type "add a dent", and claim a refund. Sellers can't tell, and refusing every doubtful claim hurts honest buyers. We wanted a tool that asks: does this photo show what the seller shipped, and can its story be trusted? If not, the answer should be a fair next step, not an accusation.

What it does

A seller uploads the buyer's damage photo, their own listing photo and the claim. In about 10 seconds Lenzit returns:

  • Verdict: Likely genuine / Needs verification / Likely manipulated
  • Next step: refund as normal, or ask for a fresh photo (with a ready message)
  • Plain-language reasons, a difference heatmap with a slider, and a downloadable report

How we built it

Independent checks, so fooling one isn't enough:

  • Content Credentials (C2PA) + EXIF: an AI-generated declaration triggers a hard rule; a capture time before delivery is flagged.
  • AI-image detector: frozen CLIP ViT-L/14 features (5 crops) + a head trained on FraudBench (6 generators), with real damaged items as hard negatives.
  • Seller-photo match: DINOv2 same-item check, SIFT + RANSAC alignment, SSIM change map.
  • Decision policy: thresholds set out-of-fold so only 5% of real-damage photos are flagged.

Every image is canonicalised first (crop, resize, re-encode) so file format can't leak the answer. Stack: Python, PyTorch, open_clip, OpenCV, scikit-learn, c2pa, FastAPI, Modal. Security: magic-byte upload checks, size/megapixel and decompression-bomb limits, rate limiting, strict security headers, threat model and red-team report in the repo.

Results (Lenzit-Bench v1)

3,260 test images from 200 products, plus attacks (stripped metadata, JPEG, screenshots, wrong items). Out-of-fold, grouped by product; at 5% false alarms on real damage:

  • 66.5% of AI fakes caught, metadata stripped (AUROC 0.914)
  • 56.3% for unseen generators (worst 31%)
  • 83% of wrong-item photos flagged
  • 95% of real-damage photos never marked manipulated

Challenges

  • Shortcuts: file properties alone separated real from fake. Canonicalising fixed it, and held-out recall held.
  • A model that looked too good: fusion scored higher but failed a fairness check, so we shipped the simpler, defensible policy.
  • Edits of real photos: the pixel detector scored a ChatGPT edit 0.01; Content Credentials caught it. That's why we layer checks.

Accomplishments

A live end-to-end product with honest, reproducible numbers, and fair to honest buyers: the worst outcome for a genuine claim is a request for a fresh photo.

What we learned

"Is it AI?" isn't enough on its own; provenance and the seller's photo matter as much. Honest evaluation made us drop a model that only looked better.

Limits and what's next

  • A screenshot of an AI edit strips credentials and can pass (shown in the demo).
  • 13% of genuine buyers with very different photos are asked to verify.
  • Next: a signed one-time re-capture link, a claim–photo consistency check, and a Shopify plug-in.

Team

Harshith Raghavapuram · Sriman · Hotrish

FraudBench is CC BY-NC-SA, so our detector head is non-commercial. Demo AI images were made by us from our own photos. AI coding assistants were used.

Built With

Share this project:

Updates