CASE STUDYA human-in-the-loop moderation system, by Braynex

Every listing is seen
before a buyer does.

Sightline checks every new listing's photos with an AI vision model the moment they're posted. Anything that breaks your marketplace's rules is pulled aside for a person to decide, so the storefront stays clean at a scale no team could watch by hand.

sightline://live-feed
run #1428scanned 312held 41
Incoming listings →
Retro Film Camera, boxed
$180Cameras
Approved
Wool Overcoat, size M
$95Fashion
Approved
Tactical Airsoft Rifle
$240Sporting
Held
Ceramic Table Lamp
$60Home
Approved
Designer Tote "inspired by"
$210Fashion
Held
Retro Film Camera, boxed
$180Cameras
Approved
Wool Overcoat, size M
$95Fashion
Approved
Tactical Airsoft Rifle
$240Sporting
Held
Ceramic Table Lamp
$60Home
Approved
Designer Tote "inspired by"
$210Fashion
Held
Retro Film Camera, boxed
$180Cameras
Approved
Wool Overcoat, size M
$95Fashion
Approved
Tactical Airsoft Rifle
$240Sporting
Held
Ceramic Table Lamp
$60Home
Approved
Designer Tote "inspired by"
$210Fashion
Held
Held for reviewneeds a human
Tactical Airsoft Rifle, Full Kit
LK-48213
Weapon replica visible in image 2, prohibited by marketplace policy.
Designer Tote, "Inspired by"
LK-48197
Possible counterfeit branding on the clasp and dust bag.
RV
Reviewer online, 3 awaiting a call
BUILT ONFastAPI·Google Gemini 2.5 Flash·PostgreSQL·NiceGUI
Case studyListing-safety Braynex built for a high-volume marketplace client.2025 · Vision AI
The problem

Listings went live before anyone looked.

New listings hit the public feed the moment they were posted. No team could eyeball every photo in time, so unsafe and off-policy items reached buyers before anyone noticed.

The outcome

Now every photo is seen first.

Each image is checked against the marketplace's rules the instant it's posted. The vast majority clear on their own; only genuine edge cases stop for a reviewer, who still makes the final call.

Built to scale

Every image, before the feed.
Nothing gets through unseen.

Every
new listing scanned before it reaches a buyer
2
roles: a reviewer files, an admin oversees every run
1
clean JSON verdict returned per image checked
24/7
continuous ingest, only what is new since the last run
listings scanned · rolling
How it works

Three stages, one continuous stream.

New listings never wait for a nightly batch. They flow in, get seen, and only the doubtful ones stop for a person.

01media_scrapper.py

Ingest & scale

Watches the new-listing feed and batches the images per listing. A cutoff-link check means it only processes what's new since the last run, so it keeps up continuously.

seen · 09:41
seen · 09:42
↑ last run cutoff
new · 09:443 new
02main.py

Vision moderation

A FastAPI backend sends each image to Gemini 2.5 Flash with your policy prompt, and gets back approved / not-approved plus a reason, as clean JSON. Not-approved listings get flagged.

{ "approved": false,
  "reason": "…" }
03nicegui_app.py

Human-in-the-loop

Flagged listings land in a role-based console. A reviewer marks each handled or files a report; an admin sees every scan run and what's active right now.

Airsoft rifle, full kitHandleReport
Designer tote, inspired byHandleReport
Coverage

Your rules. Enforced on every photo.

Sightline reads the policy prompt you write, not a fixed allow-list. These are the kinds of checks a marketplace typically turns on.

Prohibited items

Weapons, replicas, and regulated goods flagged before a listing ever reaches the feed. prohibited-items

Counterfeit branding

Knock-off logos, clasps, and packaging caught straight from the photo. counterfeit

Unverified claims

Health, medical, or performance claims printed on a label get held for a human. health-claims

Off-platform contact

Phone numbers, emails, or handles in an image that route the sale away. off-platform

Adult & graphic content

NSFW or graphic imagery kept out of a general-audience storefront. explicit

Recalled & unsafe goods

Items matching recall notices or safety bans surfaced for review. recalled

Scam & bait patterns

Too-good-to-be-true framing and known scam layouts get a second look. fraud

Misleading media

Stock shots or mismatched images that misrepresent the actual item. misrepresentation

Your own policy

Any rule you can write in plain language becomes a check the model runs. custom-policy

The console

A dark room where the calls get made.

The reviewer and admin console the flagged listings land in, switch views from the rail.

sightline://queue
reviewer
Sightline
moderation
Views
RV
Reviewer
online
Review queue4 held
Confidence
RV
LK-48213
Tactical Airsoft Rifle, Full Kit
image 2 flagged
AI reason
Weapon replica visible in image 2, prohibited by marketplace policy.
confidence
94%
The value, in one line

The storefront stays clean at a scale no human team could watch manually, with a person still making the final call.

What Braynex brought

Three things this build came down to.

Vision AI in production

Policy-driven image moderation wired to a real model, returning structured verdicts you can store and act on, not a demo notebook.

Humans kept in the loop

AI handles the volume; a role-based console keeps a person on every real decision, with reviewer and admin views that match how teams actually work.

Systems that keep up

Continuous ingest and logged runs, built to run unattended and stay caught up with a marketplace's live feed.

The stack

Small, sharp, and boring in the right places.

FastAPI
The backend that runs each scan and serves the moderation endpoint.
Gemini 2.5 Flash
The vision model that reads every image against your policy prompt.
PostgreSQL
Stores every scan run, verdict, and reviewer report, with JSONB for the raw model output.
NiceGUI
The role-based reviewer and admin console, in pure Python.
What it costs to run

Cheap enough to check every single photo.

Moderation runs on the fast, low-cost Gemini vision tier, so scanning the whole feed costs cents, not headcount. One photo plus the policy prompt goes in; one short JSON verdict comes back.

< $0.001
per image, a full policy check and verdict
~$0.60
per 1,000 images checked
~$5/day
to moderate a full day's feed (~8,900 images)

Estimated on public Gemini fast-tier list pricing (about $0.30 to $0.50 per 1M input tokens): a listing photo plus the policy prompt in, one short JSON verdict out. Downscaling images and caching the policy prompt push it lower still.

Keep the storefront clean,
with a person still in charge.

Sightline was built by Braynex for marketplaces that can't afford to let a bad listing reach a buyer.