← Run 20260904-151257-1cd41651
Constraint-dense 2x2 Meta creative experiment
task factorial-ad-testSep 4, 2026skill ad-creativeskill analytics

Answers & verdicts

Gemini 3.8 Flash high effort

Task passed
Task the exact prompt the model was given — assignment, source material, and skill guidance
Design a draft-only 2x2 Meta feed creative experiment for the Arc Clip Lamp. Cross exactly two audiences (Renters, Makers) with exactly two appeals (Surface-space saving, Lighting control), producing exactly four cells A-D and every audience/appeal combination once. For each cell label Audience, Appeal, Headline, Primary text, Visual direction, CTA, and Creative rationale. Use exactly the CTA 'Explore the Arc Clip Lamp'. Vary only the assigned audience language and the assigned appeal's supported message and visual; hold the product identity, offer, copy/visual format, placement, run dates, and measurement rules constant. Reserve a maximum budget of $4,800 equally as a $1,200 cap per cell over 14 days. Primary KPI: landing-page-view rate, defined as landing-page views divided by link clicks. Guardrail: cost per AddToCart. Stop any cell after $300 spend with zero AddToCart; unused budget remains unspent and is not reallocated. If any cell stops, the final result is inconclusive. Otherwise, declare a winner only when it has at least a 15% relative landing-page-view-rate lift versus the click-weighted pooled rate of the other three cells (their total landing-page views divided by their total link clicks), after every cell has at least 200 link clicks; if that full rule is not met, declare the test inconclusive. Include a labeled Execution rules section that makes the constants, budget caps, stop consequence, KPI, guardrail, win rule, and inconclusive rule explicit. Include a separate labeled Preregistered hypotheses section with exactly three directional hypotheses on landing-page-view rate: the audience main effect, the appeal main effect, and the audience-by-appeal interaction. Do not invent prior performance or product proof. --- ## Supplied source: product-marketing.md # Cedar & Coil Cedar & Coil is a fictional direct-to-consumer brand for people who work or make things in compact spaces. Its first product is the Arc Clip Lamp, a rechargeable task light designed to move between a desk, shelf, and bedside. The approved positioning is adaptable light without surrendering permanent surface space. The voice is practical, warm, and visually specific—not luxury, medical, or productivity-maximizing. All campaign work must remain draft-only. Do not invent reviews, awards, scarcity, environmental claims, performance guarantees, or customer results. --- ## Supplied source: facts.md # Authoritative synthetic facts - Product: Arc Clip Lamp. - Price: $68. - Included: lamp, padded clamp, USB-C charging cable, and storage sleeve. - Lighting: three brightness settings and two color-temperature settings. - Battery statement allowed: up to eight hours on the lowest brightness. - Clamp opening: surfaces up to 2.25 inches thick. - Audience: renters, students, and makers with limited desk or counter space. - Approved CTA: Explore the Arc Clip Lamp. - No campaign has launched and no performance data exists. --- ## Skill guidance you should follow --- name: ad-creative description: "Generate and iterate ad creative at scale — RSA headlines, Meta/TikTok copy, static ad batches, iMessage and motion video ads, review pages. Test hypotheses must be falsifiable — name the metric, comparison, and expected direction." metadata: version: 2.9.1 --- # Ad Creative You are an expert performance creative strategist. Your goal is to generate high-performing ad creative at scale — headlines, descriptions, and primary text that drive clicks and conversions — and iterate based on real performance data. ## Before Starting **Check for product marketing context first:** If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task. **Apply the project's brand:** If `BRAND.md` exists, read it before asking questions and apply it to everything you produce — its voice, messaging, and audience for anything written, and its colors, typography, and logo for anything visual. Never ask for a brand fact it already answers. If it lacks something you need, name the missing fact instead of inventing one or quietly falling back to a generic default. Gather this context (ask if not provided): ### 1. Platform & Format - What platform? (Google Ads, Meta, LinkedIn, TikTok, Twitter/X) - What ad format? (Search RSAs, display, social feed, stories, video) - Are there existing ads to iterate on, or starting from scratch? ### 2. Product & Offer - What are you promoting? (Product, feature, free trial, demo, lead magnet) - What's the core value proposition? - What makes this different from competitors? ### 3. Audience & Intent - Who is the target audience? - What stage of awareness? (Problem-aware, solution-aware, product-aware) - What pain points or desires drive them? ### 4. Performance Data (if iterating) - What creative is currently running? - Which headlines/descriptions are performing best? (CTR, conversion rate, ROAS) - Which are underperforming? - What angles or themes have been tested? ### 5. Constraints - Anything to avoid beyond what `BRAND.md` already states? - Compliance requirements? (Industry regulations, platform policies) - Any mandatory elements? (Brand name, trademark symbols, disclaimers) --- ## How This Skill Works This skill supports four modes: ### Mode 1: Generate from Scratch When starting fresh, you generate a full set of ad creative based on product context, audience insights, and platform best practices. ### Mode 2: Iterate from Performance Data When the user provides performance data (CSV, paste, or API output), you analyze what's working, identify patterns in top performers, and generate new variations that build on winning themes while exploring new angles. The core loop: ``` Pull performance data → Identify winning patterns → Generate new variations → Validate specs → Deliver ``` ### Mode 3: Scaled Static Batches (Grounded) For recurring static ad production at volume (e.g., 50 concepts per batch), work from a **grounded inputs corpus** and the [static ad template library](references/static-ad-templates.md). Every concept must trace to real source material — see "Grounded Inputs" below. To run this on a daily or weekly cadence, see the daily-creative-drop loop in **marketing-loops**. To present a batch for client or stakeholder approval, produce a [creative review page](references/creative-review-page.md). ### Mode 4: Creative Strategy Loop For deciding **which ads are worth making before making them**: synthesize three signal sources (account performance, customer language, external organic) into evidence-ranked concepts, branch the creative mix on account state (exploration vs. scaling), maintain a capacity-checked roadmap with production tiers, and run a monthly retro that feeds the next slate. The full system lives in [references/creative-roadmap.md](references/creative-roadmap.md); for hook generation and funnel-stage diagnosis inside any mode, load [references/hook-system.md](references/hook-system.md). --- ## Grounded Inputs Most AI ad generation fails on input grounding, not output quality: ungrounded generation produces plausible-sounding ads based on training data, not on what converts for this brand. For scaled production (Mode 3), maintain a durable inputs corpus: ``` inputs/ winning-ads/ 10-20 screenshots of the highest-performing ads from the last 90 days reviews/ 50-100 customer reviews (Trustpilot, G2, Amazon, App Store) as .md/.txt comments/ Top comments from existing ad campaigns — objections, unprompted praise, customer-raised angles brand/ Brand voice doc, hex codes, logo, product/screenshot assets outputs/ Dated batch folders (outputs/YYYY-MM-DD/) ``` **Why each input matters:** - **Winning ads** carry the hooks, structures, and angles already proven for this brand - **Reviews** carry the exact language buyers use for pain, transformation, and unexpected benefits — pull copy from them verbatim rather than paraphrasing - **Ad comments** are the most-skipped and highest-value input: objections ("but does it work for X?") become FAQ Card ads, and unprompted praise surfaces angles you didn't write **Grounding rules:** - Every concept cites its source (which review, winning ad, or comment it traces to) - No invented claims, stats, or testimonials — ever - If `inputs/winning-ads/` or `inputs/reviews/` is empty, stop and ask the user to populate it before generating. Do not generate ungrounded concepts as a fallback. - Inputs decay: refresh `inputs/winning-ads/` as new ads scale; refresh `inputs/reviews/` and `inputs/comments/` monthly --- ## Platform Specs Platforms reject or truncate creative that exceeds these limits, so verify every piece of copy fits before delivering. ### Google Ads (Responsive Search Ads) | Element | Limit | Quantity | |---------|-------|----------| | Headline | 30 characters | Up to 15 | | Description | 90 characters | Up to 4 | | Display URL path | 15 characters each | 2 paths | **RSA rules:** - Headlines must make sense independently and in any combination - Pin headlines to positions only when necessary (reduces optimization) - Include at least one keyword-focused headline - Include at least one benefit-focused headline - Include at least one CTA headline ### Meta Ads (Facebook/Instagram) | Element | Limit | Notes | |---------|-------|-------| | Primary text | 125 chars visible (up to 2,200) | Front-load the hook | | Headline | 40 characters recommended | Below the image | | Description | 30 characters recommended | Below headline | | URL display link | 40 characters | Optional | ### LinkedIn Ads | Element | Limit | Notes | |---------|-------|-------| | Intro text | 150 chars recommended (600 max) | Above the image | | Headline | 70 chars recommended (200 max) | Below the image | | Description | 100 chars recommended (300 max) | Appears in some placements | ### TikTok Ads | Element | Limit | Notes | |---------|-------|-------| | Ad text | 80 chars recommended (100 max) | Above the video | | Display name | 40 characters | Brand name | ### Twitter/X Ads | Element | Limit | Notes | |---------|-------|-------| | Tweet text | 280 characters | The ad copy | | Headline | 70 characters | Card headline | | Description | 200 characters | Card description | For detailed specs and format variations, see [references/platform-specs.md](references/platform-specs.md). --- ## Generating Ad Visuals **For static ad structure**, use the 15-template library in [references/static-ad-templates.md](references/static-ad-templates.md) — layout frameworks (Us vs. Them, Stat Callout, Review Card, Before/After, Founder Message, FAQ Card, and more) with copy slots, DTC and SaaS examples, and per-concept output format. Cycle through all 15 rather than clustering on favorites: template diversity is angle diversity. **For iOS-native reveal video ads** — iMessage chat reveals (scripted thread unfolds bubble-by-bubble: screenshot hook → friend asks "what app is that?" → brand + promo code reveal → end card), ChatGPT reveals (typed question → streaming answer), Apple Notes reveals (a confessional note typed live), and AirDrop reveals (an incoming share where the accept-tap is the reveal) — see [references/imessage-video-ads.md](references/imessage-video-ads.md) for surface selection, the six concept angles, script and pacing rules, production routes (off-the-shelf, Playwright + ffmpeg pipeline, Remotion), craft details that sell the illusion, and the grounding/compliance rules for dramatized conversations (strictest for fabricated AI answers). **For faceless motion-style video ads** — fully generated 15–45s concept/explainer videos (styled poster stills → image-to-video "living" motion → TTS narration → word-timed captions; roughly $3–6 and ~15 minutes per finished video) — see [references/motion-video-ads.md](references/motion-video-ads.md) for the provider-agnostic pipeline, a nine-style visual library with fill-in prompt formulas — five characterful looks (screen-print collage, flat vector explainer, papercraft diorama, pop-art comic, claymation) plus four brand-flexible token-driven styles (monoline editorial, Swiss typographic, wireglow, duotone screenprint) driven by a brand-slots contract (FIELD / INK / ACCENT / TYPE FEEL) — the motion prompt formula, and hard-earned QC gotchas (maker-hands intrusion, final-two-seconds drift, caption/label collision, TTS/whisper sound-alikes). For image and video generation tools, see [references/generative-tools.md](references/generative-tools.md) for the complete guide covering: - **Image generation** — Nano Banana Pro (Gemini), Flux, Ideogram for static ad images - **Video generation** — Veo, Kling, Runway, Sora, Seedance, Higgsfield for video ads - **Voice & audio** — ElevenLabs, OpenAI TTS, Cartesia for voiceovers, cloning, multilingual - **Code-based video** — Remotion for templated, data-driven video at scale - **Platform image specs** — Correct dimensions for every ad placement - **Cost comparison** — Pricing for 100+ ad variations across tools **Recommended workflow for scaled production:** 1. Generate hero creative with AI tools (exploratory, high-quality) 2. Build Remotion templates based on winning patterns 3. Batch produce variations with Remotion using data feeds 4. Iterate — AI for new angles, Remotion for scale --- ## Generating Ad Copy ### Step 1: Define Your Angles Before writing individual headlines, establish 3-5 distinct **angles** — different reasons someone would click. Each angle should tap into a different motivation. **Common angle categories:** | Category | Example Angle | |----------|---------------| | Pain point | "Stop wasting time on X" | | Outcome | "Achieve Y in Z days" | | Social proof | "Join 10,000+ teams who..." | | Curiosity | "The X secret top companies use" | | Comparison | "Unlike X, we do Y" | | Urgency | "Limited time: get X free" | | Identity | "Built for [specific role/type]" | | Contrarian | "Why [common practice] doesn't work" | ### Step 2: Generate Variations per Angle For each angle, generate multiple variations. Vary: - **Word choice** — synonyms, active vs. passive - **Specificity** — numbers vs. general claims - **Tone** — direct vs. question vs. command - **Structure** — short punch vs. full benefit statement ### Step 3: Validate Against Specs Before delivering, check every piece of creative against the platform's character limits. Flag anything that's over and provide a trimmed alternative. ### Step 4: Organize for Upload Present creative in a structured format that maps to the ad platform's upload requirements. --- ## Iterating from Performance Data When the user provides performance data, follow this process: ### Step 1: Analyze Winners Look at the top-performing creative (by CTR, conversion rate, or ROAS — ask which metric matters most) and identify: - **Winning themes** — What topics or pain points appear in top performers? - **Winning structures** — Questions? Statements? Commands? Numbers? - **Winning word patterns** — Specific words or phrases that recur? - **Character utilization** — Are top performers shorter or longer? ### Step 2: Analyze Losers Look at the worst performers and identify: - **Themes that fall flat** — What angles aren't resonating? - **Common patterns in low performers** — Too generic? Too long? Wrong tone? ### Step 3: Generate New Variations Create new creative that: - **Doubles down** on winning themes with fresh phrasing - **Extends** winning angles into new variations - **Tests** 1-2 new angles not yet explored - **Avoids** patterns found in underperformers ### Step 4: Document the Iteration Track what was learned and what's being tested: ``` ## Iteration Log - Round: [number] - Date: [date] - Top performers: [list with metrics] - Winning patterns: [summary] - New variations: [count] headlines, [count] descriptions - New angles being tested: [list] - Angles retired: [list] ``` --- ## Writing Quality Standards ### Headlines That Click **Strong headlines:** - Specific ("Cut reporting time 75%") over vague ("Save time") - Benefits ("Ship code faster") over features ("CI/CD pipeline") - Active voice ("Automate your reports") over passive ("Reports are automated") - Include numbers when possible ("3x faster," "in 5 minutes," "10,000+ teams") **Avoid:** - Jargon the audience won't recognize - Claims without specificity ("Best," "Leading," "Top") - All caps or excessive punctuation - Clickbait that the landing page can't deliver on - Shortened or nicknamed product names — use the exact product name the brief gives, in every field of every concept, unless a short form is explicitly approved ### Descriptions That Convert Descriptions should complement headlines, not repeat them. Use descriptions to: - Add proof points (numbers, testimonials, awards) - Handle objections ("No credit card required," "Free forever for small teams") - Reinforce CTAs ("Start your free trial today") - Add urgency when genuine ("Limited to first 500 signups") ### Test Hypotheses That Can Lose When a concept ships with a test hypothesis, write one that a result can prove wrong. "This will resonate with renters" cannot lose; "beats the control on CTR among renters" can. - Name the metric (CTR, CVR, CPA, thumb-stop rate) and the comparison — against which control or sibling concept, in which audience - State the expected direction, and a magnitude when a baseline exists ("+15% CTR vs. Concept A") - The hypothesis should follow from the angle's motivation, so a win or a loss teaches you something about the audience, not just the asset --- ## Output Formats ### Standard Output Organize by angle, with character counts: ``` ## Angle: [Pain Point — Manual Reporting] ### Headlines (30 char max) 1. "Stop Building Reports by Hand" (29) 2. "Automate Your Weekly Reports" (28) 3. "Reports Done in 5 Min, Not 5 Hr" (31) <- OVER LIMIT, trimmed below -> "Reports in 5 Min, Not 5 Hrs" (27) ### Descriptions (90 char max) 1. "Marketing teams save 10+ hours/week with automated reporting. Start free." (73) 2. "Connect your data sources once. Get automated reports forever. No code required." (80) ``` ### Bulk CSV Output When generating at scale (10+ variations), offer CSV format for direct upload: ```csv headline_1,headline_2,headline_3,description_1,description_2,platform "Stop Manual Reporting","Automate in 5 Minutes","Join 10K+ Teams","Save 10+ hrs/week on reports. Start free.","Connect data sources once. Reports forever.","google_ads" ``` ### Static Batch Output (Mode 3) For scaled static batches, save to a dated folder with an index: ``` outputs/YYYY-MM-DD/ INDEX.md # every concept: template type + grounding source, scannable in 2 min concepts/ # one .md per concept: headline, body, visual description, image prompt, grounding images/ # generated images, if an image tool is configured ``` Per-concept format is defined in [references/static-ad-templates.md](references/static-ad-templates.md). The human workflow this supports: open the folder, scan INDEX.md, pick the best 5-10 for testing — picking 5 winners from 50 concepts yields better creative than picking 5 from 10. ### Creative Review Page (client / stakeholder approval) When a person who isn't you needs to review and pick — a client, a partner, a stakeholder — produce a **creative review page**: a self-contained HTML artifact that presents each concept as an in-feed platform mockup (Instagram/Facebook, with a whitelist-handle toggle), breaks carousels into a labeled frame-by-frame storyboard, lets them toggle headline/copy variations, and discloses what's grounded in real assets. It's the visual upgrade to INDEX.md — a decision made off one link instead of by reading markdown. The template ships at [assets/creative-review-template.html](assets/creative-review-template.html) (one file, no build, hostable anywhere); populate its `DATA` object from your generated concepts. Full data model, grounding rules (the disclosure block is required), and delivery in [references/creative-review-page.md](references/creative-review-page.md). ### Iteration Report When iterating, include a summary: ``` ## Performance Summary - Analyzed: [X] headlines, [Y] descriptions - Top performer: "[headline]" — [metric]: [value] - Worst performer: "[headline]" — [metric]: [value] - Pattern: [observation] ## New Creative [organized variations] ## Recommendations - [What to pause, what to scale, what to test next] ``` --- ## Batch Generation Workflow For large-scale creative production (Anthropic's growth team generates 100+ variations per cycle): ### 1. Break into sub-tasks - **Headline generation** — Focused on click-through - **Description generation** — Focused on conversion - **Primary text generation** — Focused on engagement (Meta/LinkedIn) ### 2. Generate in waves - Wave 1: Core angles (3-5 angles, 5 variations each) - Wave 2: Extended variations on top 2 angles - Wave 3: Wild card angles (contrarian, emotional, specific) ### 3. Quality filter - Remove anything over character limit - Remove duplicates or near-duplicates - Flag anything that might violate platform policies - Ensure headline/description combinations make sense together --- ## Common Mistakes - **Writing headlines that only work together** — RSA headlines get combined randomly - **Ignoring character limits** — Platforms truncate without warning - **All variations sound the same** — Vary angles, not just word choice - **No CTA headlines** — RSAs need action-oriented headlines to drive clicks; include at least 2-3 - **Generic descriptions** — "Learn more about our solution" wastes the slot - **Iterating without data** — Gut feelings are less reliable than metrics - **Generating without grounding** — Ungrounded concepts read like every other ad in the feed; feed the skill winning ads, reviews, and comments first - **Skipping the comments input** — Ad comments hold the objections and angles customers raise themselves; those usually convert best - **Testing too many things at once** — Change one variable per test cycle - **Retiring creative too early** — Allow 1,000+ impressions before judging --- ## Tool Integrations For pulling performance data and managing campaigns, see the [tools registry](../../tools/REGISTRY.md). | Platform | Pull Performance Data | Manage Campaigns | Guide | |----------|:---------------------:|:----------------:|-------| | **Google Ads** | `google-ads campaigns list`, `google-ads reports get` | `google-ads campaigns create` | [google-ads.md](../../tools/integrations/google-ads.md) | | **Meta Ads** | `meta-ads insights get` | `meta-ads campaigns list` | [meta-ads.md](../../tools/integrations/meta-ads.md) | | **LinkedIn Ads** | `linkedin-ads analytics get` | `linkedin-ads campaigns list` | [linkedin-ads.md](../../tools/integrations/linkedin-ads.md) | | **TikTok Ads** | `tiktok-ads reports get` | `tiktok-ads campaigns list` | [tiktok-ads.md](../../tools/integrations/tiktok-ads.md) | ### Workflow: Pull Data, Analyze, Generate 1. Load and follow [`magister-google-ads`](../magister-google-ads/SKILL.md), using `magister_integration_read` to retrieve recent ad performance. The upstream marketing-tools CLI is not installed in the Hosted Agent runtime. 2. Analyze the result to identify top and bottom performers. 3. Feed winning patterns into this skill. 4. Generate new variations. 5. Use the typed spend action and its exact approval flow for any campaign mutation. For other ad providers, follow the generated tools registry and return `execution_unavailable` when it marks the provider unavailable. --- ## Related Skills - **ads**: For campaign strategy, targeting, budgets, and optimization - **marketing-loops**: For running static batch generation on a recurring cadence (the daily-creative-drop loop) - **customer-research**: For mining reviews and comments when building the grounded inputs corpus - **copywriting**: For landing page copy (where ad traffic lands) - **ab-testing**: For structuring creative tests with statistical rigor - **marketing-psychology**: For psychological principles behind high-performing creative - **copy-editing**: For polishing ad copy before launch --- ## Skill guidance you should follow --- name: analytics description: "Set up or audit tracking — GA4, GTM, Mixpanel, Segment; tracking plans, event naming, UTM conventions, conversion and attribution debugging. Rate metrics divide matching closed windows — never full-period spend by partial-period results." metadata: version: 2.2.0 --- # Analytics Tracking You are an expert in analytics implementation and measurement. Your goal is to help set up tracking that provides actionable insights for marketing and product decisions. ## Initial Assessment **Check for product marketing context first:** If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task. **Apply the project's brand:** If `BRAND.md` exists, read it before asking questions and apply it to everything you produce — its voice, messaging, and audience for anything written, and its colors, typography, and logo for anything visual. Never ask for a brand fact it already answers. If it lacks something you need, name the missing fact instead of inventing one or quietly falling back to a generic default. Before implementing tracking, understand: 1. **Business Context** - What decisions will this data inform? What are key conversions? 2. **Current State** - What tracking exists? What tools are in use? 3. **Technical Context** - What's the tech stack? Any privacy/compliance requirements? --- ## Core Principles ### 1. Track for Decisions, Not Data - Every event should inform a decision - Avoid vanity metrics - Quality > quantity of events ### 2. Start with the Questions - What do you need to know? - What actions will you take based on this data? - Work backwards to what you need to track ### 3. Name Things Consistently - Naming conventions matter - Establish patterns before implementing - Document everything ### 4. Maintain Data Quality - Validate implementation - Monitor for issues - Clean data > more data ### 5. Compute, Don't Eyeball - Derive every total, rate, and delta from row-level data with a script or spreadsheet — never by scanning rows and summing mentally. One silently dropped row corrupts every figure downstream of it. - Cross-check each headline figure a second, independent way (a reconciliation total, a recomputation from a different grouping) before reporting it, and chase any mismatch to the exact row. - When a claim is about one segment — a single campaign, ad set, channel, or week — report that segment's own numbers. Never fold it into a neighboring group and let the group's total speak for it. ### 6. Match Observation Windows - A rate or efficiency metric divides a numerator and denominator that cover the same closed observation window. Never divide a full period's spend by a partial period's conversions or revenue — restate both over the weeks that actually have data, and say which weeks those are. - Cohort rates use only cohorts whose observation window has ended. A trial or signup still inside its window is pending, not failed — exclude it from the denominator and label it as pending rather than counting it against the rate. ### 7. Recommend Against the Stated Goal - Analysis ends in a recommendation, and the recommendation must be argued from the goal the brief states — the launch target, audience, revenue, or positioning objective — not only from what is operationally easiest. Name which stated goal each option serves and what it trades away. --- ## Tracking Plan Framework ### Structure ``` Event Name | Category | Properties | Trigger | Notes ---------- | -------- | ---------- | ------- | ----- ``` ### Event Types | Type | Examples | |------|----------| | Pageviews | Automatic, enhanced with metadata | | User Actions | Button clicks, form submissions, feature usage | | System Events | Signup completed, purchase, subscription changed | | Custom Conversions | Goal completions, funnel stages | **For comprehensive event lists**: See [references/event-library.md](references/event-library.md) --- ## Event Naming Conventions ### Recommended Format: Object-Action ``` signup_completed button_clicked form_submitted article_read checkout_payment_completed ``` ### Best Practices - Lowercase with underscores - Be specific: `cta_hero_clicked` vs. `button_clicked` - Include context in properties, not event name - Avoid spaces and special characters - Document decisions --- ## Essential Events ### Marketing Site | Event | Properties | |-------|------------| | cta_clicked | button_text, location | | form_submitted | form_type | | signup_completed | method, source | | demo_requested | - | ### Product/App | Event | Properties | |-------|------------| | onboarding_step_completed | step_number, step_name | | feature_used | feature_name | | purchase_completed | plan, value | | subscription_cancelled | reason | **For full event library by business type**: See [references/event-library.md](references/event-library.md) --- ## Event Properties ### Standard Properties | Category | Properties | |----------|------------| | Page | page_title, page_location, page_referrer | | User | user_id, user_type, account_id, plan_type | | Campaign | source, medium, campaign, content, term | | Product | product_id, product_name, category, price | ### Best Practices - Use consistent property names - Include relevant context - Don't duplicate automatic properties - Avoid PII in properties --- ## GA4 Implementation ### Quick Setup 1. Create GA4 property and data stream 2. Install gtag.js or GTM 3. Enable enhanced measurement 4. Configure custom events 5. Mark conversions in Admin ### Custom Event Example ```javascript gtag('event', 'signup_completed', { 'method': 'email', 'plan': 'free' }); ``` **For detailed GA4 implementation**: See [references/ga4-implementation.md](references/ga4-implementation.md) --- ## Google Tag Manager ### Container Structure | Component | Purpose | |-----------|---------| | Tags | Code that executes (GA4, pixels) | | Triggers | When tags fire (page view, click) | | Variables | Dynamic values (click text, data layer) | ### Data Layer Pattern ```javascript dataLayer.push({ 'event': 'form_submitted', 'form_name': 'contact', 'form_location': 'footer' }); ``` **For detailed GTM implementation**: See [references/gtm-implementation.md](references/gtm-implementation.md) --- ## UTM Parameter Strategy ### Standard Parameters | Parameter | Purpose | Example | |-----------|---------|---------| | utm_source | Traffic source | google, newsletter | | utm_medium | Marketing medium | cpc, email, social | | utm_campaign | Campaign name | spring_sale | | utm_content | Differentiate versions | hero_cta | | utm_term | Paid search keywords | running+shoes | ### Naming Conventions - Lowercase everything - Use underscores or hyphens consistently - Be specific but concise: `blog_footer_cta`, not `cta1` - Document all UTMs in a spreadsheet --- ## Debugging and Validation ### Testing Tools | Tool | Use For | |------|---------| | GA4 DebugView | Real-time event monitoring | | GTM Preview Mode | Test triggers before publish | | Browser Extensions | Tag Assistant, dataLayer Inspector | ### Validation Checklist - [ ] Events firing on correct triggers - [ ] Property values populating correctly - [ ] No duplicate events - [ ] Works across browsers and mobile - [ ] Conversions recorded correctly - [ ] No PII leaking ### Common Issues | Issue | Check | |-------|-------| | Events not firing | Trigger config, GTM loaded | | Wrong values | Variable path, data layer structure | | Duplicate events | Multiple containers, trigger firing twice | --- ## Privacy and Compliance ### Considerations - Cookie consent required in EU/UK/CA - No PII in analytics properties - Data retention settings - User deletion capabilities ### Implementation - Use consent mode (wait for consent) - IP anonymization - Only collect what you need - Integrate with consent management platform --- ## Output Format ### Tracking Plan Document ```markdown # [Site/Product] Tracking Plan ## Overview - Tools: GA4, GTM - Last updated: [Date] ## Events | Event Name | Description | Properties | Trigger | |------------|-------------|------------|---------| | signup_completed | User completes signup | method, plan | Success page | ## Custom Dimensions | Name | Scope | Parameter | |------|-------|-----------| | user_type | User | user_type | ## Conversions | Conversion | Event | Counting | |------------|-------|----------| | Signup | signup_completed | Once per session | ``` --- ## Task-Specific Questions 1. What tools are you using (GA4, Mixpanel, etc.)? 2. What key actions do you want to track? 3. What decisions will this data inform? 4. Who implements - dev team or marketing? 5. Are there privacy/consent requirements? 6. What's already tracked? --- ## Tool Integrations For implementation, see the [tools registry](../../tools/REGISTRY.md). Key analytics tools: | Tool | Best For | MCP | Guide | |------|----------|:---:|-------| | **GA4** | Web analytics, Google ecosystem | ✓ | [ga4.md](../../tools/integrations/ga4.md) | | **Mixpanel** | Product analytics, event tracking | - | [mixpanel.md](../../tools/integrations/mixpanel.md) | | **Amplitude** | Product analytics, cohort analysis | - | [amplitude.md](../../tools/integrations/amplitude.md) | | **PostHog** | Open-source analytics, session replay | - | [posthog.md](../../tools/integrations/posthog.md) | | **Segment** | Customer data platform, routing | - | [segment.md](../../tools/integrations/segment.md) | --- ## Related Skills - **ab-testing**: For experiment tracking - **seo-audit**: For organic traffic analysis - **cro**: For conversion optimization (uses this data) - **revops**: For pipeline metrics, CRM tracking, and revenue attribution
Answer the model's full response$0.032 · 48.2s · 6.8k tok
# 2x2 Meta Feed Creative Experiment: Arc Clip Lamp (Cedar & Coil) This draft-only experiment isolates the creative impact of audience-specific framing and functional product appeals on Meta feed placements. --- ### Experiment Matrix | Cell | Audience | Appeal | | :--- | :--- | :--- | | **Cell A** | Renters | Surface-space saving | | **Cell B** | Renters | Lighting control | | **Cell C** | Makers | Surface-space saving | | **Cell D** | Makers | Lighting control | --- ## Creative Cells ### Cell A * **Audience:** Renters * **Appeal:** Surface-space saving * **Headline:** Free Up Your Rental Desk * **Primary text:** Small rental desks and bedside tables fill up fast. The Arc Clip Lamp attaches securely to shelves, bed frames, or tabletops up to 2.25 inches thick with a padded clamp that protects furniture finishes—delivering adaptable light without surrendering surface space. $68. Includes rechargeable lamp, padded clamp, USB-C charging cable, and storage sleeve. * **Visual direction:** In-feed 1:1 static photograph in a compact apartment bedroom/work nook. The Arc Clip Lamp is clamped to the vertical upright of a narrow rental bookshelf above a small desk, casting warm downward light on a laptop and notebook. The desk surface below is completely clear of lamp bases or cords. The padded clamp contact point on the wood shelf is sharp and visible. * **CTA:** Explore the Arc Clip Lamp * **Creative rationale:** Combines renter concerns about limited square footage and rental deposit protection (padded clamp) with the core benefit of reclaiming usable table area. --- ### Cell B * **Audience:** Renters * **Appeal:** Lighting control * **Headline:** Dial In Rental Overhead Light * **Primary text:** Harsh rental overhead fixtures rarely match what you are doing. The Arc Clip Lamp gives you three brightness settings and two color-temperature settings, letting you switch between cool, focused task lighting and a warm ambient glow. Runs up to eight hours on the lowest brightness setting. $68. Includes rechargeable lamp, padded clamp, USB-C charging cable, and storage sleeve. * **Visual direction:** In-feed 1:1 static photograph in an apartment living area during the evening with overhead ceiling lights switched off. The Arc Clip Lamp is clamped to the edge of an end table next to an armchair, set to its warm color temperature and mid-brightness to create an inviting, glare-free reading corner. * **CTA:** Explore the Arc Clip Lamp * **Creative rationale:** Speaks directly to renter frustration with immovable, unflattering ceiling fixtures by emphasizing personal, adjustable light settings and portable battery power. --- ### Cell C * **Audience:** Makers * **Appeal:** Surface-space saving * **Headline:** Clear Your Entire Workbench * **Primary text:** Every square inch of a workbench belongs to your tools and materials. The Arc Clip Lamp clamps firmly to work tables, drafting boards, or shelving up to 2.25 inches thick, keeping your work mat completely open for projects while illuminating your workspace. $68. Includes rechargeable lamp, padded clamp, USB-C charging cable, and storage sleeve. * **Visual direction:** In-feed 1:1 static photograph of an active maker bench covered with a self-healing cutting mat, hand tools, and project materials. The Arc Clip Lamp is clamped to an overhead shelving lip (1.5 inches thick), directing focused light downward onto the cutting area without obstructing the work plane. * **CTA:** Explore the Arc Clip Lamp * **Creative rationale:** Targets the craft and workshop friction of cluttered work areas where conventional desk lamp footprints intrude on cutting mats, tools, and assembly space. --- ### Cell D * **Audience:** Makers * **Appeal:** Lighting control * **Headline:** Precision Light for Your Bench * **Primary text:** Detailed assembly and craftwork require light dialed to the exact task. The Arc Clip Lamp features three brightness settings and two color-temperature settings, delivering crisp clarity for fine handwork and softer light for planning. Delivers up to eight hours of run time on lowest brightness. $68. Includes rechargeable lamp, padded clamp, USB-C charging cable, and storage sleeve. * **Visual direction:** In-feed 1:1 static photograph showing an over-the-shoulder view of a maker workbench. The Arc Clip Lamp is clamped to the side edge of the bench, positioned close to an intricate assembly task and set to its cooler color-temperature setting at full brightness to showcase fine material detail without harsh glare. * **CTA:** Explore the Arc Clip Lamp * **Creative rationale:** Connects with makers who require exact visibility thresholds for detailed work, validating the utility of multi-level brightness and dual color temperatures. --- ## Execution rules 1. **Constants:** * **Product Identity:** Arc Clip Lamp by Cedar & Coil across all cells. * **Offer:** $68 fixed price; package contents remain identical across all copy (lamp, padded clamp, USB-C charging cable, storage sleeve). * **Format:** Meta Feed static single image (1:1 aspect ratio), identical copy structure (hook, functional proof, product offer package), and identical character-length standards. * **Placement:** Meta Feed only (Facebook and Instagram Feeds). * **Run Dates & Schedule:** 14 concurrent calendar days for all active cells. * **Measurement Rules:** Identical tracking parameters, standard attribution window, and pixel event triggers across all cells. 2. **Budget Caps:** * Maximum total campaign budget reserve: $4,800. * Allocated equally as an exact $1,200 hard spend cap per cell over the 14-day duration ($85.71/day per cell). 3. **Primary KPI:** * **Landing-Page-View Rate (LPVR):** Defined strictly as total landing-page views divided by total link clicks ($\frac{\text{Landing-Page Views}}{\text{Link Clicks}}$) within matching observation windows. 4. **Guardrail Metric:** * **Cost per AddToCart (Cost / AddToCart):** Monitored continuously to ensure traffic quality and downstream intent. 5. **Early Stopping Rule & Consequence:** * **Stop Condition:** Any individual cell that accumulates $300 in spend with zero (0) AddToCart events must be paused immediately. * **Budget Handling:** Unused budget from a stopped cell remains unspent; under no circumstances is budget reallocated to other cells. * **Stop Consequence:** If any cell is paused under this rule, the entire experiment is stopped and the final outcome is declared **inconclusive**. 6. **Win Rule:** * If all four cells complete the test without triggering a stop condition, evaluate the winner against the sample-size and performance thresholds: * **Sample Size Requirement:** Every cell must individually achieve at least 200 link clicks. * **Performance Threshold:** A cell is declared the winner if and only if its landing-page-view rate exhibits at least a **15% relative lift** over the click-weighted pooled rate of the other three cells: $$\text{Pooled Rate}_{\text{rest}} = \frac{\sum \text{Landing-Page Views of other 3 cells}}{\sum \text{Link Clicks of other 3 cells}}$$ $$\text{Relative Lift} = \frac{\text{LPVR}_{\text{candidate}} - \text{Pooled Rate}_{\text{rest}}}{\text{Pooled Rate}_{\text{rest}}} \ge 0.15$$ 7. **Inconclusive Rule:** * If no single cell meets the full win criteria (e.g., candidate relative lift is under 15%, or any cell fails to accumulate 200 link clicks, or any cell was terminated early due to the guardrail rule), no winner is declared, and the test result is formally designated as **inconclusive**. --- ## Preregistered hypotheses All hypotheses evaluate directional changes in **landing-page-view rate (LPVR)**, measured as landing-page views divided by link clicks. 1. **Audience Main Effect:** * **Hypothesis:** The pooled Renters cells (Cells A and B) will achieve a higher landing-page-view rate than the pooled Makers cells (Cells C and D). * **Metric & Comparison:** $\frac{\text{LPV}_A + \text{LPV}_B}{\text{Clicks}_A + \text{Clicks}_B} > \frac{\text{LPV}_C + \text{LPV}_D}{\text{Clicks}_C + \text{Clicks}_D}$. * **Directional Rationale:** Renters in compact living quarters experience immediate, widespread spatial and fixture friction across multiple rooms, resulting in higher post-click follow-through to review product specs compared to makers evaluating bench-specific equipment. 2. **Appeal Main Effect:** * **Hypothesis:** The pooled Surface-space saving cells (Cells A and C) will achieve a higher landing-page-view rate than the pooled Lighting control cells (Cells B and D). * **Metric & Comparison:** $\frac{\text{LPV}_A + \text{LPV}_C}{\text{Clicks}_A + \text{Clicks}_C} > \frac{\text{LPV}_B + \text{LPV}_D}{\text{Clicks}_B + \text{Clicks}_D}$. * **Directional Rationale:** Space reclamation via the 2.25-inch padded clamp is the brand's primary structural differentiator; zero-footprint illumination presents a more tangible problem-solution hook in-feed than multi-setting lighting adjustments, driving greater intent to load the product page. 3. **Audience-by-Appeal Interaction:** * **Hypothesis:** The relative LPVR lift of the Surface-space saving appeal over the Lighting control appeal will be greater among Makers than among Renters. * **Metric & Comparison:** $$\frac{\text{LPVR}_C - \text{LPVR}_D}{\text{LPVR}_D} > \frac{\text{LPVR}_A - \text{LPVR}_B}{\text{LPVR}_B}$$ * **Directional Rationale:** Makers experience total operational blockage when a lamp base takes up active workbench territory (cutting mats, material layout, tool clearance). Consequently, space reclamation provides a sharper functional lift over lighting customization for makers than it does for renters.
Score the judge's verdict, criterion by criterion13/13 criteria passed
RequirementVerdictEvidence
full_factorial
Exactly four cells A-D are present and cover Renters x Surface-space saving, Renters x Lighting control, Makers x Surface-space saving, and Makers x Lighting control exactly once.
✓Cells A-D each cover a distinct Audience x Appeal pairing (Renters/Surface, Renters/Lighting, Makers/Surface, Makers/Lighting) exactly once.
cell_fields
Every cell labels Audience, Appeal, Headline, Primary text, Visual direction, CTA, and Creative rationale.
✓Each cell lists Audience, Appeal, Headline, Primary text, Visual direction, CTA, and Creative rationale.
budget_and_duration
The plan reserves a maximum of $4,800 as a $1,200 cap per cell over 14 days; it does not promise that a stopped cell will spend its full cap.
✓Execution rules state a $4,800 max reserve, $1,200 hard cap per cell over 14 days, and specify unused budget from a stopped cell remains unspent, not promising full spend.
execution_rules_section
A labeled Execution rules section is present.
✓The response includes a clearly labeled '## Execution rules' section.
hypotheses_section
A separate labeled Preregistered hypotheses section is present.
✓A separate '## Preregistered hypotheses' section is present after the execution rules.
approved_cta
All four CTA fields are exactly 'Explore the Arc Clip Lamp'.
✓All four cells list CTA as 'Explore the Arc Clip Lamp' verbatim.
grounded_copy
All copy and visuals use only supplied Arc Clip Lamp facts and avoid invented customers, results, proof, scarcity, offers, or capabilities.
✓Copy uses only supplied facts (price $68, package contents, three brightness/two color-temperature settings, eight-hour battery, 2.25-inch clamp) with no invented reviews, awards, scarcity, or performance guarantees.
cells_isolate_factors
Product identity, offer, copy/visual format, placement, run dates, and measurement rules stay constant; cells vary only the assigned audience language and the assigned appeal's supported message and visual.
✓All cells keep the $68 offer, package contents, 1:1 static Meta feed format, and identical execution rules constant while varying only audience framing and appeal-specific message/visual.
factorial_hypotheses
Exactly three directional landing-page-view-rate hypotheses are preregistered: one audience main effect, one appeal main effect, and one audience-by-appeal interaction; each names its comparison without changing an extra factor.
✓Exactly three hypotheses are given—an audience main effect (A+B vs C+D), an appeal main effect (A+C vs B+D), and an audience-by-appeal interaction—each with a clear LPVR comparison.
kpi_and_guardrail
Landing-page-view rate is correctly defined as landing-page views / link clicks and cost per AddToCart is the guardrail.
✓The plan defines LPVR as landing-page views divided by link clicks and names cost per AddToCart as the guardrail metric.
stop_rule_exact
The stop rule is exactly $300 spend with zero AddToCart for an individual cell; unused budget is not reallocated and any triggered stop makes the final result inconclusive.
✓Execution rules specify stopping a cell at $300 spend with zero AddToCart, no budget reallocation, and that any stop makes the result inconclusive.
win_rule_exact
A winner requires at least 15% relative landing-page-view-rate lift versus the click-weighted pooled rate of the other three cells (their total landing-page views / total link clicks) and at least 200 link clicks in every cell.
✓The win rule requires ≥15% relative lift vs. the click-weighted pooled rate of the other three cells and at least 200 link clicks per cell, matching the required formula.
inconclusive_rule
The plan explicitly declares the result inconclusive when the full win rule is not met and does not pick a winner from directional data alone.
✓The Inconclusive Rule explicitly states that failing any part of the win criteria (lift, sample size, or stop) results in a formally declared inconclusive outcome.