We've written ad copy with LLMs every day for two years. The models are dramatically better than they were in 2023. They are also still capable of producing a 15-headline batch where every line begins with "Get" or "Discover" and every description ends with "Schedule today!"
The difference between useful AI copy and obvious AI copy is mostly in the prompt and the editing pass. Almost none of it is in the model.
The mistake everyone makes first
The first version of the prompt looks something like:
Write 15 Google Ads headlines for a roofing company in Long Beach.
The output is generic because the input is generic. The model has nothing to work with except "roofing company" and "Long Beach," so it generates the average roofing-company-in-Long-Beach copy. That copy reads exactly like every other roofing ad on the auction.
The fix is not to tweak the prompt. The fix is to give the model the same context you'd give a copywriter on day one.
What we feed the model
For every account, we maintain a single document — a brand brief — that the model gets at the start of every session. It contains:
- The business name, service lines, and service areas
- The owner's voice in 3–4 sample sentences (transcribed from a phone call)
- The 5 things that actually differentiate this business from competitors (warranty length, response time, uniformed crews, financing, family-owned, whatever)
- The 5 customer pains we've heard most often in calls and reviews
- A "do not use" list of phrases the brand avoids
Then the prompt gets specific:
Using the brand brief above, write 15 Google Ads search headlines for the keyword "AC repair Long Beach." Each headline must be 30 characters or fewer. Use the customer pain language from the brief. Do not start more than two headlines with the same word. Do not use any phrase from the "do not use" list. Include the city name in at least 5 headlines. Include a specific number (years in business, response time, etc.) in at least 5 headlines.
The constraints do most of the work. They force the model away from defaults.
The editing pass
Even with a good prompt, you don't ship the first batch. You print the 15 headlines, kill 5–7, rewrite 3, and keep the rest. This pass takes 10 minutes and is the difference between AI-flavored copy and copy that wins clicks.
Watch for these tells:
- "Discover," "Unlock," "Elevate," "Transform" — all dead on arrival.
- Three-noun phrases ("Quality, Service, Trust") — dead on arrival.
- Generic CTAs ("Call Today!", "Schedule Now!") — only one of these per ad, max.
- Em dashes used like an LLM uses them — sprinkled into every line. One per ad if the rhythm needs it. Not three.
- Weasel words ("might," "could," "potentially") — confidence sells, hedging doesn't.
If a headline could appear in any ad in the same vertical, cut it. The whole point of using an LLM is to generate volume so you can pick the 7 that are actually about this business.
A workflow that scales
For a multi-account agency, we run this:
- Once per quarter, update each account's brand brief. Pull recent reviews, recent call transcripts, recent customer emails. Refresh the customer pain list.
- Once per month, generate fresh asset variations for each campaign. Use the brief plus the constraints above.
- Each week, look at the live ad asset report. Identify Low-rated assets. Generate replacements with the model, focusing on whatever angle the existing creative wasn't covering.
- Edit. Always edit. Never paste the raw output into Google Ads.
The whole loop takes maybe 4 hours a month per account, versus 8–10 hours a month if you wrote everything from scratch. The compounding wins come from never running out of fresh creative for PMax.
The tools we use
We bounce between two models for copy:
- Claude Sonnet for first drafts. It's better at sticking to constraints (character counts, banned phrases) and better at imitating a brand voice once you give it samples.
- ChatGPT for variation. When we have a headline that works and we want 10 close-but-different versions, ChatGPT spreads wider.
Neither replaces a copywriter. Both replace the blank page.
What this is and isn't
Using an LLM for ad copy is not "AI is writing my ads." It's a system where you do the strategic work — knowing the customer, knowing the business, knowing what's true and provable — and the model does the typing. The output is only as good as the strategy you put in. That part hasn't changed since 2014.
What's new is that the typing now takes 1/10th the time. If you're still writing every headline by hand, you're spending hours on a task that the model handles in minutes — and you're shipping less creative variety than the platforms reward.