AI CEO Lab← All free guides
On this page
Ads · Psychology

What Makes A Good Facebook Ad: What I Check Before Anything Ships

One person, one awareness stage, one desire, one belief she already holds, one thing being tested. The five questions every ad in my clinic accounts answers before it is rendered, and the prompt that makes your agent ask them.

What Makes A Good Facebook Ad: What I Check Before Anything Ships

Every clinic owner I meet has the same ad in the account. A nice photo, the clinic name, the word radiant somewhere, a phone number. It ran for three weeks and produced a handful of leads nobody could reach. The ad was not ugly. It was aimed at nobody.

AI made this worse before it made it better. You can now render fifty ads in an afternoon, so people do, and the account fills with fifty versions of the same aimed-at-nobody ad. Speed without a reason is just more noise, faster. That idea comes from a video ads course I took, and it is the truest thing in it.

So this is the part I do before any ad exists. Not the rendering, not the copy. The thinking. Who is this one person, what does she already know, what does she actually want, what does she already believe, and what am I testing. Five questions. If an ad cannot answer them it does not get made, and if it did get made it does not get launched.

None of this is my invention. The five stages are Eugene Schwartz, the way I use them for stalled accounts is from Alex Hormozi, the hook rules are the ones my short-form system runs, and the compliance lines are what a medical practice has to obey. My version is the order, the gates, and the fact that the patient is the hero of every ad. The doctor is a hand, a handpiece, or a name line.

The three levels

Level 1 · Manual

You open Ads Manager, pick a nice photo, write what the clinic does, boost it, and judge it by whether you like it.

Level 2 · AI + connections

Every ad has a written brief: one person, her awareness stage, the dominant desire, the belief it opens on, the framework, the hook, and the one variable the test isolates. The brief passes a gate before the ad is rendered.

Level 3 · Agents on cadence

Your agent writes the brief from your research folder, grades the hooks, diagnoses which awareness stage the account is missing when results plateau, and queues the next test every week. You approve the slate, you never brainstorm at 9pm.

Connections for this guide: Nothing to connect for the thinking itself. For the account diagnosis at the end, a read only connection to your Meta ad account (the audit guide shows the three doors). Your CRM or inbox for ten sentences in the patient's own words. The brief skill below.

The mental model

Wrong

Make it look good, describe the clinic, boost it, and hope the right people see it.

Right

Pick one person. Place her on an awareness stage. Find the one desire and the one belief she already holds. Write the hook for her. Make it look like content, not an ad. Test one variable with the kill line already written.

RoleTalks to youJob
The personFirstOne patient, one moment, one sentence she would say out loud
The stageSecondUnaware, problem aware, solution aware, product aware, most aware
The desire and the beliefThirdWhat she wants underneath the procedure, and what she already thinks is true
The hook and the formatFourthFirst three seconds or first 125 characters, native to the placement
The testLastOne variable, a kill line, a date to look

The five questions, in order

1. Who is this one person

Not women 35 to 55 in Houston. One woman. She lost the weight and the skin stayed. She has looked at three clinic pages this month and closed all of them. Write her in a sentence she would actually say. If you cannot, open your inbox, your reviews, or your intake forms and copy ten sentences patients wrote in their own words. The ad borrows those words verbatim. Paraphrase is where brochure voice comes from.

2. What does she already know

Schwartz's five stages. Unaware: she does not think she has a problem, so the ad needs a pattern interrupt or a curiosity hook. Problem aware: she knows the skin bothers her and thinks nothing works, so name the pain plainly. Solution aware: she knows treatments exist but not yours, so show the mechanism, the new way. Product aware: she has seen you and is not convinced, so proof and honesty. Most aware: she is ready and needs the offer, the deposit, the date. One ad serves one stage. An ad that tries to serve all five serves none, and this is where most clinic accounts live: every ad written for the most aware, which is the smallest group.

3. What does she want, and what does she already believe

The procedure is never the desire. Under it is confidence, relief, control, being looked at the way she used to be, not being the mum who gave up. Pick one. Then find the belief she already holds and open on it. Creams did nothing. Lasers burn. Non-invasive is a Groupon. Surgery is too much. You cannot open with a claim she does not believe and expect her to keep watching. Start where she is and move her one step. In a crowded market, and every aesthetics market is crowded, the thing that moves her is a specific mechanism or an honest admission, not a bigger promise.

4. Which framework, which hook, which format

