Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user needs to research and define paid ad audiences before a campaign launches: target profile, interest and behavior mapping per platform, audience sizing, cold/warm/hot tiering, lookalike seeds, and targeting hypotheses to test. Trigger on 'audience research', 'target audience', 'interest targeting', 'audience for campaign', 'who should I target', 'Meta audience', 'TikTok audience', or 'lookalike seed'.
.claude/skills/minhnv0807-51-audience-research-global/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 9 |
| gemini-3.1-pro-preview | 100% | 2 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 88% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 80% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 108% | 0% |
Wrong targeting burns budget no matter how good the copy or creative is. This is the first step of the performance chain: 51 -> 10-reverse-kpi-global -> 54-media-plan-global -> 53-tracking-setup-global -> 52-account-structure-global. If there is no customer insight yet, run 09-customer-insight-global first.
Read .agents/product-marketing-context-global.md and any output from 09-customer-insight-global. If information is missing, ask up to 4 questions:
10-reverse-kpi-global.references/benchmarks-global.md, Tier 1 markets (US, Canada, Australia, Western EU) run 6-7x the CPM of Tier 2 (SEA, LATAM). US Meta CPM sits at $15-25 vs $2-6 in Brazil/LATAM. Decide the market before debating interest stacks.Build from real data (CRM, analytics, order history, platform audience insights) plus 09-customer-insight-global:
| Field | Detail | |-------|--------| | Age | primary band + secondary band] | | Gender | actual split from data, not assumption] | | Markets | countries/regions you can actually ship to or serve] | | Market tier | Tier 1 (US/CA/AU/W.EU) / Tier 2 (SEA/LATAM) / mixed | | Income / budget band | must match the price point] | | Job or role | primary segment; required for B2B] | | Primary device | Mobile / Desktop / Both | | Language | ad language per market] |
For B2B, add company size, industry, seniority, and buying committee role.
Only build blocks for platforms that will actually run. Each block should be paste-ready into the ads manager.
references/benchmarks-global.md — validate the economics with 10-reverse-kpi-global before committing.| Tier | Definition | Signal | Source | |------|-----------|--------|--------| | Hot | Landing page visit, add to cart, checkout started, form opened, open sales conversation | Pixel/CAPI events, CRM | Meta, Google, TikTok, CRM | | Warm | Video watched >50%, page or post engagement, link click, follow, email opened | Engagement custom audiences, ESP segments | Meta, TikTok, email platform | | Cold | Does not know the brand | Interest, behavior, broad, lookalike, search intent | All platforms |
Rule: cold and warm/hot must live in separate campaigns with different messages (see 56-retargeting-plan-global). Always exclude warm and hot from cold campaigns so the data stays clean.
| Seed | Minimum seed size | Lookalike % | Platform | Purpose | |------|------------------:|-------------|----------|---------| | Past purchasers | >= 100 | 1-3% | Meta | Find people like the best customers | | Qualified leads | >= 500 | 1-5% | Meta | Scale lead generation | | Video viewers 75% | >= 1000 | Broad | TikTok | Scale awareness | | Email / CRM list | >= 300 | 1-5% | Meta, Google Customer Match | Extend from first-party data |
Seed quality beats seed size: purchasers outperform leads, leads outperform viewers. Do not build a lookalike from a seed below the minimum. Any uploaded customer list must have marketing consent on record — see the consent section in 53-tracking-setup-global.
One line each, in the form "If we target X], then metric] will Y], because Z]". Hand these to 19-ab-test-setup-global and 52-account-structure-global.
| # | Hypothesis | Test variable | Metric | Priority | |---|-----------|---------------|--------|----------| | 1 | Broad plus strong creative is cheaper than a manual interest stack | Broad vs interest | CPA | High | | 2 | Interest theme A] sits closer to the pain than theme B] | Interest A vs B | CPA, CTR | High | | 3 | 1% purchaser lookalike converts better than 3% | Lookalike % | CPA, close rate | Medium | | 4 | Market X] delivers acceptable CPA despite higher CPM | Geo split | CPA, ROAS | Medium | | 5 | Age segment] converts better | Age split | CPA | Low |
Maximum 3-5 test ad sets at once. More than that splits budget too thin to reach a conclusion.
File name: audience-research-[product]-[YYYYMMDD].md
markdown# Audience Research — [Product] Date: [YYYY-MM-DD] · Platforms: [list] · Markets: [countries] · Objective: [Lead/Conversion] ## 1. Core audience profile | Age | Gender | Markets | Tier | Income band | Role | Device | Language | ## 2. Psychographics and behavior - Pain points: [3-5, customer wording] - Motivation: [gain / avoid] - Purchase context: [payment, reviews, returns, subscription] - Online behavior: [platforms, peak hours, preferred formats] ## 3. Targeting settings per platform ### Meta: [age/gender/geo/interest themes/behaviors/exclusions/Advantage+ control] ### Google: [...] · TikTok: [...] · LinkedIn: [...] · Pinterest: [...] ## 4. Audience tiers | Tier | Audience | Signal | Campaign that uses it | ## 5. Lookalike and seed audiences | Seed | Size | Lookalike % | Platform | Purpose | Consent status | ## 6. Targeting hypotheses (hand to A/B test) | # | Hypothesis | Variable | Metric | Priority | ## 7. Sizing and overlap notes - Estimated reach per ad set: [number] - Days of spend the pool supports at planned budget: [number] - Overlaps to avoid: [audiences likely to collide] - Regional CPM expectation per `references/benchmarks-global.md`: [range]
55-scaling-ads-global). Losing audiences get a written reason so nobody retests the same thing.09-customer-insight-global: run first — supplies insight, pain, and customer language.08-competitor-research-global: see who competitors target and with which angles (ad libraries).10-reverse-kpi-global: max CPA and budget before planning.54-media-plan-global: turns this audience map into channel and budget allocation.52-account-structure-global: turns targeting settings into ad set structure.56-retargeting-plan-global: detailed warm/hot tiering and messaging.references/benchmarks-global.md| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 51,274 | 34,628 | -32% | 1 | 1 | 0% | 8,340 | 7,705 | -8% | 0 | 0 | — |
case-02 | fail→pass | 52,898 | 40,738 | -23% | 1 | 1 | 0% | 8,323 | 8,510 | +2% | 0 | 0 | — |
case-03 | fail→fail | 46,960 | 23,485 | -50% | 1 | 1 | 0% | 8,298 | 6,840 | -18% | 0 | 0 | — |
case-04 | pass→pass | 17,474 | 23,393 | +34% | 1 | 1 | 0% | 2,835 | 5,612 | +98% | 0 | 0 | — |
case-05 | fail→pass | 15,245 | 14,200 | -7% | 1 | 1 | 0% | 2,573 | 4,845 | +88% | 0 | 0 | — |
case-06 | pass→pass | 12,276 | 11,196 | -9% | 1 | 1 | 0% | 1,877 | 4,047 | +116% | 0 | 0 | — |
case-07 | pass→pass | 10,124 | 10,763 | +6% | 1 | 1 | 0% | 1,712 | 4,241 | +148% | 0 | 0 | — |
case-08 | fail→pass | 14,473 | 19,644 | +36% | 1 | 1 | 0% | 2,379 | 6,060 | +155% | 0 | 0 | — |
case-09 | pass→pass | 15,465 | 9,888 | -36% | 1 | 1 | 0% | 2,648 | 4,298 | +62% | 0 | 0 | — |
case-10 | fail→pass | 14,207 | 11,406 | -20% | 1 | 1 | 0% | 2,541 | 4,565 | +80% | 0 | 0 | — |
case-11 | pass→pass | 17,980 | 14,955 | -17% | 1 | 1 | 0% | 2,873 | 4,820 | +68% | 0 | 0 | — |
case-12 | fail→pass | 19,458 | 24,640 | +27% | 1 | 1 | 0% | 3,191 | 6,651 | +108% | 0 | 0 | — |
case-13 | pass→pass | 15,266 | 15,569 | +2% | 1 | 1 | 0% | 2,366 | 4,966 | +110% | 0 | 0 | — |
case-14 | pass→pass | 11,520 | 12,857 | +12% | 1 | 1 | 0% | 1,984 | 4,542 | +129% | 0 | 0 | — |
case-15 | fail→pass | 11,723 | 10,652 | -9% | 1 | 1 | 0% | 1,822 | 4,089 | +124% | 0 | 0 | — |
case-21 | pass→fail | 14,436 | 21,638 | +50% | 1 | 1 | 0% | 2,944 | 6,505 | +121% | 0 | 0 | — |
case-16 | fail→pass | 11,204 | 8,111 | -28% | 1 | 1 | 0% | 1,839 | 3,815 | +107% | 0 | 0 | — |
case-17 | pass→pass | 17,760 | 13,474 | -24% | 1 | 1 | 0% | 2,620 | 4,809 | +84% | 0 | 0 | — |
case-18 | pass→pass | 12,696 | 11,078 | -13% | 1 | 1 | 0% | 1,971 | 4,170 | +112% | 0 | 0 | — |
case-19 | fail→pass | 11,348 | 8,421 | -26% | 1 | 1 | 0% | 2,006 | 3,951 | +97% | 0 | 0 | — |
case-20 | fail→pass | 17,757 | 14,340 | -19% | 1 | 1 | 0% | 2,723 | 4,867 | +79% | 0 | 0 | — |
case-22 | fail→fail | 16,942 | 18,530 | +9% | 1 | 1 | 0% | 3,973 | 6,825 | +72% | 0 | 0 | — |
case-23 | fail→fail | 12,455 | 14,680 | +18% | 1 | 1 | 0% | 1,989 | 4,858 | +144% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +35 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.