# UGC Content Gating (/docs/ugc/approval)



Layers does not have a per-post approval queue UI for UGC. Gating for
whether a creator's post enters the ads creative pool is driven by
three signals, all evaluated automatically:

## 1. Organic score [#1-organic-score]

`update-organic-performance` (every 6 hours) assigns an
`organic_score` to each post. Posts with `organic_score >= 4.0` are
eligible. Posts below threshold are ineligible until they accumulate
more engagement.

## 2. Override [#2-override]

Per-project override on `project_ads_content`:

* `override = 'include'` — always eligible, bypasses the threshold.
* `override = 'exclude'` — always ineligible, regardless of score.
* `null` — score-based eligibility.

Overrides are set from the Ads / Creative Library surface.

## 3. Safety [#3-safety]

If `ads_content.safety.safetyFailed = true` (platform-flagged
content), the post is ineligible. Cannot be overridden.

## Auditing [#auditing]

Every change to `project_ads_content.override` is tracked in audit
history. Query the `ads_content` and `project_ads_content` tables for
the full signal state on a given post.