Pick the structure that fits the strongest proof you actually have. Mechanism when the how is the story. Honesty or the physician when trust is the gap. Comparison when she is weighing options. Named area when she has one spot she hates. Never a testimonial you do not have. Then the hook: six words or fewer, specific, direct, and it must fail the anybody's-ad test, meaning it could not run for any business in any city. Then the format: the ad has to look like the thing she scrolls past willingly. A reel that feels like a reel. A static that does not look like a Canva template. Real staff over models. Meta's automatic enhancements switched off, because they make everything look like an ad.

5. What am I testing

The question is never is this ad good. The question is what are we testing, what number proves it, and what do we change next. Three genuinely different concepts first, then three variations of the one that wins. One variable per test. The kill line and the target written before launch, judged on the conversion in your CRM, not on the platform's count. Give the first 72 hours to the learning phase and do not touch it.

6. The two gates

Anti-slop: no phrase over five words borrowed from anyone, no brochure voice, no banned words, zero em dashes, no claim without a number, a mechanism, or an honest scope, and the anybody's-ad test. Two failures is a rewrite. Compliance: nothing on the ad that is not on your page or in a verified source, no cure or guarantee language, no drug brand names on screen, before and afters only if consented and unretouched, financing figures with the example, term, and APR. Every line, every time.

Starter prompts

Paste these as written. They are short on purpose, because the long ones drift.

The prompt: brief my ad

You are briefing one ad for my clinic before anything gets written. Do not write copy until the brief exists. My offer: [procedure, price shape, city, the page it sends to]. Here are [N] sentences my patients wrote in their own words: [paste]. Ask me, one at a time: who is the one person this ad is for (make me answer in a sentence she would say out loud); which of the five awareness stages she is on, unaware, problem aware, solution aware, product aware, most aware, and what that stage needs; the one desire under the procedure and the one belief she already holds that the ad opens on; which framework fits the strongest proof I actually have (mechanism, honesty or physician, comparison, named area) and why; the placement and why the ad must look native there. Then write six hooks of six words or fewer, each specific, direct, and one that could not run for any other business in any city. Reject any hook that fails that test. Finally state the one variable this ad tests, the number that proves it, judged on my CRM lead count not the platform's, and the kill line. Return a one page brief. Rules: no phrase over five words borrowed from any source, no brochure voice, zero em dashes, no claim without a number, a mechanism, or an honest scope, nothing that is not on my page, no cure or guarantee language, no drug brand names. If I have not given you a fact, leave a bracket, never invent one.

The hook gate prompt

Here are [N] hooks for my [procedure] ad: [paste]. For each one: is it six words or fewer, does it name the person, the moment, or the mechanism, does it speak to you directly, does it challenge something she believes, and could it run for any business in any city. Score it, name what is missing, and rewrite it once. Keep her words if I gave you patient sentences. Zero em dashes.

The plateau prompt

Here are my live ads for the last 30 days with their primary text and results: [paste or connected account]. For each ad, name the awareness stage it serves and why. Tell me which stages have no ad. Tell me which ads are fatigued (frequency over 2.5 with a falling click rate) versus aimed at the wrong stage. Recommend the one ad to write next, its stage, the belief it opens on, and three hooks for it.

Layer 2

From a chat window to the account

The brief is thinking, so it works in any chat. The two places the real tools matter are the research that feeds it and the test structure in Ads Manager. These are the settings that change.

Research from what already runs

Before the brief, search the Meta Ad Library for your procedure plus your metro, then three national chains in your category. Sort by how long each ad has been running. Longevity is the winner signal. Note the hook, the stage it serves, the offer shape, the destination. Borrow architecture, never wording.

Ads Manager test settings

One campaign per test, one variable isolated at ad level. Advantage+ creative enhancements off. Optimisation on your real conversion event, not the browser pixel. One primary text and one headline per ad, never multi-text, so you know which words won. Naming: id, format, hook, person, offer, date, and utm_content set to the ad name so your CRM reports by creative.

The plateau check

When cost per lead climbs, list every live ad with the stage it serves. If they are all product aware and most aware, the fix is a problem aware or solution aware ad, not more budget. If frequency is over 2.5 and click rate is falling, that is fatigue, and the fix is a new hook on the same concept.

Give it to your agent, three ways

Same skill, three worlds. Pick the one you actually use. The skill file at the bottom of this page is the instructions in every case.

An agent with connectors (Claude Desktop, Claude Code, Grok Bot)

The brief needs no connector. Give the agent the skill and your ten patient sentences. For the plateau diagnosis, connect the ad account read only through Meta's ads MCP, the same door the audit guide uses.

  1. Claude Desktop or claude.ai: create a Project, paste the brief skill from the bottom of this page as the project instructions, and upload your patient sentences and your offer page text.
  2. Say "brief my ad" and answer the five questions when it asks. It will not write copy until the brief exists.
  3. Optional: add Meta's ads MCP as a connector (Settings, Connectors, Add custom connector, the URL below) with read access, so "which stage is my account missing" runs against live ads instead of your memory.
  4. Grok Bot or any chief of staff: same skill file in its instructions, same trigger.
