Methodology

How SiteScan scores.

We publish the exact algorithm so publishers can debug a low score and advertisers know what the number is measuring. Nothing here is proprietary — the moat is the data we score, not the formula we use.

The three sub-systems

Each scan produces three independent sub-scores 0–100. The total is the simple average, rounded to the nearest integer.

Technical · starts at 100

Whether the page runs competing ad code, malware patterns, or popup vendors.

  • Network requests matched against the fingerprints database (42 patterns: JuicyAds, ExoClick, AdSense, etc.).
  • Confidence accumulates per network across all matches; threshold 60+ flags the network as detected.
  • Penalty per detected network scales 10pt (just-over-threshold) to 30pt (full-confidence).

Compliance · starts at 100

Adult-network legal hygiene: age gate present, DMCA page reachable, 2257 statement linked.

  • −25pt if no 18+ language found anywhere on the homepage body text.
  • −25pt if /dmca and /takedown both return non-2xx.
  • Future: −15pt if no /2257 page on AV/studio category sites.

Performance · starts at 100

Load characteristics that affect viewability and the publisher's user retention.

  • −15pt for slow load (>6s to settle). −35pt for very slow (>12s).
  • −15pt for heavy page weight (>5MB total response bytes observed).
  • Future: Core Web Vitals (LCP, INP, CLS) from a Playwright performance trace.

Band cutoffs

The total score maps to one of four bands. Same labels across SiteScan (technical site state) and the publisher-quality-scores (traffic-integrity state) so a single decision applies across both signals.

BandTotal scoreNetwork action
Verified80–100Default for fresh publishers post-onboarding scan with no findings. "Verified clean" badge on the marketplace card.
Standard60–79No action. Visible in the marketplace; advertisers can opt into / out of this band per campaign.
At risk40–59Auto-warning email. Visible yellow band on the marketplace. Advertisers can exclude via campaign brand-safety setting.
Probation0–39Auto-suspend new impressions. Existing bookings honor their term but the auction excludes the site.

Scan cadence

  • Onboarding scan — fires on every fresh site registration, automatically. Result populates within a minute.
  • On-demand rescan — publishers can request a rescan from the site detail page (one per cooldown window). Changes update the public score on completion.
  • Recurring monthly rescan — planned. Today, the cadence is onboarding + on-demand; the scheduled monthly sweep lands before GA.
  • Incident rescan — admin-triggered or advertiser-complaint triggered. Same scan, surfaced immediately as a one-off.

Dispute resolution

Every finding includes a remediation hint — what to do to clear it. If you believe a finding is wrong (e.g. a competing-network match is a false positive, or the scanner saw a cached version of your page), email [email protected] with the scan ID and we’ll re-run + manually inspect.

Disputes resolved either way are logged to the audit table; the remediation hint on a successfully-disputed finding is reworded for the next round so the same publisher doesn’t hit it again.

See it live

The full SiteScan breakdown — every finding, every input to the grade — sits inside the dashboard at /dashboard/marketplace/[id] once you’re signed in. Sign up to browse it against real publishers.