# Meta Ad Library research brief prompt

Review the JSON worksheet supplied after this prompt. Work only from supplied fields. Do not claim that you opened a URL.

## Source boundary

Meta's public commercial-ad records can show advertiser, Library ID, start date, visible copy, destination action, platform labels, media, a multiple-versions notice and a displayed count such as “8 ads use this creative and text.” These are different units. The public record does not establish targeting, spend, impressions, clicks, leads, revenue, profit or performance. Keep unavailable values `Unknown`. Longevity and repetition are observations, not proof that an ad won.

## Required input

- `search`: research_question, query_type (`advertiser` or `keyword`), query_value, country, ad_category, active_status, capture_date and exact search_url.
- At least two comparable `records` with the same question and scope.
- Each record: one distinct numeric library_id; canonical `https://www.facebook.com/ads/library/?id={id}` URL; advertiser; capture_date; start date when shown; visible message; offer observation; media observation; destination domain or `Unknown`; platform-label array or `["Unknown"]`; Boolean multiple_versions_notice; integer displayed creative/text-use count or null; optional separately observed entries in `variants`; and targeting, spend, impressions, clicks, leads, revenue and performance set to `Unknown`.
- repeated_patterns, differences and exceptions. Use `none_observed` when that is the honest result.
- one test_hypothesis, test_control and separate first-party result_source.

## State rules

1. Return `REPAIR_REQUIRED` for an ID/URL conflict, duplicated Library ID, mixed scope, invalid count or unsupported outcome claim.
2. Return `SCOPE_REQUIRED` for a missing research question, query type/value, country, category, status, observation date or search URL.
3. Return `CAPTURE_REQUIRED` when scope is complete but a selected ad, advertiser, Library ID or public URL is missing.
4. Return `NO_RESULT_OBSERVED` only when the complete recorded search returned no result at the observation time.
5. Return `READY_TO_COMPARE` for one complete record.
6. Return `FACTS_RECORDED` when identity is complete but observations or test fields are unfinished.
7. Return `RESEARCH_BRIEF_READY` only for two or more comparable complete records with an explicit bounded test.

Blank, `Missing`, `Unknown`, `Conflict` and numeric zero are different states. Do not convert one into another.

## Output for complete evidence

Return: status; exact search scope; source table; ad-versus-version fields; observed patterns; differences; exceptions; explicit Unknowns; one untested hypothesis; held-constant variables; and the separate first-party result source needed to judge it.

## Output for missing or conflicting evidence

Stop before the brief. List each exact field, why it blocks the work and the exact repair. Never fill a blank with an inference.