# read only Meta connector, same as the audit guide
claude mcp add --transport http meta-ads https://mcp.facebook.com/ads

ChatGPT (a project or a custom GPT)

ChatGPT does this well as a Project. There is no first party Meta connector, so the account check runs on an export.

  1. Create a Project. Paste the brief skill as the instructions. Upload a text file of your ten patient sentences and your offer page.
  2. Say "brief my ad for [procedure]". Answer the five questions. Ask for three concepts at three different awareness stages, each with its hook through the gate.
  3. For the plateau check: in Ads Manager export the last 30 days at ad level with spend, frequency, CTR, results, cost per result, and the primary text column. Upload the CSV and ask which awareness stage each ad serves and which stage is missing.

Anything with an API (a token and a curl call)

There is no API for thinking. The only call worth making is the ad level pull for the plateau check, which is the same insights call from the audit guide with the creative body added so the agent can read the hooks.

  1. Use a system user token with ads_read only, stored in an environment variable, never in a prompt.
  2. Pull the last 30 days at ad level with the creative fields so each row carries its primary text and headline.
  3. Feed the JSON to the agent with the skill and ask for the stage each ad serves.
export META_ACCESS_TOKEN=...   # ads_read only
export META_AD_ACCOUNT_ID=1234567890
curl -s "https://graph.facebook.com/v23.0/act_$META_AD_ACCOUNT_ID/ads?fields=name,creative{body,title},insights.date_preset(last_30d){spend,frequency,ctr,actions,cost_per_action_type}&access_token=$META_ACCESS_TOKEN" > ads_with_copy.json

Failure modes

Every one of these has happened to me or to someone I set this up for.

FailureFix
The ad describes the clinicRewrite it as the patient's sentence; the doctor becomes a hand or a name line
Every ad in the account is for the most awareWrite one problem aware and one solution aware ad before adding budget
Opens with a claim she does not believeOpen on the belief she already holds and move her one step
Hook works for any business in any cityName the person, the moment, or the mechanism, or cut it
Copy sounds like a brochurePaste ten patient sentences and borrow them verbatim
Ad looks like an ad, enhancements onNative format, real staff, enhancements off
Judged the test by feel on day twoKill line written before launch, hands off 72 hours, judge on CRM count
Rising cost per lead read as saturationList the stage each ad serves; fill the missing one
Monthly payment on the ad with no termsExample, term, APR, subject to eligibility, or remove the figure

The tools I use for this

ToolWhat it is for here
ClaudeWhere the brief gets written and the hooks get graded.Open
Meta Ad LibraryFree. Where I read what already runs in the category before writing anything.no link, just use it
Meta Ads ManagerWhere the test is structured, one variable at a time, enhancements off.no link, just use it
GoHighLevelThe inbox the patient sentences come from, and the lead count the test is judged on.Get it
NotebookLMWhere I keep the research on clinic ads and ask it questions instead of rereading.Open
Some links are affiliate links. I only recommend tools I run in my own accounts.

The free skill

It makes the agent refuse to write an ad until the brief exists. It asks the five questions in order, places the person on one of the five awareness stages, names the dominant desire and the belief the ad opens on, picks a framework that fits the strongest proof you actually have, runs every hook through the gate, applies the native test and the compliance lines, and returns a one page brief with the single variable being tested and the kill line written before launch.

How to use it: copy the whole thing, paste it into your bot (or save it as a skill file if you use Claude Code), and say “brief my ad”. It walks you through the rest. Works with any agent that can read your files.
what-makes-a-good-facebook-ad.md
---
name: what-makes-an-ad-good
description: Refuses to write a clinic ad until a one page brief exists. Asks five questions in order (the one person, her awareness stage, the desire and the belief the ad opens on, the framework and native format, the single variable being tested), grades every hook through a gate, applies the anti-slop and compliance lines, and writes the kill line before launch. Also diagnoses a plateaued account by the awareness stage each live ad serves. Trigger on "brief my ad", "why is this ad not working", "which stage is my account missing", "grade these hooks".
---

# The Ad Brief

You are briefing one ad for a clinic, med spa, IV bar, or aesthetics practice. You do not
write copy, render an image, or suggest a budget until the brief below exists. If the
human asks for an ad first, say the brief comes first and start question one.

Never invent a fact, a price, a review, a statistic, or a patient story. If a fact is
missing, leave a bracket like [price] and say what is missing.

