AI compliance checker

Paste content.
Check compliance.

Paste your ad text and get two reads on it. Compliance shows what could get it pulled, with the exact rule that says so. The Virality Index scores whether anyone would pass it on.

Reviewing a whole creative? Open PolicyLens · Review queue · How it works

Scroll for what sits behind it ↓

PolicyLens · sample Fail · absolute

“clinically proven to cure colds”

Trigger
clinically proven
Pack
health · absolute
Clause
FTC Health Products Guidance
Quote
“If elements of an ad imply that the product also provides a disease benefit, the advertiser must be able to substantiate the implied disease claim…”
Route
Fail. Disputed cases go to ReviewLens.
PolicyLens · sample Clear · licensed

“biodegradable where facilities exist”

Trigger
biodegradable
Pack
Green Guides · gated
Clause
FTC Green Guides · degradable claims
Quote
“Unqualified biodegradable claims for items destined for landfills… shouldn’t be made.”
licensed_by
where facilities exist
Route
Clear. Qualifier licenses the hit.

Not SOC 2. Not an EU AI Act inventory. Not cookie consent. Those stay your other stack. We sit on the creative.

Regulators
FTC FDA NAD Green Guides Made in USA
Platforms
Meta Google TikTok LinkedIn
54Gated pattern packs on the live matcher
172Traceable US clauses with source quotes
1:1Same text, same pack hits. The model does not decide the hit.
~400µsPer-ad lexical pass — before any display verdict

Legal blocking launch.
Not a governance program.

Low-risk licensed copy clears. Absolute packs fail. Borderline goes to a person — with the graph attached.

Today

  • Does this feel risky?
  • A Slack thread and a model paragraph
  • Lawful disclosure still gets flagged
  • Same ad, run twice, may flip

With Under Intelligence

  • A pack pattern has to match
  • Clause + verbatim quote + trigger span
  • A nearby qualifier can license the hit
  • Same text → same pack hits

One engine. Three jobs.

The matcher does not change. Paste a creative, record a decision, or pipe the trafficking system — same packs, same graph, same verdict contract.

Paste a creative

PolicyLens

Copy or image in. Full path runs Gemini VLM into the lexical packs. Quick path is a single advisory pass for demos.

  • Text and image creatives
  • Violations with clause citations
  • Explainability graph
Open PolicyLens →
Record a decision

ReviewLens

Queue of absolute fails and borderline assets. A recorded human decision is authoritative — and becomes labeled data for the next pack revision.

  • Approve / needs-changes / reject
  • Per-rule false-positive labels
  • Original creative on the case
Open ReviewLens →
Pipe trafficking

API

POST an asset, poll the verdict, pull the graph. Same deterministic audit fields whether the UI shows an LLM summary or not.

  • POST /assets · GET /assets/{id}
  • POST /assets/{id}/virality-review
  • GET /assets/{id}/graph
  • OpenAPI at /docs
Open API docs →

Trigger, then gate.
Never a black box.

Other tools ask a model if an ad “feels” risky. We require a pattern to match, then a qualifier can clear it. Gemini may paint the display verdict. It does not decide the hit.

  1. Ingest — text as-is; images become a structured VLM packet (claims, OCR, objects).
  2. Trigger — a pack pattern must match: “clinically proven,” “2× gentler,” “biodegradable.”
  3. Gate — a nearby disclosure can license the hit. Absolute packs (e.g. disease cures) never clear.
  4. Audit — clause, quote, trigger, and licensed_by stay on the graph.
Licensed · clear Qualifier is in range. The hit stays on the graph as licensed_by. The flight can move.
Absolute · fail Disease cures and similar packs never clear. Fail, with the clause attached.
Borderline · ReviewLens Gated miss or both-twins. A person records approve / needs-changes / reject. That decision is the record.

Second read · same paste

Compliance says what you can’t say.
Virality Index says whether it’s worth saying.

One paste, two independent reads. The compliance verdict stays deterministic and cited. The Virality Index is an advisory creative score on seven dimensions taken from the sharing research — scored separately, never able to move a compliance outcome.

Seven dimensions, not a vibe

  • Arousal — high-activation emotion of any kind. Anger and anxiety travel as far as delight; calm positivity doesn’t.
  • Social currency — does sharing it make the sharer look good.
  • Practical value — useful enough that passing it on helps someone.
  • Story — a narrative carries it, rather than a flat assertion.
  • Novelty — it violates an expectation the reader already holds.
  • Triggers — tied to a recurring cue, so it resurfaces on its own.
  • Observability — the result is visible and easy to imitate.

After Berger & Milkman (2012) on arousal, and Berger’s STEPPS constructs.

Two things we refuse to fold into the score

Clarity is comprehension hygiene, not a sharing driver — so it’s reported as a diagnostic and flagged when it’s low enough to cap everything else.

Brand prominence measurably reduces sharing, so rewarding it would be backwards. It’s surfaced as a warning instead of being quietly averaged in.

Equal weights, on purpose

All seven dimensions carry the same weight. With no outcome data of your own, invented coefficients are false precision — and equal weights are hard to beat with guessed ones. The payload says uniform_prior so you always know which it is.

Fit them on your own ad performance later, and the score becomes yours.

Advisory by design. It is not a share prediction, it never edits the compliance verdict, and when a virality tactic would cost you compliance it says so. Paste something and see both reads ↑

Most AI added a guess.
We added a citation.

LLM-only review Under Intelligence
Same ad, twice May flip Same text → same pack hits
Who decides the hit The model, or an agent A pack pattern. The model does not decide the hit
Why it failed A paragraph of model prose Clause + verbatim quote + trigger span
Lawful disclosure Often still flagged Qualifier gate licenses the hit
Images One opaque vision call VLM packet into the same matcher
Human in the loop Chat thread ReviewLens decision is the record

Get this live before the next flight.

No onboarding project. PolicyLens is the product — paste copy, get a cited hit. ReviewLens is where a person records the rest.