Ad teardown
Break a live ad into hook, offer, CTA and awareness stage — the tagging behind teardown of 724 ads across 37 brands.
Matthew Berman had Jev break down 724 live ads from 37 brands in about 40 seconds for 9 cents of tokens — every hook, format, offer, CTA, awareness stage and landing-page mismatch. It doesn't write a report first; it turns 724 ads into data you can filter and compare.
Try it live
This is the real thing, not a mockup. Edit the input, hit Run, and Jev returns every typed answer in one round trip — free, no signup. Now picture the same call fired across thousands of items in parallel.
Pick a demo, tweak the input, and hit Run Jev.
The decisions Jev makes
In a single call, Jev evaluates each of these — in parallel, against the same input:
What is the primary hook style?
picks one of these options:
problem_agitate— names a pain the reader feelsquestion— opens with a questionbold_claim— a big/contrarian claimsocial_proof— leads with proof or numbersoffer— leads with the deal itself
What customer awareness stage does this ad target (Schwartz)?
rates it on an ordered scale:
- unaware
- problem-aware
- solution-aware
- product-aware
- most-aware
What is the main offer?
picks one of these options:
free_trial— a free trialdiscount— a discount or price cutlead_magnet— a free download/resourcedemo— a demo or callnone— no explicit offer
Is there a single, clear call to action?
returns a calibrated yes/no probability.
Does the ad reduce sign-up friction (e.g. free, no card, fast)?
returns a calibrated yes/no probability.
The exact request
This is the real payload behind the live demo — copy it, change the state, and you're building:
{
"model": "jev-latest",
"state": "Facebook ad creative:\n\nHeadline: \"Still doing your books in a spreadsheet?\"\nPrimary text: \"Founders waste 6 hrs/week on bookkeeping. Our AI does it in 10 minutes. Try free for 30 days — no card needed.\"\nCTA button: \"Sign Up\"\nImage: split screen of a messy spreadsheet vs a clean dashboard.",
"questions": {
"hook": {
"type": "choice",
"instructions": "What is the primary hook style?",
"criteria": {
"problem_agitate": "names a pain the reader feels",
"question": "opens with a question",
"bold_claim": "a big/contrarian claim",
"social_proof": "leads with proof or numbers",
"offer": "leads with the deal itself"
}
},
"awareness": {
"type": "score",
"instructions": "What customer awareness stage does this ad target (Schwartz)?",
"criteria": [
"unaware",
"problem-aware",
"solution-aware",
"product-aware",
"most-aware"
]
},
"offer_type": {
"type": "choice",
"instructions": "What is the main offer?",
"criteria": {
"free_trial": "a free trial",
"discount": "a discount or price cut",
"lead_magnet": "a free download/resource",
"demo": "a demo or call",
"none": "no explicit offer"
}
},
"clear_cta": {
"type": "noul",
"instructions": "Is there a single, clear call to action?"
},
"friction_low": {
"type": "noul",
"instructions": "Does the ad reduce sign-up friction (e.g. free, no card, fast)?"
}
}
}Wire it into your code
Read the typed answers and branch in plain code — no parsing. Auto-handle the high-confidence cases and route the uncertain ones to a bigger model or a human. It's one API call and output is free, so ask every question you need at once.
Build your own
Every scenario above is a single API call. Try any of them free in the playground, then get a hosted key to ship it — no waitlist.