## The five questions, in order, one at a time

### 1. Who is this one person
Not a demographic. One patient in one moment. Make the human answer in a sentence she
would say out loud ("I lost the weight and the skin stayed"). If they have patient
sentences from the inbox, reviews, or intake forms, read them first and pick the person
from those. Her words are borrowed verbatim later. Paraphrase is where brochure voice
comes from.

### 2. Which awareness stage is she on
Eugene Schwartz's five stages. State the stage and what that stage needs:
- Unaware: does not think she has a problem. Needs a pattern interrupt or curiosity.
- Problem aware: knows the skin, the fat, the lines bother her; thinks nothing works.
  Needs the pain named plainly.
- Solution aware: knows treatments exist, not yours. Needs the mechanism, the new way.
- Product aware: has seen the clinic, not convinced. Needs proof and honesty.
- Most aware: ready. Needs the offer, the deposit, the date.
One ad serves one stage. Most clinic accounts have only most aware ads. Say so if you
see it.

### 3. The desire and the belief
The procedure is never the desire. Name the one desire under it (confidence, relief,
control, being looked at the way she used to be). Then name the belief she already holds
that the ad opens on ("creams did nothing", "lasers burn", "surgery is too much"). The
ad starts where she is and moves her one step. Never open with a claim she does not
believe.

### 4. Framework, hook, format
Framework by the strongest proof the clinic actually has:
- Mechanism: the how is the story.
- Honesty or physician: trust is the gap. Publish the downtime, say results vary.
- Comparison: she is weighing options.
- Named area: she has one spot she hates.
- Never a testimonial or before and after the clinic does not have, consented and
  unretouched.

Write six hooks, six words or fewer. Each must be specific, speak to "you", and fail
the anybody's-ad test: if it could run for any business in any city, reject it and say
why. Prefer her sentence over yours.

Format: name the placement and what native looks like there. Real staff over models.
Meta automatic enhancements off. A static must not look like a template. A reel must
feel like a reel.

### 5. What is being tested
The question is never "is this ad good". State the one variable this ad isolates, the
number that proves it (judged on the CRM lead count, never the platform's), the target
cost per lead if the human gives one, and the kill line. Three different concepts first,
then three variations of the winner. Hands off for the first 72 hours.

## The two gates (run on every line before returning)

Anti-slop, two failures is a rewrite:
- No phrase over five words borrowed from any source.
- No brochure voice ("we offer", "state of the art", "conveniently located").
- No banned words: game-changer, unlock, elevate, seamless, holistic, journey, empower,
  transformative, cutting-edge, revolutionary.
- Zero em dashes anywhere.
- No claim without a number, a mechanism, or an honest scope.
- Anybody's-ad test.

Compliance, every line:
- Nothing on the ad that is not on the clinic's page or in a verified source.
- No cure, treat, guarantee, or prevent-illness language. No drug brand names on screen.
- No FDA wording beyond the exact clearance the clinic can show.
- Before and after only if consented, unretouched, same lighting, with "individual
  results vary". Never generated.
- Any monthly payment carries an example, the term, the APR, and "subject to
  eligibility".

## Output: the one page brief

```
PERSON: her sentence
STAGE: one of five, and what it needs
DESIRE: one
OPENS ON: the belief she already holds
FRAMEWORK: which, and the proof it rests on
HOOKS: six, each with pass or fail and why
FORMAT: placement, native notes, enhancements off
TEST: the variable, the proving number, the kill line, the hands-off window
MISSING FACTS: brackets the human must fill
```

## Plateau mode

If the human gives you live ads (connected read only, an export, or pasted primary
text and results): for each ad name the awareness stage it serves and why. List the
stages with no ad. Separate fatigue (frequency over 2.5 with a falling click rate,
fix is a new hook on the same concept) from wrong stage (fix is a new ad at the missing
stage). Recommend the one ad to write next, its stage, its opening belief, and three
hooks. Never grade an ad you cannot see the copy of; say so instead.

What done looks like at thirty days

  • Every live ad has a written brief filed next to it
  • You can name the one person and the stage for each ad without opening it
  • Ten verbatim patient sentences live in a file your agent reads
  • At least three awareness stages have a live ad
  • Every test has one variable and a kill line written before launch
  • You have not said the market is saturated once

Want the brief written against your offer, with the ads rendered from it?

Inside the AI CEO Lab the Demand Engine module walks this brief on your own offer, then hands it to the ad brain that renders the slate and grades it before anything launches.

Pick a side.

Most people read this and forget it by Friday.

The other kind builds the thing that week. They stop needing free guides, because they are too busy running actual systems.

Free guides stay free. The room is where the builds happen.