Powered byMagister+marketing skills

Marketing Benchmark


How good is AI at marketing? This benchmark grades real marketing work — writing ad concepts, analyzing campaign data, repairing broken landing pages, reconciling attribution models that disagree — against expert checklists, and runs every model three ways: alone, with the marketing skills pack added, and inside the full Magister agent. Task by task, it shows what today's models are good at and where they struggle.

Which skills each task gets ↓How scoring works ↓
Run it yourselfgit clone https://github.com/Magister-Marketing/marketing-benchmark && cd marketing-benchmark && ./eval.py claude-opus-5

The whole picture

20 tasks · score out of 100 · one bar per configuration
020406080100↑ Score, of 100Model only+ Marketing Skills+ MagisterGemini 3.8 Flash — Model only: 78.4/100, 8/20 tasks passed78.4Gemini 3.8 Flash — + Marketing Skills: 87.2/100, 12/20 tasks passed87.2Gemini 3.8 Flash — + Magister: 94.5/100, 14/20 tasks passed94.5Gemini 3.8 Flashhigh effort

The three configurations we test

Model only

model only, over the API · web search

The model on its own: one API call carrying the task and its source material, nothing added.

Prompt
Task + source material
Skills
None
Tools
Provider web search

+ Marketing Skills

model + marketingskills · web search

The same single API call, with the task's marketingskills SKILL.md files pasted verbatim into the prompt.

Prompt
Task + source + verbatim SKILL.md
Skills
marketingskills, in the prompt
Tools
Provider web search

+ Magister

full agent · marketingskills + hosted tools

The production Magister agent works the task over a full multi-step turn on a real project machine. It brings the marketingskills pack installed on that machine, plus hosted tools and web research — so this configuration is always the model with skills and the harness together, not the model alone.

Prompt
Task + source material
Skills
marketingskills, installed on the machine
Tools
Full hosted toolset + web research

One model, three configurations, same tasks and same grading. The Magister bar is the full agent — that model plus the marketingskills pack and hosted tools, not the model on its own. A dot on the axis means that configuration hasn't been run for that model yet. Score averages the runner's adjusted rubric scores across all tasks (0–100), including partial credit and penalties for critical failures. Tasks passed is separate: one missed requirement fails the whole task.

model + marketingskills · web search · Sep 4, 2026 · 20 tasks · pass@1
ModelScore?Adjusted rubric score, averaged across every task and attempt, on a 0–100 scale. It includes fractional credit, excludes checks already satisfied by a blank answer, and applies critical-failure and incompleteness penalties. Truncated answers remain in the task denominator. See Methodology for the scoring rules.Tasks passed?Tasks passed, of tasks attempted (pass@1). A task passes only when the answer meets every requirement in its rubric — one miss fails the whole task, with no partial credit.Answer cost?What this model's answers cost for the whole suite: its input and output tokens priced at the provider's list rates. Judge and grading spend are excluded.Avg task time?Average wall-clock time of the model's API call per task, as measured by the runner.Output tokens?Total tokens the model generated across all tasks, including any billed reasoning tokens.
Gemini 3.8 Flash high effort87.212/20$1.69151.9s425.5k

Cost and time are the candidate model's alone — judge overhead is excluded. Quality and efficiency are never blended into one number.

Which model should you use?

Best result
Gemini 3.8 Flash high effort

Scored 87.2 of 100 and passed 12 of 20 tasks — at $1.69 for the full suite.

Every model, every task

Select a result for the answer & judge evidence
developmentholdout
Modelad-creativesad-performance-analysisads-ledger-analysisanalytics-source-conflictattribution-sensitivityblog-postbudget-reconciliation-trapemail-flow-repairfactorial-ad-testheadlinelanding-page-repairlanding-pagemarketing-planshopify-meta-capisource-conflict-repairtracking-auditlaunch-capacity-trapplatform-limits-gauntletrate-card-reconciliationunsupportable-claims-brief
Gemini 3.8 Flash
87.2 12/20 · high effort
Pass9/9Fail9/10Fail0/0Pass9/9Pass0/0Pass9/9Fail7/8Fail13/14Pass13/13Pass6/6Pass19/19Fail9/10Fail7/8Pass11/11Pass18/18Fail0/0Fail0/0Pass10/10Pass10/10Pass10/10

The count under each verdict is requirements passed. One missed requirement fails the task, so a near-miss and a blowout look the same in the score — the cell shows which one it was.

Tasks & answers

expand a task to read the prompt, every answer, and every verdict
Meta ad concepts with channel limits ad-creatives1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from ad-creative — folders in the marketingskills pack.

Draft three genuinely different Meta feed ad concepts for the Arc Clip Lamp, for internal review only. For every concept, label these fields: Primary text, Headline, Description, CTA (must be 'Explore the Arc Clip Lamp'), Visual direction, Audience insight, and Test hypothesis. Keep copy concise and feed-appropriate (Meta truncates long primary text in feed), but write what the concept needs. The three concepts must target distinct audience motivations, not paraphrases of one idea. Do not create, publish, fund, or activate anything; this is a draft. --- ## 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
three_concepts
Exactly three ad concepts are present.
✓Programmatic check: primary_text_field_count=3.
all_fields
Each concept has all seven labeled fields: Primary text, Headline, Description, CTA, Visual direction, Audience insight, and Test hypothesis.
✓Each of the three concepts includes labeled Primary text, Headline, Description, CTA, Visual direction, Audience insight, and Test hypothesis fields.
approved_cta
Exactly three CTA fields are present and every one is exactly 'Explore the Arc Clip Lamp'.
✓Programmatic check: cta_field_count=3; approved_cta_field_count=3.
distinct_motivations
The three concepts are built on distinct audience motivations (per the audience insights), not rewordings of the same angle.
✓Concept 1 targets renters wanting clear surfaces, Concept 2 targets makers needing workbench clearance, and Concept 3 targets students needing cordless mobility across shifting study spaces—three clearly distinct motivations.
no_invented_proof
No invented reviews, customers, performance numbers, scarcity, awards, or product capabilities beyond the supplied facts; forbidden claims (award-winning, best-selling, clinically proven, limited time, carbon neutral, guaranteed productivity) are absent.
✓No reviews, awards, scarcity, guarantees, or unapproved claims appear; all factual claims (price, clamp size, brightness settings, battery life, USB-C) match the supplied facts.md.
canonical_product_name
Whenever the product is named, it is called 'Arc Clip Lamp'; shortened or altered names such as 'Arc Lamp' fail.
✓The product is referred to as 'Arc Clip Lamp' consistently in all headlines and body copy, e.g., 'Arc Clip Lamp: Save Your Table Space'.
concrete_visuals
Each Visual direction describes a specific, filmable/photographable scene tied to the concept's motivation, not vague mood words.
✓Each Visual direction describes a specific filmable scene, e.g., 'clamped to the vertical edge of a narrow wooden shelf... casts a warm downward pool of light' for Concept 1.
hypothesis_test_design
Each Test hypothesis identifies the creative or message variable being tested and the comparator or control it would be tested against.
✓Each hypothesis names a comparator, e.g., Concept 2 states it 'will generate a lower CPC... compared to Concept 1'.
hypothesis_prediction
Each Test hypothesis names an observable KPI and its expected direction. Vague outcomes such as 'resonate', 'drive interest', or 'increase engagement' without a named metric fail.
✓Each hypothesis names an observable KPI and direction, e.g., Concept 3 predicts 'a higher Outbound CTR and landing page conversion rate (CVR) than Concept 1'.
Answer the model's full response$0.042 · 66.0s · 10.0k tok
### Internal Creative Review: Meta Feed Ad Concepts (Draft Only) **Brand:** Cedar & Coil **Product:** Arc Clip Lamp ($68) **Status:** Internal draft for review only. Not for publishing, funding, or live activation. --- ### Concept 1: Surface Reclamation (Renter / Small-Space Living Angle) * **Audience insight:** In compact rentals, bedside and side tables are severely space-constrained. A standard table lamp base consumes roughly half the usable surface, forcing renters to choose between lighting and basic personal essentials (books, glasses, water). They need functional illumination that leaves the surface completely clear without drilling into landlord-owned walls. * **Visual direction:** Eye-level still photo of a compact apartment bedroom at dusk. The Arc Clip Lamp is clamped to the vertical edge of a narrow wooden shelf directly above a small bedside table. The tabletop below is uncluttered, holding only a ceramic mug and a paperback book. The lamp casts a warm downward pool of light. The shot clearly highlights the padded clamp gripping the shelf without scratching the wood finish. * **Primary text:** Keep your nightstand clear. The Arc Clip Lamp grips edges up to 2.25 inches thick—warm light without losing tabletop space. * **Headline:** Arc Clip Lamp: Save Your Table Space * **Description:** Padded clamp fits up to 2.25" * **CTA:** Explore the Arc Clip Lamp * **Test hypothesis:** When served to an audience segment of urban renters and small-space dwellers, Concept 1 will produce a higher link click-through rate (CTR) than Concept 2 and Concept 3, because eliminating footprint loss on tight domestic surfaces directly resolves their most immediate physical space constraint. --- ### Concept 2: Workbench Clearance (Maker / Craftsperson Task Angle) * **Audience insight:** Makers and craftspeople working in small home studios or kitchen-table setups frequently knock over traditional lamp bases or lose project area to bulky desktop stands. They require secure, focused task illumination clamped directly over their working plane so that tools, materials, and cutting mats retain full surface access. * **Visual direction:** Authentic top-down working view of a compact craft table. The Arc Clip Lamp is secured via its padded clamp to the 1.5-inch edge of a birch worktable, its neck directed over an active cutting mat with linocut tools and heavy paper stock. The work area is completely unobstructed by any lamp base. Natural studio lighting is balanced with focused task illumination from the lamp head. * **Primary text:** Keep your work surface clear for making. The Arc Clip Lamp clamps to benches up to 2.25 inches thick, with three brightness settings and a padded clamp. * **Headline:** Arc Clip Lamp: Task Light for Makers * **Description:** 3 brightness settings. $68. * **CTA:** Explore the Arc Clip Lamp * **Test hypothesis:** Within an interest-targeted maker and crafting hobbyist audience, Concept 2 will generate a lower Cost Per Click (CPC) and higher 3-second video/image thumb-stop rate compared to Concept 1, because depicting tool clearance and direct bench illumination addresses work-surface utility more effectively than domestic decor angles. --- ### Concept 3: Cordless Mobility (Student / Shifting Study Spaces Angle) * **Audience insight:** Students in dorms and shared apartments rarely study in just one fixed position. They frequently alternate between small shared desks, lofted beds, and communal living tables, where electrical wall outlets are often awkwardly placed or already occupied. They need cordless lighting they can pick up, adjust between work and rest color temperatures, and clamp wherever they land. * **Visual direction:** Naturalistic lifestyle photo inside a compact dorm room during late evening study hours. The Arc Clip Lamp is clamped securely onto the wooden safety rail of a lofted bed, casting a warm glow onto an open notebook. Down on the desk surface below, the included storage sleeve and USB-C charging cable rest neatly, visibly demonstrating that the lamp operates completely cord-free in its elevated position. * **Primary text:** No outlet nearby? The rechargeable Arc Clip Lamp moves from desk to bedside, giving you up to eight hours of light on the lowest brightness. * **Headline:** Arc Clip Lamp: Cordless Task Light * **Description:** Includes USB-C cable. $68. * **CTA:** Explore the Arc Clip Lamp * **Test hypothesis:** In an audience segment aged 18–24 (students/young adults), Concept 3 will deliver a higher Outbound CTR and landing page conversion rate (CVR) than Concept 1, because emphasizing rechargeable mobility and freedom from wall outlets solves the shared-room outlet limitations typical of student housing.

Open this task's own page →

Paid ad campaign performance analysis ad-performance-analysis0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

You are analyzing four weeks of Meta campaign data for Cedar & Coil (CSV supplied below; conversions are purchases, revenue is purchase value, frequency is average weekly impressions per person). Produce a performance analysis for the founder: (1) a per-campaign four-week summary with total spend, total conversions, CPA, and ROAS where revenue is available, showing your arithmetic for at least CPA; (2) name the best and worst performing campaign with evidence; (3) diagnose the most important week-over-week trend problem; (4) recommend one specific budget change and one bounded test to run next; (5) state the data limitation that would most change your conclusions. Note anything unusual in the data quality. --- ## 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. --- ## Supplied source: campaigns.csv campaign,objective,week_start,spend_usd,impressions,clicks,conversions,revenue_usd,frequency Prospecting - Broad,conversions,2026-07-06,1200,200000,3600,60,4080,2.0 Prospecting - Broad,conversions,2026-07-13,1200,210000,3150,48,3264,2.4 Prospecting - Broad,conversions,2026-07-20,1200,220000,2640,36,2448,2.9 Prospecting - Broad,conversions,2026-07-27,1200,230000,2070,25,1700,3.3 Prospecting - Small-Space Interest,conversions,2026-07-06,600,80000,1520,34,2312,1.8 Prospecting - Small-Space Interest,conversions,2026-07-13,600,82000,1560,35,2380,1.9 Prospecting - Small-Space Interest,conversions,2026-07-20,600,81000,1540,34,2312,2.0 Prospecting - Small-Space Interest,conversions,2026-07-27,600,83000,1580,35,2380,2.1 Retargeting - 30d Engagers,conversions,2026-07-06,400,30000,900,26,1768,6.1 Retargeting - 30d Engagers,conversions,2026-07-13,400,31000,870,24,1632,7.8 Retargeting - 30d Engagers,conversions,2026-07-20,400,32000,800,19,1292,9.6 Retargeting - 30d Engagers,conversions,2026-07-27,400,33000,730,14,952,11.4 Launch Teaser - Video Views,video_views,2026-07-06,250,90000,450,3,204,1.2 Launch Teaser - Video Views,video_views,2026-07-13,250,92000,460,2,136,1.3 Launch Teaser - Video Views,video_views,2026-07-20,250,91000,455,,,1.3 Launch Teaser - Video Views,video_views,2026-07-27,250,93000,465,2,136,1.4 --- ## 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
Gemini 3.8 Flash high effortFailed
RequirementVerdictEvidence
totals_correct
Per-campaign four-week totals are computed and correct within rounding: Prospecting - Broad spend $4,800, 169 conversions, CPA ~$28.40; Prospecting - Small-Space Interest spend $2,400, 138 conversions, CPA ~$17.39; Retargeting - 30d Engagers spend $1,600, 83 conversions, CPA ~$19.28 (or stated over known weeks only); Launch Teaser totals acknowledge the missing week.
✓The response computes Broad spend $4,800/169 conv/CPA $28.40, Small-Space $2,400/138 conv/CPA $17.39, Retargeting $1,600/83 conv/CPA $19.28, matching expected totals exactly, and explicitly flags Launch Teaser's missing week rather than silently summing it in.
best_worst
Small-Space Interest is identified as the best performer (lowest CPA ~$17.39, stable, ROAS ~3.9) and Broad as the biggest problem (weekly CPA rising from $20 to $48 while CTR halves from 1.8% to 0.9%); calling the Launch Teaser 'worst' on CPA alone without noting its video-views objective does not pass.
✓Small-Space Interest is named best with CPA $17.39/ROAS 3.91x and stability evidence, and while Launch Teaser is labeled 'worst', the response explicitly notes its video_views objective mismatch as a caveat, and Broad's CPA-rising/CTR-halving deterioration is thoroughly documented with the exact evidence cited in the rubric.
recommendation
There is one specific budget change (e.g. shift spend from Broad toward Small-Space Interest) and one bounded test (what change, what metric, what timeframe or budget).
✓The response specifies a concrete budget reallocation (pause Launch Teaser, cut Retargeting 50%, shift $450/week into Small-Space Interest) and a bounded 14-day/$600-capped creative A/B test with defined KPIs.
missing_preserved
The empty conversions/revenue cells for Launch Teaser in the week of 2026-07-20 are flagged as missing data (e.g. a tracking gap), not treated as zero or silently summed over.
✓Section 6 explicitly flags the blank Week 3 Launch Teaser row as ambiguous/missing tracking data rather than treating it as zero, discussing implications for CPA if nulls vs zeros are assumed.
partial_metric_denominators
Any Launch Teaser CPA or ROAS uses spend and outcomes from exactly the same complete rows, or is reported as unavailable. Dividing all four weeks of spend by only three known weeks of conversions/revenue fails.
✗Despite presenting a 'matched' 3-week CPA, the response also computes and reports a 'Full-Period Spend (4 weeks)' CPA of $142.86 by dividing all four weeks of spend ($1,000) by only 3 weeks' known conversions (7), which the rubric explicitly says fails even if labeled.
evidence_shown
The arithmetic behind key claims is shown (at least CPA calculations), and metric definitions/sources are used as supplied rather than invented.
✓The response shows explicit CPA and ROAS formulas and step-by-step arithmetic for every campaign, using the CSV's supplied spend/conversions/revenue fields rather than invented figures.
cautious_conclusions
A limitation that would most change the conclusion is stated (e.g. attribution window, missing week, four-week sample), and correlation is not presented as proven causation.
✓Section 5 identifies missing view-through attribution and holdout data as the limitation that would most change conclusions, and hedges with language like 'highly probable' rather than asserting causation.
trend_over_snapshot
The diagnosis is driven by week-over-week movement (Broad's CTR/CPA deterioration, Retargeting frequency climbing 6.1 to 11.4 with falling conversions), not four-week averages alone.
✓Section 3 diagnoses the trend via week-over-week CTR halving (1.80%→0.90%) and CPA rise ($20→$48) in Broad, and frequency climbing 6.1→11.4 with falling conversions in Retargeting, not four-week averages.
prioritized_action
Recommendations are prioritized (one clear primary move) rather than an unranked laundry list.
✓The budget change is presented as one clear headline action (pause Video Views, rebalance into Small-Space) with numbered implementation steps, rather than an unranked list of unrelated options.
bounded_test_decision
The proposed test has one control and one changed variable, a duration or spend cap, one primary KPI, a numeric win rule, and either a numeric minimum sample or an explicit rule for declaring the result inconclusive.
✓The proposed creative test specifies control vs. variant, a 14-day duration, a $300/week spend cap, a primary KPI (CTR ≥1.6% and CPA ≤$25), and a numeric kill-switch/inconclusive rule (>$150 spend with zero conversions or CPA >$45 over 7 days).
Answer the model's full response$0.063 · 97.3s · 15.9k tok
# Performance Analysis: Meta Campaigns (July 6 – August 2, 2026) **To:** Founder, Cedar & Coil **From:** Marketing Analytics **Context:** Four-Week Meta Campaign Review (Arc Clip Lamp, DTC Launch) --- ## 1. Per-Campaign Four-Week Summary *Observation Window Note:* In accordance with strict measurement principles (matching numerator and denominator over closed, reporting observation windows), **Launch Teaser - Video Views** is presented both on its **matching 3-week window** (Weeks 1, 2, and 4, where conversion and revenue tracking were active) and against its full 4-week spend. | Campaign | Spend | Conversions (Purchases) | CPA | Revenue | ROAS | | :--- | :---: | :---: | :---: | :---: | :---: | | **Prospecting - Broad** | $4,800.00 | 169 | **$28.40** | $11,492.00 | **2.39x** | | **Prospecting - Small-Space Interest** | $2,400.00 | 138 | **$17.39** | $9,384.00 | **3.91x** | | **Retargeting - 30d Engagers** | $1,600.00 | 83 | **$19.28** | $5,644.00 | **3.53x** | | **Launch Teaser - Video Views** *(Matched 3-Wk Window)* | $750.00 | 7 | **$107.14** | $476.00 | **0.63x** | | *Launch Teaser - Video Views (Full 4-Wk Spend)* | *$1,000.00* | *7* | *$142.86* | *$476.00* | *0.48x* | | **Portfolio Total (Matched Windows)** | **$9,550.00** | **397** | **$24.06** | **$26,996.00** | **2.83x** | | *Portfolio Total (Full Spend Unadjusted)* | *$9,800.00* | *397* | *$24.69* | *$26,996.00* | *2.75x* | ### Arithmetic & Derivations * **Formula Definitions:** $$\text{CPA} = \frac{\text{Spend}}{\text{Conversions}}$$ $$\text{ROAS} = \frac{\text{Revenue}}{\text{Spend}}$$ * **Prospecting - Broad:** $$\text{CPA} = \frac{\$4,800.00}{169\text{ orders}} = \mathbf{\$28.4024 \to \$28.40}$$ $$\text{ROAS} = \frac{\$11,492.00}{\$4,800.00} = \mathbf{2.3942\text{x} \to 2.39\text{x}}$$ * **Prospecting - Small-Space Interest:** $$\text{CPA} = \frac{\$2,400.00}{138\text{ orders}} = \mathbf{\$17.3913 \to \$17.39}$$ $$\text{ROAS} = \frac{\$9,384.00}{\$2,400.00} = \mathbf{3.9100\text{x} \to 3.91\text{x}}$$ * **Retargeting - 30d Engagers:** $$\text{CPA} = \frac{\$1,600.00}{83\text{ orders}} = \mathbf{\$19.2771 \to \$19.28}$$ $$\text{ROAS} = \frac{\$5,644.00}{\$1,600.00} = \mathbf{3.5275\text{x} \to 3.53\text{x}}$$ * **Launch Teaser - Video Views:** * *Matched Observation Window (Weeks 1, 2, and 4; spend = $250 \times 3 = \$750$):* $$\text{CPA} = \frac{\$750.00}{7\text{ orders}} = \mathbf{\$107.1429 \to \$107.14}$$ $$\text{ROAS} = \frac{\$476.00}{\$750.00} = \mathbf{0.6347\text{x} \to 0.63\text{x}}$$ * *Full-Period Spend (4 weeks; spend = $1,000.00):* $$\text{CPA} = \frac{\$1,000.00}{7\text{ orders}} = \mathbf{\$142.8571 \to \$142.86}$$ $$\text{ROAS} = \frac{\$476.00}{\$1,000.00} = \mathbf{0.4760\text{x} \to 0.48\text{x}}$$ --- ## 2. Best and Worst Performing Campaigns ### Best Performer: Prospecting - Small-Space Interest * **Efficiency & Margin:** Generated an exceptional **3.91x ROAS** and an aggregate **$17.39 CPA**, delivering $50.61 in gross margin per unit acquired before COGS (on the $68.00 Arc Clip Lamp). * **Audience Alignment:** Taps directly into the brand’s core audience (renters, makers, and students living in compact spaces). * **Remarkable Resilience:** While other campaigns deteriorated severely over the month, Small-Space Interest maintained perfectly stable metrics week in and week out: * Conversions: 34 $\to$ 35 $\to$ 34 $\to$ 35. * CTR held steady at **1.90%** each week. * Frequency only edged up from 1.8 to 2.1, showing healthy headroom and virtually no audience saturation. ### Worst Performer: Launch Teaser - Video Views * **Direct Capital Drain:** Deeply unprofitable with a matched ROAS of **0.63x** (unmatched **0.48x**). It generated only $476.00 in revenue against $750.00–$1,000.00 in spend. * **Prohibitive Acquisition Cost:** Matched CPA of **$107.14** ($142.86 full period). Cedar & Coil lost $39.14 to $74.86 of direct media spend on every single lamp sold through this campaign before manufacturing, shipping, or fulfillment. * **Objective Mismatch:** The campaign was optimized for `video_views`, training Meta’s algorithm to seek users who passively consume video rather than users with purchase intent (CTR was a low 0.50% across 366,000 impressions). --- ## 3. Most Important Week-over-Week Trend Problem The single most critical trend problem is **rapid creative fatigue and audience exhaustion across Cedar & Coil's core conversion campaigns**, with two distinct points of failure: ### Primary Financial Threat: Creative Decay in Prospecting - Broad Prospecting - Broad is the brand’s largest budget line ($1,200/week; 49% of total spend), but its performance collapsed between Week 1 and Week 4: * **Conversions dropped 58.3%:** 60 $\to$ 48 $\to$ 36 $\to$ 25 orders/week. * **CPA increased 140.0%:** $20.00 $\to$ $25.00 $\to$ $33.33 $\to$ **$48.00**. * **ROAS degraded from 3.40x to 1.42x**, nearing unprofitable territory. * **Engagement halving:** While Meta delivered more impressions (200k $\to$ 230k) as CPM dropped slightly ($6.00 $\to$ $5.22), weekly frequency crept from 2.0 to 3.3. Crucially, clicks collapsed from 3,600 to 2,070, cutting CTR in half (1.80% $\to$ 0.90%). The audience is tuning out the static launch ads. Because Broad supplies top-of-funnel reach, its collapse starves downstream retargeting. ### Secondary Operational Crisis: Audience Burnout in Retargeting At the same time, **Retargeting - 30d Engagers** experienced extreme audience oversaturation: * Weekly frequency exploded: **6.1 $\to$ 7.8 $\to$ 9.6 $\to$ 11.4**. * In Week 4, the average prospective customer was hammered with the same ad **over 11 times in a single week** (1.6 times per day). * This overexposure produced ad blindness: weekly conversions dropped from 26 to 14 (-46.2%), and CPA surged from $15.38 to $28.57 (+85.8%). A $400/week budget is simply too large for a 30-day pool generated by this level of prospecting traffic. --- ## 4. Strategic Recommendations All recommendations are argued against Cedar & Coil's stated goals: establishing a profitable DTC foundation for the Arc Clip Lamp among space-constrained dwellers while maintaining brand positioning (practical, warm, visually specific; no hype or artificial scarcity). ### One Specific Budget Change (Immediate Reallocation) **Action:** Eliminate the Video Views campaign and rebalance retargeting into core niche prospecting. 1. **Pause `Launch Teaser - Video Views` immediately** ($250/week $\to$ **$0**). 2. **Reduce `Retargeting - 30d Engagers` by 50%** ($400/week $\to$ **$200/week**). 3. **Reallocate all $450/week in reclaimed capital to `Prospecting - Small-Space Interest`** ($600/week $\to$ **$1,050/week**, a 75% increase). 4. **Maintain `Prospecting - Broad` temporarily at $1,200/week** (subject to creative testing below). * **Goal Served:** Maximizes revenue and net cash contribution by shifting budget to the highest-efficiency campaign (3.91x ROAS, $17.39 CPA) while curbing severe audience overexposure in retargeting (bringing frequency back toward a healthy ~5.0–6.0). * **Trade-off:** Sacrifices broad brand awareness/top-of-funnel video impressions, narrowing media delivery strictly to users with active compact-living interest signals. ### One Bounded Test to Run Next * **Test Design:** Creative Refresh Split-Test (Meta A/B Experiment) in Prospecting. * **Hypothesis:** Introducing new, visually specific use-case creatives directly addressing the core audience (e.g., clamping to a narrow bedside rail or small maker workbench; showcasing the 2.25-inch padded clamp and warm 2700K setting; approved CTA *"Explore the Arc Clip Lamp"*) will reverse CTR decay and lower Broad CPA below $25.00. * **Duration:** 14 days (2 closed weeks). * **Budget:** Bounded at **$300/week** ($600 total), carved out directly from the Prospecting - Broad allocation. * **Control vs. Test:** Control (Fatigued launch ad) vs. Test (Two new draft-approved video/lifestyle stills showing practical clamping in small spaces). * **Success Criteria & Stopping Rules:** * *Primary KPI:* Click-Through Rate $\ge 1.60\%$ and Purchase CPA $\le \$25.00$. * *Guardrail / Kill-switch:* If any variant generates >$150 in spend with zero conversions, or CPA exceeds $45.00 across 7 days, pause the variant immediately. --- ## 5. Primary Data Limitation The data limitation that would most alter these conclusions is the **lack of attribution window detail (specifically View-Through vs. Click-Through breakdown) and holdout incrementality data**. * **Why it matters:** Meta’s standard attribution model includes 1-day view-through conversions alongside 7-day click conversions. In **Retargeting - 30d Engagers**, where weekly frequency reached an extreme 11.4, it is highly probable that a substantial portion of the recorded 83 conversions were view-through conversions—meaning users who had already visited the site and intended to buy were served an impression immediately prior to checkout. Meta claims 100% credit for these sales. * **Impact on Decisions:** If view-through purchases represent 50%+ of retargeting conversions, Retargeting’s true *incremental* ROAS is far lower than 3.53x, meaning the campaign was cannibalizing organic/direct orders rather than driving new purchases. Conversely, if Launch Teaser generated view-through assists that converted through Broad or Organic Search, cutting it entirely may slightly soften top-of-funnel awareness. * **Secondary Missing Element:** A complete lack of COGS, shipping, and return rate data prevents calculating true Net Contribution Margin. --- ## 6. Data Quality & Synthetic Inconsistencies A review of `campaigns.csv` against the authoritative source documentation reveals four distinct data quality issues: 1. **Unrecorded Data in Week 3 (Launch Teaser):** * Row 15 (`Launch Teaser - Video Views`, week `2026-07-20`) contains blank fields (`250,91000,455,,,1.3`). * It is ambiguous whether pixel tracking failed for this campaign in Week 3 or if conversions were strictly zero. If automated data pipelines ingest blanks as nulls, CPA denominators break; if treated as zero, the 4-week CPA jumps from $107.14 to $142.86. 2. **Deterministic, Non-Organic Average Order Value (AOV = Exactly $68.00):** * Across all 397 conversions in the four-week period, every single purchase yields an AOV of exactly **$68.00** ($\$11,492 / 169 = \$68.00$; $\$9,384 / 138 = \$68.00$; $\$5,644 / 83 = \$68.00$; $\$476 / 7 = \$68.00$). * In live DTC ecommerce, customer baskets exhibit variation (multi-pack orders, accessory add-ons, promotional discounts, taxes, or shipping fees). An invariant $68.00 order value indicates synthetic data generation or a rigid cart environment allowing only single-unit checkouts. 3. **Conflict with Source Document (`facts.md`):** * The authoritative `facts.md` states: *"No campaign has launched and no performance data exists."* However, `campaigns.csv` supplies four full weeks of performance data spanning July 2026 with $9,800 in spend. This indicates `campaigns.csv` represents pre-launch simulation modeling, beta-test data, or that `facts.md` was not updated when pilot campaigns launched. 4. **Artificially Linear Performance Steps:** * In `Prospecting - Broad`, CTR declines with mathematical precision: exactly $-0.30\%$ each week (1.80% $\to$ 1.50% $\to$ 1.20% $\to$ 0.90%). Conversions drop by exactly 12 orders/week across the first three weeks (60 $\to$ 48 $\to$ 36). * In `Prospecting - Small-Space Interest`, conversions alternate in an exact oscillating pattern (34 $\to$ 35 $\to$ 34 $\to$ 35) with CTR virtually constant at 1.90%. Such low variance is characteristic of synthetic modeling rather than real-world ad auctions.

Open this task's own page →

Quarterly paid-media review from the raw daily export ads-ledger-analysis0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

You are the retained marketing analyst for Verra Threads, a DTC apparel brand. The CMO has asked for the quarterly paid-media performance review. The complete daily ads export for the last 14 weeks (2026-03-02 through 2026-06-07) is supplied below as CSV; every figure you need is in it, and nothing outside it may be cited as data. Write the review the CMO will actually read: what is working, what is broken, and what you would change next week, grounded in numbers you computed from the export. Show enough method that a colleague could re-derive any figure you cite. Use these definitions exactly: - Net conversions = conversions - refunded_conversions. Net revenue = revenue_usd - refunded_revenue_usd. - An adset-day is one CSV row. Wasted spend = total spend_usd across adset-days with conversions = 0. - Weeks are Monday-start calendar weeks: W1 = 2026-03-02 through 2026-03-08, W2 starts 2026-03-09, and so on through W14 = 2026-06-01 through 2026-06-07. - The final 28 days = 2026-05-11 through 2026-06-07 inclusive. End the review with an answer block in exactly this format, one line per answer, each line starting with the label: A1: <blended CPA across the full 14 weeks: total spend divided by net conversions, in dollars> A2: <total wasted spend across the full 14 weeks, in dollars> A3: <the week number, 1-14, in which the prospecting-broad campaign's weekly net ROAS (net revenue divided by spend) first fell below 1.0> A4: <total refunded revenue of the single adset with the most refunded revenue, in dollars> A5: <account-wide net ROAS for the final 28 days, to two decimals> This is an internal analysis for review only. Do not fetch external data and do not invent benchmarks. --- ## Supplied source: ads_daily.csv date,campaign,adset,spend_usd,impressions,clicks,conversions,revenue_usd,refunded_conversions,refunded_revenue_usd 2026-03-02,brand-search,bs-exact,112.39,6605,117,6,535.37,0,0.00 2026-03-02,brand-search,bs-phrase,83.45,5299,56,6,592.61,0,0.00 2026-03-02,prospecting-broad,pb-interest,98.29,6939,144,5,378.77,0,0.00 2026-03-02,prospecting-broad,pb-video,66.20,4344,47,2,155.73,0,0.00 2026-03-02,prospecting-broad,pb-lookalike,76.27,4329,81,4,320.13,0,0.00 2026-03-02,retargeting,rt-visitors,63.01,5002,79,7,631.93,0,0.00 2026-03-02,retargeting,rt-lookalike,85.74,5892,109,7,629.14,1,89.88 2026-03-02,retargeting,rt-cart,44.18,2467,34,2,184.72,0,0.00 2026-03-03,brand-search,bs-exact,130.64,7289,131,9,762.54,1,84.73 2026-03-03,brand-search,bs-phrase,101.10,6028,82,4,356.93,0,0.00 2026-03-03,prospecting-broad,pb-interest,107.06,7651,117,4,370.93,1,92.73 2026-03-03,prospecting-broad,pb-video,65.24,4505,63,3,267.39,0,0.00 2026-03-03,prospecting-broad,pb-lookalike,103.18,6885,138,6,491.16,0,0.00 2026-03-03,retargeting,rt-visitors,55.58,4423,86,4,404.35,0,0.00 2026-03-03,retargeting,rt-lookalike,66.33,3862,74,3,282.37,1,94.12 2026-03-03,retargeting,rt-cart,49.70,3805,38,3,272.40,0,0.00 2026-03-04,brand-search,bs-exact,132.61,8390,115,13,1126.47,0,0.00 2026-03-04,brand-search,bs-phrase,101.32,7096,147,10,840.52,0,0.00 2026-03-04,prospecting-broad,pb-interest,100.75,6578,78,4,337.86,0,0.00 2026-03-04,prospecting-broad,pb-video,69.07,5293,73,2,138.53,0,0.00 2026-03-04,prospecting-broad,pb-lookalike,96.76,7588,133,3,294.00,0,0.00 2026-03-04,retargeting,rt-visitors,55.69,3560,61,2,162.70,0,0.00 2026-03-04,retargeting,rt-lookalike,63.35,3754,61,2,176.02,1,88.01 2026-03-04,retargeting,rt-cart,46.20,2721,50,1,86.85,0,0.00 2026-03-05,brand-search,bs-exact,110.60,7198,150,12,1041.04,0,0.00 2026-03-05,brand-search,bs-phrase,90.50,6224,89,4,325.05,0,0.00 2026-03-05,prospecting-broad,pb-interest,93.38,6088,66,2,185.66,0,0.00 2026-03-05,prospecting-broad,pb-video,68.88,5422,55,2,176.70,0,0.00 2026-03-05,prospecting-broad,pb-lookalike,81.79,6059,114,3,241.98,0,0.00 2026-03-05,retargeting,rt-visitors,47.75,3194,57,4,336.54,0,0.00 2026-03-05,retargeting,rt-lookalike,73.62,5688,67,6,555.34,1,92.56 2026-03-05,retargeting,rt-cart,49.86,3602,78,4,344.85,0,0.00 2026-03-06,brand-search,bs-exact,102.20,6631,145,9,723.43,0,0.00 2026-03-06,brand-search,bs-phrase,100.98,6298,78,3,249.09,0,0.00 2026-03-06,prospecting-broad,pb-interest,112.04,8369,143,3,240.68,0,0.00 2026-03-06,prospecting-broad,pb-video,50.94,3424,34,0,0.00,0,0.00 2026-03-06,prospecting-broad,pb-lookalike,98.47,5815,94,1,95.84,0,0.00 2026-03-06,retargeting,rt-visitors,65.04,4613,89,1,79.22,0,0.00 2026-03-06,retargeting,rt-lookalike,69.34,3819,67,3,261.51,1,87.17 2026-03-06,retargeting,rt-cart,51.30,3159,45,4,338.38,0,0.00 2026-03-07,brand-search,bs-exact,125.38,9670,152,12,1224.50,0,0.00 2026-03-07,brand-search,bs-phrase,96.31,7555,112,7,559.74,0,0.00 2026-03-07,prospecting-broad,pb-interest,112.17,6369,80,3,218.34,0,0.00 2026-03-07,prospecting-broad,pb-video,50.84,3568,46,1,73.12,0,0.00 2026-03-07,prospecting-broad,pb-lookalike,100.59,6966,84,6,460.26,0,0.00 2026-03-07,retargeting,rt-visitors,56.28,3769,49,3,300.38,0,0.00 2026-03-07,retargeting,rt-lookalike,67.63,3985,50,2,196.35,1,98.17 2026-03-07,retargeting,rt-cart,53.42,3967,60,3,319.40,0,0.00 2026-03-08,brand-search,bs-exact,114.58,7312,106,3,289.02,0,0.00 2026-03-08,brand-search,bs-phrase,97.09,7270,88,2,185.40,0,0.00 2026-03-08,prospecting-broad,pb-interest,124.43,8624,86,3,229.49,0,0.00 2026-03-08,prospecting-broad,pb-video,58.89,4680,71,2,163.88,0,0.00 2026-03-08,prospecting-broad,pb-lookalike,74.92,5576,62,0,0.00,0,0.00 2026-03-08,retargeting,rt-visitors,52.78,4107,51,1,101.32,0,0.00 2026-03-08,retargeting,rt-lookalike,75.15,5753,103,6,639.69,1,106.62 2026-03-08,retargeting,rt-cart,47.74,2823,29,2,188.61,0,0.00 2026-03-09,brand-search,bs-exact,105.13,5967,98,5,425.71,0,0.00 2026-03-09,brand-search,bs-phrase,87.23,4930,70,5,429.71,0,0.00 2026-03-09,prospecting-broad,pb-interest,124.12,7582,129,3,231.05,1,77.02 2026-03-09,prospecting-broad,pb-video,58.35,3305,35,0,0.00,0,0.00 2026-03-09,prospecting-broad,pb-lookalike,102.38,6573,105,4,362.99,1,90.75 2026-03-09,retargeting,rt-visitors,63.36,4137,87,4,400.06,0,0.00 2026-03-09,retargeting,rt-lookalike,72.52,5648,77,3,252.76,1,84.25 2026-03-09,retargeting,rt-cart,51.64,3727,39,0,0.00,0,0.00 2026-03-10,brand-search,bs-exact,129.38,7839,158,10,972.80,1,97.28 2026-03-10,brand-search,bs-phrase,90.94,5516,101,3,255.50,0,0.00 2026-03-10,prospecting-broad,pb-interest,98.68,6230,83,1,95.27,0,0.00 2026-03-10,prospecting-broad,pb-video,55.46,3124,37,0,0.00,0,0.00 2026-03-10,prospecting-broad,pb-lookalike,89.96,5376,116,6,521.14,0,0.00 2026-03-10,retargeting,rt-visitors,56.44,4490,55,3,304.53,0,0.00 2026-03-10,retargeting,rt-lookalike,76.82,4255,89,6,559.19,0,0.00 2026-03-10,retargeting,rt-cart,41.77,2315,43,4,434.57,0,0.00 2026-03-11,brand-search,bs-exact,123.15,7773,118,5,480.23,0,0.00 2026-03-11,brand-search,bs-phrase,86.17,5846,91,3,237.30,0,0.00 2026-03-11,prospecting-broad,pb-interest,117.63,9206,97,3,224.57,1,74.86 2026-03-11,prospecting-broad,pb-video,64.18,3710,74,1,68.87,0,0.00 2026-03-11,prospecting-broad,pb-lookalike,94.75,5523,72,2,180.17,1,90.08 2026-03-11,retargeting,rt-visitors,48.32,3179,32,2,156.58,0,0.00 2026-03-11,retargeting,rt-lookalike,77.48,4867,64,4,339.92,1,84.98 2026-03-11,retargeting,rt-cart,43.81,3200,63,7,655.80,1,93.69 2026-03-12,brand-search,bs-exact,105.82,6736,83,2,167.09,0,0.00 2026-03-12,brand-search,bs-phrase,95.00,6484,95,3,260.30,0,0.00 2026-03-12,prospecting-broad,pb-interest,95.69,6473,139,6,498.96,1,83.16 2026-03-12,prospecting-broad,pb-video,62.21,4161,87,1,75.74,0,0.00 2026-03-12,prospecting-broad,pb-lookalike,90.16,6110,113,2,161.28,0,0.00 2026-03-12,retargeting,rt-visitors,50.51,2962,47,3,257.97,0,0.00 2026-03-12,retargeting,rt-lookalike,65.55,3841,69,2,184.21,0,0.00 2026-03-12,retargeting,rt-cart,49.10,2753,56,6,574.59,1,95.77 2026-03-13,brand-search,bs-exact,98.98,6593,73,2,196.61,0,0.00 2026-03-13,brand-search,bs-phrase,98.67,5878,71,4,335.14,0,0.00 2026-03-13,prospecting-broad,pb-interest,110.40,6788,115,4,371.98,0,0.00 2026-03-13,prospecting-broad,pb-video,62.14,4737,53,1,69.85,0,0.00 2026-03-13,prospecting-broad,pb-lookalike,92.64,5433,97,3,239.31,1,79.77 2026-03-13,retargeting,rt-visitors,51.49,3056,64,5,469.30,0,0.00 2026-03-13,retargeting,rt-lookalike,78.35,5789,97,7,686.32,1,98.05 2026-03-13,retargeting,rt-cart,53.88,3164,34,2,220.20,0,0.00 2026-03-14,brand-search,bs-exact,139.76,11026,179,12,1115.88,0,0.00 2026-03-14,brand-search,bs-phrase,91.27,6214,120,6,580.49,0,0.00 2026-03-14,prospecting-broad,pb-interest,122.96,9588,205,7,559.74,0,0.00 2026-03-14,prospecting-broad,pb-video,72.06,4127,60,1,79.21,1,79.21 2026-03-14,prospecting-broad,pb-lookalike,88.89,5452,60,1,92.30,0,0.00 2026-03-14,retargeting,rt-visitors,49.55,2808,46,2,174.33,0,0.00 2026-03-14,retargeting,rt-lookalike,80.60,5332,87,3,300.54,1,100.18 2026-03-14,retargeting,rt-cart,43.26,2756,47,2,171.48,1,85.74 2026-03-15,brand-search,bs-exact,105.31,8029,93,4,389.88,0,0.00 2026-03-15,brand-search,bs-phrase,86.67,6322,100,3,230.42,0,0.00 2026-03-15,prospecting-broad,pb-interest,108.65,8158,83,6,450.92,0,0.00 2026-03-15,prospecting-broad,pb-video,66.16,3860,40,0,0.00,0,0.00 2026-03-15,prospecting-broad,pb-lookalike,101.97,7965,94,2,184.66,0,0.00 2026-03-15,retargeting,rt-visitors,59.87,3511,60,3,246.14,0,0.00 2026-03-15,retargeting,rt-lookalike,72.76,4374,51,2,201.91,0,0.00 2026-03-15,retargeting,rt-cart,50.51,3056,47,4,407.18,0,0.00 2026-03-16,brand-search,bs-exact,121.61,7757,114,8,749.39,0,0.00 2026-03-16,brand-search,bs-phrase,85.85,4936,82,4,401.14,0,0.00 2026-03-16,prospecting-broad,pb-interest,112.14,7020,85,2,157.84,0,0.00 2026-03-16,prospecting-broad,pb-video,54.50,3346,41,1,84.29,0,0.00 2026-03-16,prospecting-broad,pb-lookalike,102.78,5755,122,0,0.00,0,0.00 2026-03-16,retargeting,rt-visitors,61.55,4034,87,6,474.21,0,0.00 2026-03-16,retargeting,rt-lookalike,62.14,3550,38,2,167.78,0,0.00 2026-03-16,retargeting,rt-cart,40.82,3195,39,2,206.05,0,0.00 2026-03-17,brand-search,bs-exact,101.59,7909,160,6,480.90,0,0.00 2026-03-17,brand-search,bs-phrase,106.67,7881,91,4,399.92,0,0.00 2026-03-17,prospecting-broad,pb-interest,114.15,6677,133,5,470.37,0,0.00 2026-03-17,prospecting-broad,pb-video,69.60,4906,81,1,84.21,0,0.00 2026-03-17,prospecting-broad,pb-lookalike,88.42,5297,111,3,238.18,0,0.00 2026-03-17,retargeting,rt-visitors,52.57,3241,48,5,503.80,1,100.76 2026-03-17,retargeting,rt-lookalike,75.14,5791,124,5,440.58,0,0.00 2026-03-17,retargeting,rt-cart,46.17,2594,40,5,444.48,0,0.00 2026-03-18,brand-search,bs-exact,107.09,7643,154,11,962.64,0,0.00 2026-03-18,brand-search,bs-phrase,82.18,5266,76,3,296.70,0,0.00 2026-03-18,prospecting-broad,pb-interest,118.06,7729,107,2,186.66,0,0.00 2026-03-18,prospecting-broad,pb-video,61.10,3907,39,1,71.36,0,0.00 2026-03-18,prospecting-broad,pb-lookalike,87.57,4933,66,1,76.58,0,0.00 2026-03-18,retargeting,rt-visitors,66.14,3794,77,4,324.19,0,0.00 2026-03-18,retargeting,rt-lookalike,63.97,4122,49,0,0.00,0,0.00 2026-03-18,retargeting,rt-cart,43.60,3000,47,6,617.14,1,102.86 2026-03-19,brand-search,bs-exact,121.83,9388,147,6,564.82,0,0.00 2026-03-19,brand-search,bs-phrase,106.04,7396,95,6,474.80,1,79.13 2026-03-19,prospecting-broad,pb-interest,120.61,8416,112,1,86.83,0,0.00 2026-03-19,prospecting-broad,pb-video,73.07,5549,68,2,166.04,0,0.00 2026-03-19,prospecting-broad,pb-lookalike,101.26,7548,145,6,552.15,0,0.00 2026-03-19,retargeting,rt-visitors,64.73,4545,89,6,552.25,0,0.00 2026-03-19,retargeting,rt-lookalike,73.73,5366,84,2,200.48,0,0.00 2026-03-19,retargeting,rt-cart,50.76,2956,40,5,455.88,0,0.00 2026-03-20,brand-search,bs-exact,111.93,7048,119,5,404.83,0,0.00 2026-03-20,brand-search,bs-phrase,89.13,5439,89,7,671.84,0,0.00 2026-03-20,prospecting-broad,pb-interest,93.41,7030,134,8,620.53,0,0.00 2026-03-20,prospecting-broad,pb-video,72.09,4789,89,2,153.81,0,0.00 2026-03-20,prospecting-broad,pb-lookalike,88.02,5254,74,2,157.01,0,0.00 2026-03-20,retargeting,rt-visitors,57.19,3361,50,3,299.60,0,0.00 2026-03-20,retargeting,rt-lookalike,68.36,3808,60,2,211.80,0,0.00 2026-03-20,retargeting,rt-cart,55.05,3801,80,4,438.19,0,0.00 2026-03-21,brand-search,bs-exact,109.32,6464,105,6,543.29,0,0.00 2026-03-21,brand-search,bs-phrase,92.61,6534,93,6,557.55,1,92.92 2026-03-21,prospecting-broad,pb-interest,108.85,8513,181,6,434.01,0,0.00 2026-03-21,prospecting-broad,pb-video,64.86,3622,48,1,73.12,0,0.00 2026-03-21,prospecting-broad,pb-lookalike,74.06,5275,67,1,84.04,0,0.00 2026-03-21,retargeting,rt-visitors,63.42,3759,45,3,303.74,0,0.00 2026-03-21,retargeting,rt-lookalike,71.30,4294,93,3,258.99,0,0.00 2026-03-21,retargeting,rt-cart,52.70,4113,61,5,465.23,0,0.00 2026-03-22,brand-search,bs-exact,139.32,8943,143,9,775.57,1,86.17 2026-03-22,brand-search,bs-phrase,91.14,5652,110,5,418.55,0,0.00 2026-03-22,prospecting-broad,pb-interest,111.84,7043,151,3,258.60,0,0.00 2026-03-22,prospecting-broad,pb-video,69.65,5388,91,0,0.00,0,0.00 2026-03-22,prospecting-broad,pb-lookalike,88.57,6876,108,3,275.72,0,0.00 2026-03-22,retargeting,rt-visitors,66.72,5215,103,3,296.35,0,0.00 2026-03-22,retargeting,rt-lookalike,73.00,4545,74,5,431.59,0,0.00 2026-03-22,retargeting,rt-cart,47.41,3286,48,4,416.28,0,0.00 2026-03-23,brand-search,bs-exact,122.62,8087,173,13,1130.27,1,86.94 2026-03-23,brand-search,bs-phrase,98.79,6275,76,6,492.78,0,0.00 2026-03-23,prospecting-broad,pb-interest,129.54,7871,145,0,0.00,0,0.00 2026-03-23,prospecting-broad,pb-video,65.58,4955,53,0,0.00,0,0.00 2026-03-23,prospecting-broad,pb-lookalike,93.72,6383,126,0,0.00,0,0.00 2026-03-23,retargeting,rt-visitors,55.45,3062,44,2,166.24,0,0.00 2026-03-23,retargeting,rt-lookalike,85.48,6260,88,4,428.03,1,107.01 2026-03-23,retargeting,rt-cart,44.97,2575,27,2,185.99,0,0.00 2026-03-24,brand-search,bs-exact,103.63,6945,90,6,510.64,0,0.00 2026-03-24,brand-search,bs-phrase,101.17,7432,142,8,728.76,0,0.00 2026-03-24,prospecting-broad,pb-interest,104.34,6458,93,0,0.00,0,0.00 2026-03-24,prospecting-broad,pb-video,70.75,5630,86,2,170.30,0,0.00 2026-03-24,prospecting-broad,pb-lookalike,78.29,4666,71,1,84.44,0,0.00 2026-03-24,retargeting,rt-visitors,48.35,3372,55,3,301.59,0,0.00 2026-03-24,retargeting,rt-lookalike,87.29,6099,122,10,1050.68,2,210.14 2026-03-24,retargeting,rt-cart,50.57,4043,44,2,183.25,0,0.00 2026-03-25,brand-search,bs-exact,105.69,6358,138,9,848.30,1,94.26 2026-03-25,brand-search,bs-phrase,106.58,6744,90,1,76.24,0,0.00 2026-03-25,prospecting-broad,pb-interest,96.73,6527,125,3,285.20,0,0.00 2026-03-25,prospecting-broad,pb-video,64.48,3711,62,1,84.82,0,0.00 2026-03-25,prospecting-broad,pb-lookalike,95.94,7599,92,1,75.47,0,0.00 2026-03-25,retargeting,rt-visitors,49.97,2886,35,1,83.08,0,0.00 2026-03-25,retargeting,rt-lookalike,70.05,4104,54,2,181.20,2,181.20 2026-03-25,retargeting,rt-cart,51.93,3890,71,4,416.96,0,0.00 2026-03-26,brand-search,bs-exact,116.28,6455,76,3,303.88,0,0.00 2026-03-26,brand-search,bs-phrase,100.99,7809,115,3,229.37,0,0.00 2026-03-26,prospecting-broad,pb-interest,114.19,6984,128,4,299.21,0,0.00 2026-03-26,prospecting-broad,pb-video,66.45,4941,61,2,163.53,0,0.00 2026-03-26,prospecting-broad,pb-lookalike,82.73,6240,126,4,362.77,0,0.00 2026-03-26,retargeting,rt-visitors,62.21,4074,87,3,278.21,0,0.00 2026-03-26,retargeting,rt-lookalike,87.01,5184,103,2,205.46,0,0.00 2026-03-26,retargeting,rt-cart,44.10,2744,44,3,298.17,1,99.39 2026-03-27,brand-search,bs-exact,119.17,9002,197,13,1088.70,0,0.00 2026-03-27,brand-search,bs-phrase,102.02,7316,73,4,305.20,0,0.00 2026-03-27,prospecting-broad,pb-interest,128.93,8286,95,2,180.94,0,0.00 2026-03-27,prospecting-broad,pb-video,58.07,3600,68,4,293.40,0,0.00 2026-03-27,prospecting-broad,pb-lookalike,77.20,4921,106,1,85.84,0,0.00 2026-03-27,retargeting,rt-visitors,62.77,4330,65,4,390.03,0,0.00 2026-03-27,retargeting,rt-lookalike,70.22,4963,101,10,1044.16,0,0.00 2026-03-27,retargeting,rt-cart,55.35,4161,84,7,756.40,0,0.00 2026-03-28,brand-search,bs-exact,134.29,9402,186,14,1330.75,0,0.00 2026-03-28,brand-search,bs-phrase,103.40,5989,108,5,491.10,0,0.00 2026-03-28,prospecting-broad,pb-interest,109.41,8602,135,8,618.25,0,0.00 2026-03-28,prospecting-broad,pb-video,53.64,3630,76,0,0.00,0,0.00 2026-03-28,prospecting-broad,pb-lookalike,89.11,4944,75,4,332.61,0,0.00 2026-03-28,retargeting,rt-visitors,59.20,3754,43,2,156.38,0,0.00 2026-03-28,retargeting,rt-lookalike,61.37,3846,62,3,253.43,0,0.00 2026-03-28,retargeting,rt-cart,53.24,3994,57,4,364.20,1,91.05 2026-03-29,brand-search,bs-exact,137.45,8936,132,6,539.33,0,0.00 2026-03-29,brand-search,bs-phrase,95.44,6014,104,6,506.29,1,84.38 2026-03-29,prospecting-broad,pb-interest,113.48,7933,147,3,231.34,0,0.00 2026-03-29,prospecting-broad,pb-video,51.63,2844,61,0,0.00,0,0.00 2026-03-29,prospecting-broad,pb-lookalike,76.75,4488,66,2,164.32,0,0.00 2026-03-29,retargeting,rt-visitors,57.51,3947,44,4,382.28,0,0.00 2026-03-29,retargeting,rt-lookalike,69.06,4264,81,2,168.03,0,0.00 2026-03-29,retargeting,rt-cart,52.97,3506,46,4,343.84,0,0.00 2026-03-30,brand-search,bs-exact,122.62,9083,193,12,1059.74,0,0.00 2026-03-30,brand-search,bs-phrase,107.22,7221,79,1,80.24,0,0.00 2026-03-30,prospecting-broad,pb-interest,125.80,8612,120,2,187.15,0,0.00 2026-03-30,prospecting-broad,pb-video,68.88,4379,77,2,170.80,0,0.00 2026-03-30,prospecting-broad,pb-lookalike,78.18,6050,98,1,80.05,0,0.00 2026-03-30,retargeting,rt-visitors,57.99,3616,49,4,386.46,0,0.00 2026-03-30,retargeting,rt-lookalike,78.98,4665,102,5,483.29,3,289.97 2026-03-30,retargeting,rt-cart,50.30,2929,32,4,339.53,0,0.00 2026-03-31,brand-search,bs-exact,114.75,6622,107,5,416.89,1,83.38 2026-03-31,brand-search,bs-phrase,96.61,6060,71,4,313.72,0,0.00 2026-03-31,prospecting-broad,pb-interest,122.04,7369,158,2,183.99,0,0.00 2026-03-31,prospecting-broad,pb-video,61.90,4050,88,3,269.81,0,0.00 2026-03-31,prospecting-broad,pb-lookalike,87.16,5939,119,3,279.72,0,0.00 2026-03-31,retargeting,rt-visitors,53.85,3403,68,6,481.24,1,80.21 2026-03-31,retargeting,rt-lookalike,81.82,4550,55,2,202.05,0,0.00 2026-03-31,retargeting,rt-cart,41.65,2845,44,3,304.27,0,0.00 2026-04-01,brand-search,bs-exact,110.68,8669,158,6,493.27,1,82.21 2026-04-01,brand-search,bs-phrase,88.00,5632,111,5,441.15,0,0.00 2026-04-01,prospecting-broad,pb-interest,112.51,6468,116,1,87.42,0,0.00 2026-04-01,prospecting-broad,pb-video,56.97,3246,57,1,82.26,0,0.00 2026-04-01,prospecting-broad,pb-lookalike,78.59,5249,81,4,320.01,0,0.00 2026-04-01,retargeting,rt-visitors,53.06,4028,73,6,607.62,0,0.00 2026-04-01,retargeting,rt-lookalike,69.28,5242,64,10,941.40,3,282.42 2026-04-01,retargeting,rt-cart,50.22,3491,70,7,770.94,0,0.00 2026-04-02,brand-search,bs-exact,110.17,6595,100,8,715.31,0,0.00 2026-04-02,brand-search,bs-phrase,81.31,6371,89,4,305.16,0,0.00 2026-04-02,prospecting-broad,pb-interest,107.86,6492,131,2,152.63,0,0.00 2026-04-02,prospecting-broad,pb-video,58.54,3492,49,0,0.00,0,0.00 2026-04-02,prospecting-broad,pb-lookalike,92.29,6144,85,5,478.18,1,95.64 2026-04-02,retargeting,rt-visitors,51.82,3903,72,6,585.48,1,97.58 2026-04-02,retargeting,rt-lookalike,64.47,5120,80,4,415.58,1,103.89 2026-04-02,retargeting,rt-cart,54.27,4252,80,4,412.11,1,103.03 2026-04-03,brand-search,bs-exact,120.48,9179,132,6,483.29,0,0.00 2026-04-03,brand-search,bs-phrase,105.79,8069,103,6,513.20,0,0.00 2026-04-03,prospecting-broad,pb-interest,126.97,8527,119,0,0.00,0,0.00 2026-04-03,prospecting-broad,pb-video,67.54,4807,87,1,73.86,0,0.00 2026-04-03,prospecting-broad,pb-lookalike,97.02,6188,95,1,97.01,0,0.00 2026-04-03,retargeting,rt-visitors,48.50,2989,51,2,197.89,0,0.00 2026-04-03,retargeting,rt-lookalike,75.12,5526,110,7,654.48,1,93.50 2026-04-03,retargeting,rt-cart,46.87,3281,44,3,296.92,0,0.00 2026-04-04,brand-search,bs-exact,133.48,7782,142,6,520.25,0,0.00 2026-04-04,brand-search,bs-phrase,98.79,7092,117,5,488.03,0,0.00 2026-04-04,prospecting-broad,pb-interest,119.25,7058,106,1,82.44,0,0.00 2026-04-04,prospecting-broad,pb-video,57.04,3656,51,3,247.27,1,82.42 2026-04-04,prospecting-broad,pb-lookalike,76.77,4588,67,2,162.91,0,0.00 2026-04-04,retargeting,rt-visitors,49.29,3420,48,0,0.00,0,0.00 2026-04-04,retargeting,rt-lookalike,63.59,4687,95,3,282.67,1,94.22 2026-04-04,retargeting,rt-cart,40.19,2367,45,3,285.34,0,0.00 2026-04-05,brand-search,bs-exact,105.49,8015,82,2,207.33,0,0.00 2026-04-05,brand-search,bs-phrase,79.61,5744,102,5,435.89,0,0.00 2026-04-05,prospecting-broad,pb-interest,111.71,8339,168,1,88.18,0,0.00 2026-04-05,prospecting-broad,pb-video,68.06,3977,83,1,74.10,0,0.00 2026-04-05,prospecting-broad,pb-lookalike,84.05,4789,68,1,97.30,0,0.00 2026-04-05,retargeting,rt-visitors,54.86,3628,51,2,199.42,0,0.00 2026-04-05,retargeting,rt-lookalike,75.21,4937,57,2,163.67,1,81.83 2026-04-05,retargeting,rt-cart,51.08,3789,71,7,723.57,1,103.37 2026-04-06,brand-search,bs-exact,124.08,7549,135,4,346.61,0,0.00 2026-04-06,brand-search,bs-phrase,97.81,7664,84,11,992.39,0,0.00 2026-04-06,prospecting-broad,pb-interest,90.24,6978,115,3,243.53,0,0.00 2026-04-06,prospecting-broad,pb-video,66.19,4709,47,0,0.00,0,0.00 2026-04-06,prospecting-broad,pb-lookalike,97.66,5785,93,1,93.19,0,0.00 2026-04-06,retargeting,rt-visitors,55.38,3157,62,3,293.14,0,0.00 2026-04-06,retargeting,rt-lookalike,75.41,5105,65,5,492.14,1,98.43 2026-04-06,retargeting,rt-cart,49.92,3031,47,2,211.97,0,0.00 2026-04-07,brand-search,bs-exact,124.61,6883,110,10,842.19,0,0.00 2026-04-07,brand-search,bs-phrase,80.13,6177,98,4,329.74,0,0.00 2026-04-07,prospecting-broad,pb-interest,123.04,7049,137,1,92.32,0,0.00 2026-04-07,prospecting-broad,pb-video,63.81,5072,87,2,149.69,0,0.00 2026-04-07,prospecting-broad,pb-lookalike,99.91,7825,142,1,78.48,0,0.00 2026-04-07,retargeting,rt-visitors,62.11,4291,70,1,101.32,0,0.00 2026-04-07,retargeting,rt-lookalike,79.35,4446,93,3,301.32,1,100.44 2026-04-07,retargeting,rt-cart,53.44,3689,71,6,573.64,0,0.00 2026-04-08,brand-search,bs-exact,130.25,7654,124,11,1098.07,0,0.00 2026-04-08,brand-search,bs-phrase,79.29,5322,59,3,271.50,0,0.00 2026-04-08,prospecting-broad,pb-interest,111.62,7607,79,3,272.93,0,0.00 2026-04-08,prospecting-broad,pb-video,57.43,3773,55,2,181.73,0,0.00 2026-04-08,prospecting-broad,pb-lookalike,78.95,4498,66,1,77.26,0,0.00 2026-04-08,retargeting,rt-visitors,62.95,3606,38,5,459.39,0,0.00 2026-04-08,retargeting,rt-lookalike,82.03,4716,103,5,488.42,1,97.68 2026-04-08,retargeting,rt-cart,45.74,3650,69,6,547.76,0,0.00 2026-04-09,brand-search,bs-exact,107.92,7377,106,3,272.73,0,0.00 2026-04-09,brand-search,bs-phrase,109.65,8362,165,8,774.71,0,0.00 2026-04-09,prospecting-broad,pb-interest,108.89,6116,63,0,0.00,0,0.00 2026-04-09,prospecting-broad,pb-video,65.04,3678,65,0,0.00,0,0.00 2026-04-09,prospecting-broad,pb-lookalike,74.11,5888,84,1,84.62,0,0.00 2026-04-09,retargeting,rt-visitors,56.56,3207,67,6,465.90,0,0.00 2026-04-09,retargeting,rt-lookalike,71.70,4920,103,3,278.38,0,0.00 2026-04-09,retargeting,rt-cart,40.48,2732,48,4,385.42,0,0.00 2026-04-10,brand-search,bs-exact,131.35,9189,116,4,318.89,0,0.00 2026-04-10,brand-search,bs-phrase,79.90,4416,85,7,636.63,0,0.00 2026-04-10,prospecting-broad,pb-interest,118.27,7754,159,6,572.35,0,0.00 2026-04-10,prospecting-broad,pb-video,64.85,4051,85,2,140.47,0,0.00 2026-04-10,prospecting-broad,pb-lookalike,77.54,6144,74,1,93.08,0,0.00 2026-04-10,retargeting,rt-visitors,67.02,5084,84,5,416.87,0,0.00 2026-04-10,retargeting,rt-lookalike,86.93,5240,68,6,566.49,2,188.83 2026-04-10,retargeting,rt-cart,55.31,4343,86,7,695.52,0,0.00 2026-04-11,brand-search,bs-exact,126.68,8012,82,3,283.74,0,0.00 2026-04-11,brand-search,bs-phrase,98.32,6238,81,3,241.12,0,0.00 2026-04-11,prospecting-broad,pb-interest,96.25,7696,140,0,0.00,0,0.00 2026-04-11,prospecting-broad,pb-video,71.42,4835,64,1,86.70,0,0.00 2026-04-11,prospecting-broad,pb-lookalike,98.12,7092,129,4,385.72,0,0.00 2026-04-11,retargeting,rt-visitors,58.08,4111,50,2,179.93,0,0.00 2026-04-11,retargeting,rt-lookalike,67.75,4128,80,3,263.32,0,0.00 2026-04-11,retargeting,rt-cart,57.41,3980,62,6,542.54,0,0.00 2026-04-12,brand-search,bs-exact,128.54,7378,148,5,516.57,0,0.00 2026-04-12,brand-search,bs-phrase,85.55,5372,91,5,482.83,0,0.00 2026-04-12,prospecting-broad,pb-interest,96.41,7119,122,4,314.47,0,0.00 2026-04-12,prospecting-broad,pb-video,61.92,4141,48,1,79.62,0,0.00 2026-04-12,prospecting-broad,pb-lookalike,91.21,6248,134,3,223.63,0,0.00 2026-04-12,retargeting,rt-visitors,50.62,3142,42,0,0.00,0,0.00 2026-04-12,retargeting,rt-lookalike,85.27,5846,105,3,319.27,1,106.42 2026-04-12,retargeting,rt-cart,56.13,3920,41,0,0.00,0,0.00 2026-04-13,brand-search,bs-exact,106.30,6975,145,8,755.49,0,0.00 2026-04-13,brand-search,bs-phrase,108.53,7870,95,6,490.23,0,0.00 2026-04-13,prospecting-broad,pb-interest,115.82,8151,166,2,158.31,1,79.16 2026-04-13,prospecting-broad,pb-video,69.33,4652,101,1,71.95,0,0.00 2026-04-13,prospecting-broad,pb-lookalike,101.42,6642,118,2,149.50,0,0.00 2026-04-13,retargeting,rt-visitors,63.83,4066,42,1,78.47,0,0.00 2026-04-13,retargeting,rt-lookalike,71.57,4755,79,5,420.92,0,0.00 2026-04-13,retargeting,rt-cart,52.23,3875,74,5,464.59,0,0.00 2026-04-14,brand-search,bs-exact,119.63,7816,119,8,713.55,1,89.19 2026-04-14,brand-search,bs-phrase,83.79,6527,103,0,0.00,0,0.00 2026-04-14,prospecting-broad,pb-interest,112.71,7101,112,3,241.47,0,0.00 2026-04-14,prospecting-broad,pb-video,69.10,3928,71,3,252.70,0,0.00 2026-04-14,prospecting-broad,pb-lookalike,80.72,5702,63,0,0.00,0,0.00 2026-04-14,retargeting,rt-visitors,53.24,3642,68,5,421.93,0,0.00 2026-04-14,retargeting,rt-lookalike,80.98,5019,60,3,312.53,0,0.00 2026-04-14,retargeting,rt-cart,53.62,4051,57,7,663.00,0,0.00 2026-04-15,brand-search,bs-exact,139.56,8346,134,7,714.71,0,0.00 2026-04-15,brand-search,bs-phrase,93.27,6691,106,6,558.32,0,0.00 2026-04-15,prospecting-broad,pb-interest,124.89,9779,197,5,438.06,0,0.00 2026-04-15,prospecting-broad,pb-video,50.94,3218,39,0,0.00,0,0.00 2026-04-15,prospecting-broad,pb-lookalike,90.71,5682,64,1,83.20,1,83.20 2026-04-15,retargeting,rt-visitors,59.43,3285,69,6,532.91,0,0.00 2026-04-15,retargeting,rt-lookalike,84.21,5862,90,8,708.08,3,265.53 2026-04-15,retargeting,rt-cart,51.65,3937,39,0,0.00,0,0.00 2026-04-16,brand-search,bs-exact,122.23,7448,145,8,746.69,0,0.00 2026-04-16,brand-search,bs-phrase,107.83,6998,141,6,545.59,0,0.00 2026-04-16,prospecting-broad,pb-interest,104.27,7342,136,2,174.05,0,0.00 2026-04-16,prospecting-broad,pb-video,57.26,4028,62,0,0.00,0,0.00 2026-04-16,prospecting-broad,pb-lookalike,99.83,6821,149,2,168.86,0,0.00 2026-04-16,retargeting,rt-visitors,57.13,4372,57,0,0.00,0,0.00 2026-04-16,retargeting,rt-lookalike,87.19,5540,110,4,422.55,2,211.28 2026-04-16,retargeting,rt-cart,49.45,2766,59,3,292.67,0,0.00 2026-04-17,brand-search,bs-exact,137.09,8508,129,10,1022.91,0,0.00 2026-04-17,brand-search,bs-phrase,103.16,8105,91,8,782.14,0,0.00 2026-04-17,prospecting-broad,pb-interest,93.01,6802,80,2,188.84,0,0.00 2026-04-17,prospecting-broad,pb-video,62.86,4319,74,0,0.00,0,0.00 2026-04-17,prospecting-broad,pb-lookalike,74.45,4332,83,0,0.00,0,0.00 2026-04-17,retargeting,rt-visitors,57.09,3624,53,3,289.78,0,0.00 2026-04-17,retargeting,rt-lookalike,60.89,3880,78,3,269.35,0,0.00 2026-04-17,retargeting,rt-cart,55.17,3353,50,6,575.23,0,0.00 2026-04-18,brand-search,bs-exact,134.78,7638,109,4,407.35,0,0.00 2026-04-18,brand-search,bs-phrase,90.73,5591,99,2,178.00,0,0.00 2026-04-18,prospecting-broad,pb-interest,106.13,6722,98,0,0.00,0,0.00 2026-04-18,prospecting-broad,pb-video,71.59,4910,95,1,83.38,0,0.00 2026-04-18,prospecting-broad,pb-lookalike,72.98,4318,52,0,0.00,0,0.00 2026-04-18,retargeting,rt-visitors,65.49,4498,98,4,309.95,0,0.00 2026-04-18,retargeting,rt-lookalike,76.54,5465,118,9,859.00,0,0.00 2026-04-18,retargeting,rt-cart,42.57,3113,61,5,457.72,0,0.00 2026-04-19,brand-search,bs-exact,111.59,8287,84,4,361.19,0,0.00 2026-04-19,brand-search,bs-phrase,109.08,6791,136,8,622.26,0,0.00 2026-04-19,prospecting-broad,pb-interest,125.51,7070,84,6,470.96,0,0.00 2026-04-19,prospecting-broad,pb-video,70.21,4477,73,1,73.37,0,0.00 2026-04-19,prospecting-broad,pb-lookalike,86.21,5814,76,1,96.12,0,0.00 2026-04-19,retargeting,rt-visitors,53.21,3437,36,1,89.64,0,0.00 2026-04-19,retargeting,rt-lookalike,73.17,5676,122,6,610.50,4,407.00 2026-04-19,retargeting,rt-cart,55.74,4015,71,6,556.63,0,0.00 2026-04-20,brand-search,bs-exact,99.94,7752,142,5,438.21,0,0.00 2026-04-20,brand-search,bs-phrase,100.96,7553,148,3,280.36,0,0.00 2026-04-20,prospecting-broad,pb-interest,128.24,9225,172,3,273.42,0,0.00 2026-04-20,prospecting-broad,pb-video,68.22,5309,97,0,0.00,0,0.00 2026-04-20,prospecting-broad,pb-lookalike,98.84,6933,85,0,0.00,0,0.00 2026-04-20,retargeting,rt-visitors,65.86,4388,74,4,342.42,0,0.00 2026-04-20,retargeting,rt-lookalike,81.23,5515,117,4,431.91,1,107.98 2026-04-20,retargeting,rt-cart,57.00,3733,49,2,191.38,0,0.00 2026-04-21,brand-search,bs-exact,105.72,6550,113,4,419.00,0,0.00 2026-04-21,brand-search,bs-phrase,110.27,7691,115,10,882.96,0,0.00 2026-04-21,prospecting-broad,pb-interest,113.36,7703,81,1,90.73,0,0.00 2026-04-21,prospecting-broad,pb-video,69.09,4447,97,2,150.90,1,75.45 2026-04-21,prospecting-broad,pb-lookalike,85.58,6835,146,1,91.31,0,0.00 2026-04-21,retargeting,rt-visitors,59.50,4374,77,7,668.60,1,95.51 2026-04-21,retargeting,rt-lookalike,87.18,5913,109,6,590.88,2,196.96 2026-04-21,retargeting,rt-cart,45.15,3452,42,1,98.74,0,0.00 2026-04-22,brand-search,bs-exact,117.96,7559,107,5,424.45,0,0.00 2026-04-22,brand-search,bs-phrase,88.61,6943,111,7,584.36,0,0.00 2026-04-22,prospecting-broad,pb-interest,91.21,7090,121,3,265.08,0,0.00 2026-04-22,prospecting-broad,pb-video,62.36,4341,57,0,0.00,0,0.00 2026-04-22,prospecting-broad,pb-lookalike,95.43,5799,119,1,75.68,0,0.00 2026-04-22,retargeting,rt-visitors,56.61,3970,64,7,634.60,0,0.00 2026-04-22,retargeting,rt-lookalike,82.40,4539,53,5,415.22,1,83.04 2026-04-22,retargeting,rt-cart,41.03,2520,55,7,657.12,2,187.75 2026-04-23,brand-search,bs-exact,134.27,8171,122,3,253.79,0,0.00 2026-04-23,brand-search,bs-phrase,105.81,7858,118,5,412.19,0,0.00 2026-04-23,prospecting-broad,pb-interest,102.83,7680,84,1,92.94,0,0.00 2026-04-23,prospecting-broad,pb-video,56.89,3710,78,0,0.00,0,0.00 2026-04-23,prospecting-broad,pb-lookalike,91.00,7226,114,3,231.11,0,0.00 2026-04-23,retargeting,rt-visitors,65.74,4097,54,4,372.24,0,0.00 2026-04-23,retargeting,rt-lookalike,64.29,4097,71,1,84.31,1,84.31 2026-04-23,retargeting,rt-cart,53.85,3337,43,4,419.16,0,0.00 2026-04-24,brand-search,bs-exact,103.19,6485,65,6,584.68,0,0.00 2026-04-24,brand-search,bs-phrase,107.44,7047,92,1,85.47,0,0.00 2026-04-24,prospecting-broad,pb-interest,123.67,8286,110,0,0.00,0,0.00 2026-04-24,prospecting-broad,pb-video,55.01,4035,60,1,72.06,0,0.00 2026-04-24,prospecting-broad,pb-lookalike,78.40,5738,89,2,171.05,0,0.00 2026-04-24,retargeting,rt-visitors,49.11,3348,73,6,465.03,0,0.00 2026-04-24,retargeting,rt-lookalike,67.05,4588,74,4,369.16,0,0.00 2026-04-24,retargeting,rt-cart,49.03,2924,31,4,390.49,0,0.00 2026-04-25,brand-search,bs-exact,120.35,8699,123,6,570.57,0,0.00 2026-04-25,brand-search,bs-phrase,90.27,6167,63,3,298.97,0,0.00 2026-04-25,prospecting-broad,pb-interest,122.80,9414,139,2,161.04,0,0.00 2026-04-25,prospecting-broad,pb-video,51.47,3454,69,1,81.63,0,0.00 2026-04-25,prospecting-broad,pb-lookalike,101.79,6261,98,4,324.63,0,0.00 2026-04-25,retargeting,rt-visitors,54.49,3064,60,5,474.85,0,0.00 2026-04-25,retargeting,rt-lookalike,62.26,3781,47,1,107.38,0,0.00 2026-04-25,retargeting,rt-cart,43.00,2988,37,3,288.41,0,0.00 2026-04-26,brand-search,bs-exact,133.61,8137,176,9,927.11,0,0.00 2026-04-26,brand-search,bs-phrase,110.92,8225,144,7,576.07,0,0.00 2026-04-26,prospecting-broad,pb-interest,113.41,8673,106,3,267.95,0,0.00 2026-04-26,prospecting-broad,pb-video,64.35,4813,54,0,0.00,0,0.00 2026-04-26,prospecting-broad,pb-lookalike,76.92,4329,55,0,0.00,0,0.00 2026-04-26,retargeting,rt-visitors,63.44,4383,85,6,476.92,1,79.49 2026-04-26,retargeting,rt-lookalike,82.55,6022,99,4,416.40,1,104.10 2026-04-26,retargeting,rt-cart,46.43,3679,61,2,197.28,0,0.00 2026-04-27,brand-search,bs-exact,122.57,7587,85,2,195.83,0,0.00 2026-04-27,brand-search,bs-phrase,91.70,5772,58,4,309.11,0,0.00 2026-04-27,prospecting-broad,pb-interest,90.51,6794,123,2,163.81,0,0.00 2026-04-27,prospecting-broad,pb-video,54.50,3929,49,2,180.55,0,0.00 2026-04-27,prospecting-broad,pb-lookalike,80.38,5247,85,3,231.28,1,77.09 2026-04-27,retargeting,rt-visitors,62.77,4835,77,7,661.88,0,0.00 2026-04-27,retargeting,rt-lookalike,86.49,5038,51,4,333.36,2,166.68 2026-04-27,retargeting,rt-cart,42.09,2317,48,2,203.26,0,0.00 2026-04-28,brand-search,bs-exact,118.88,7228,103,5,443.38,0,0.00 2026-04-28,brand-search,bs-phrase,100.81,5748,71,1,78.63,0,0.00 2026-04-28,prospecting-broad,pb-interest,108.80,8217,171,3,269.06,0,0.00 2026-04-28,prospecting-broad,pb-video,54.70,3918,70,0,0.00,0,0.00 2026-04-28,prospecting-broad,pb-lookalike,76.32,5649,64,0,0.00,0,0.00 2026-04-28,retargeting,rt-visitors,48.05,3045,36,1,81.16,0,0.00 2026-04-28,retargeting,rt-lookalike,71.90,4490,58,2,212.74,0,0.00 2026-04-28,retargeting,rt-cart,40.94,2582,46,5,451.57,0,0.00 2026-04-29,brand-search,bs-exact,132.54,7515,137,9,829.73,0,0.00 2026-04-29,brand-search,bs-phrase,102.48,6286,64,1,79.03,0,0.00 2026-04-29,prospecting-broad,pb-interest,95.24,7192,132,3,221.10,0,0.00 2026-04-29,prospecting-broad,pb-video,59.85,3569,60,0,0.00,0,0.00 2026-04-29,prospecting-broad,pb-lookalike,90.88,6676,136,2,181.11,0,0.00 2026-04-29,retargeting,rt-visitors,63.04,4987,76,6,591.73,1,98.62 2026-04-29,retargeting,rt-lookalike,63.26,4481,88,6,574.42,3,287.21 2026-04-29,retargeting,rt-cart,47.29,3415,65,1,86.92,0,0.00 2026-04-30,brand-search,bs-exact,105.03,7687,144,7,565.20,0,0.00 2026-04-30,brand-search,bs-phrase,95.51,7218,96,3,263.35,1,87.78 2026-04-30,prospecting-broad,pb-interest,110.64,8479,115,2,187.78,0,0.00 2026-04-30,prospecting-broad,pb-video,63.08,4666,62,0,0.00,0,0.00 2026-04-30,prospecting-broad,pb-lookalike,93.52,6406,83,0,0.00,0,0.00 2026-04-30,retargeting,rt-visitors,63.84,3895,61,2,180.41,0,0.00 2026-04-30,retargeting,rt-lookalike,64.99,4359,45,4,372.66,1,93.17 2026-04-30,retargeting,rt-cart,50.22,3618,63,6,560.16,0,0.00 2026-05-01,brand-search,bs-exact,109.95,6551,143,6,539.31,1,89.88 2026-05-01,brand-search,bs-phrase,108.44,7242,81,0,0.00,0,0.00 2026-05-01,prospecting-broad,pb-interest,93.96,6785,95,1,72.56,0,0.00 2026-05-01,prospecting-broad,pb-video,71.51,5607,58,0,0.00,0,0.00 2026-05-01,prospecting-broad,pb-lookalike,100.14,7039,110,3,288.60,0,0.00 2026-05-01,retargeting,rt-visitors,55.85,3475,53,3,232.28,0,0.00 2026-05-01,retargeting,rt-lookalike,84.88,5245,99,7,749.41,0,0.00 2026-05-01,retargeting,rt-cart,41.51,3167,43,3,260.45,0,0.00 2026-05-02,brand-search,bs-exact,126.67,8120,124,8,711.45,0,0.00 2026-05-02,brand-search,bs-phrase,82.32,6070,90,7,646.18,1,92.31 2026-05-02,prospecting-broad,pb-interest,111.92,8039,156,0,0.00,0,0.00 2026-05-02,prospecting-broad,pb-video,68.90,4552,55,0,0.00,0,0.00 2026-05-02,prospecting-broad,pb-lookalike,86.48,6848,117,1,77.07,0,0.00 2026-05-02,retargeting,rt-visitors,49.85,3325,62,5,410.79,0,0.00 2026-05-02,retargeting,rt-lookalike,62.30,4398,53,2,172.80,1,86.40 2026-05-02,retargeting,rt-cart,53.41,3244,65,6,654.71,0,0.00 2026-05-03,brand-search,bs-exact,119.59,9084,186,6,589.39,0,0.00 2026-05-03,brand-search,bs-phrase,97.79,7444,150,12,1123.15,0,0.00 2026-05-03,prospecting-broad,pb-interest,120.48,6893,147,4,310.02,0,0.00 2026-05-03,prospecting-broad,pb-video,69.99,4505,56,0,0.00,0,0.00 2026-05-03,prospecting-broad,pb-lookalike,73.10,4640,74,1,76.69,0,0.00 2026-05-03,retargeting,rt-visitors,55.98,4200,54,3,291.94,0,0.00 2026-05-03,retargeting,rt-lookalike,63.69,3950,83,5,529.60,1,105.92 2026-05-03,retargeting,rt-cart,40.39,2559,39,8,724.18,0,0.00 2026-05-04,brand-search,bs-exact,129.51,7386,120,7,660.08,0,0.00 2026-05-04,brand-search,bs-phrase,87.61,5868,107,8,649.30,0,0.00 2026-05-04,prospecting-broad,pb-interest,121.63,9495,113,2,186.19,0,0.00 2026-05-04,prospecting-broad,pb-video,54.43,3265,58,1,72.03,0,0.00 2026-05-04,prospecting-broad,pb-lookalike,80.47,4624,57,0,0.00,0,0.00 2026-05-04,retargeting,rt-visitors,54.98,3669,75,5,415.76,0,0.00 2026-05-04,retargeting,rt-lookalike,80.94,6006,111,9,909.70,1,101.08 2026-05-04,retargeting,rt-cart,54.20,3428,57,3,299.88,0,0.00 2026-05-05,brand-search,bs-exact,99.55,5651,62,4,366.09,0,0.00 2026-05-05,brand-search,bs-phrase,106.10,6459,94,6,498.64,0,0.00 2026-05-05,prospecting-broad,pb-interest,116.08,6668,115,3,273.84,0,0.00 2026-05-05,prospecting-broad,pb-video,59.85,3985,49,0,0.00,0,0.00 2026-05-05,prospecting-broad,pb-lookalike,82.93,5519,61,2,176.84,0,0.00 2026-05-05,retargeting,rt-visitors,62.91,3562,73,6,530.18,0,0.00 2026-05-05,retargeting,rt-lookalike,81.18,6116,124,8,809.06,1,101.13 2026-05-05,retargeting,rt-cart,54.21,3106,42,3,301.83,0,0.00 2026-05-06,brand-search,bs-exact,99.09,5928,70,4,393.86,0,0.00 2026-05-06,brand-search,bs-phrase,95.18,6609,69,6,465.74,0,0.00 2026-05-06,prospecting-broad,pb-interest,94.41,7218,136,2,188.69,0,0.00 2026-05-06,prospecting-broad,pb-video,62.32,4609,98,2,166.36,0,0.00 2026-05-06,prospecting-broad,pb-lookalike,103.81,7432,124,1,83.58,0,0.00 2026-05-06,retargeting,rt-visitors,55.22,3630,57,6,473.32,0,0.00 2026-05-06,retargeting,rt-lookalike,86.04,6304,88,6,539.83,1,89.97 2026-05-06,retargeting,rt-cart,44.84,3303,50,4,357.78,0,0.00 2026-05-07,brand-search,bs-exact,101.05,5874,108,1,84.40,0,0.00 2026-05-07,brand-search,bs-phrase,101.88,6039,96,1,89.25,0,0.00 2026-05-07,prospecting-broad,pb-interest,109.42,7250,93,0,0.00,0,0.00 2026-05-07,prospecting-broad,pb-video,55.56,3743,80,1,80.84,1,80.84 2026-05-07,prospecting-broad,pb-lookalike,88.28,6769,81,3,260.85,0,0.00 2026-05-07,retargeting,rt-visitors,58.84,3620,76,5,489.17,0,0.00 2026-05-07,retargeting,rt-lookalike,76.37,5717,101,7,599.53,0,0.00 2026-05-07,retargeting,rt-cart,48.24,2665,35,4,362.23,0,0.00 2026-05-08,brand-search,bs-exact,131.51,10337,103,3,287.11,0,0.00 2026-05-08,brand-search,bs-phrase,97.58,6477,139,9,845.43,1,93.94 2026-05-08,prospecting-broad,pb-interest,99.72,7100,136,0,0.00,0,0.00 2026-05-08,prospecting-broad,pb-video,57.13,3851,57,0,0.00,0,0.00 2026-05-08,prospecting-broad,pb-lookalike,90.26,5094,52,1,78.61,0,0.00 2026-05-08,retargeting,rt-visitors,66.17,4778,70,5,504.49,0,0.00 2026-05-08,retargeting,rt-lookalike,77.32,5370,86,1,83.03,1,83.03 2026-05-08,retargeting,rt-cart,44.94,2581,52,4,344.84,0,0.00 2026-05-09,brand-search,bs-exact,100.29,5823,86,4,380.51,0,0.00 2026-05-09,brand-search,bs-phrase,88.13,5288,102,8,789.20,1,98.65 2026-05-09,prospecting-broad,pb-interest,106.26,5893,60,0,0.00,0,0.00 2026-05-09,prospecting-broad,pb-video,70.72,4974,83,0,0.00,0,0.00 2026-05-09,prospecting-broad,pb-lookalike,85.99,5959,65,1,93.71,1,93.71 2026-05-09,retargeting,rt-visitors,59.35,3653,63,6,486.53,0,0.00 2026-05-09,retargeting,rt-lookalike,61.68,4631,72,2,193.34,0,0.00 2026-05-09,retargeting,rt-cart,49.76,3675,41,4,380.35,0,0.00 2026-05-10,brand-search,bs-exact,101.84,7407,77,1,94.49,0,0.00 2026-05-10,brand-search,bs-phrase,83.57,6091,62,1,79.62,0,0.00 2026-05-10,prospecting-broad,pb-interest,128.49,7240,149,0,0.00,0,0.00 2026-05-10,prospecting-broad,pb-video,55.57,3067,49,0,0.00,0,0.00 2026-05-10,prospecting-broad,pb-lookalike,98.02,7775,100,0,0.00,0,0.00 2026-05-10,retargeting,rt-visitors,50.34,3213,61,4,385.25,0,0.00 2026-05-10,retargeting,rt-lookalike,60.77,3731,50,3,254.38,0,0.00 2026-05-10,retargeting,rt-cart,40.84,2854,31,3,284.88,0,0.00 2026-05-11,brand-search,bs-exact,111.92,7169,80,3,271.18,0,0.00 2026-05-11,brand-search,bs-phrase,89.11,6796,148,6,532.24,0,0.00 2026-05-11,prospecting-broad,pb-interest,103.12,6236,86,1,76.49,1,76.49 2026-05-11,prospecting-broad,pb-video,67.78,4901,62,0,0.00,0,0.00 2026-05-11,prospecting-broad,pb-lookalike,99.65,6211,87,0,0.00,0,0.00 2026-05-11,retargeting,rt-visitors,51.12,3214,69,6,584.77,1,97.46 2026-05-11,retargeting,rt-lookalike,72.48,4559,87,5,477.44,1,95.49 2026-05-11,retargeting,rt-cart,44.88,3021,56,4,425.13,0,0.00 2026-05-12,brand-search,bs-exact,109.96,7679,97,6,602.74,0,0.00 2026-05-12,brand-search,bs-phrase,109.90,7526,113,3,274.36,0,0.00 2026-05-12,prospecting-broad,pb-interest,99.23,5627,100,1,91.68,0,0.00 2026-05-12,prospecting-broad,pb-video,64.47,4575,94,0,0.00,0,0.00 2026-05-12,prospecting-broad,pb-lookalike,81.46,6229,73,0,0.00,0,0.00 2026-05-12,retargeting,rt-visitors,66.27,4502,82,9,781.12,1,86.79 2026-05-12,retargeting,rt-lookalike,78.97,5030,52,2,170.53,2,170.53 2026-05-12,retargeting,rt-cart,40.80,2615,31,2,195.00,0,0.00 2026-05-13,brand-search,bs-exact,134.14,9682,184,13,1349.79,0,0.00 2026-05-13,brand-search,bs-phrase,95.27,5850,97,3,289.30,0,0.00 2026-05-13,prospecting-broad,pb-interest,116.47,6818,141,1,94.53,0,0.00 2026-05-13,prospecting-broad,pb-video,63.57,4500,97,0,0.00,0,0.00 2026-05-13,prospecting-broad,pb-lookalike,73.12,4718,83,0,0.00,0,0.00 2026-05-13,retargeting,rt-visitors,55.61,3502,71,0,0.00,0,0.00 2026-05-13,retargeting,rt-lookalike,62.05,4162,67,4,347.84,0,0.00 2026-05-13,retargeting,rt-cart,48.80,2687,44,5,527.28,2,210.91 2026-05-14,brand-search,bs-exact,99.71,7041,151,6,508.44,0,0.00 2026-05-14,brand-search,bs-phrase,99.37,7508,160,8,677.09,0,0.00 2026-05-14,prospecting-broad,pb-interest,120.07,8690,159,1,76.15,0,0.00 2026-05-14,prospecting-broad,pb-video,54.76,3547,40,0,0.00,0,0.00 2026-05-14,prospecting-broad,pb-lookalike,81.94,4651,69,1,83.19,0,0.00 2026-05-14,retargeting,rt-visitors,55.16,4058,82,1,93.77,0,0.00 2026-05-14,retargeting,rt-lookalike,62.66,4717,84,5,487.89,2,195.16 2026-05-14,retargeting,rt-cart,46.67,3452,61,4,402.20,0,0.00 2026-05-15,brand-search,bs-exact,134.99,8614,120,9,823.92,0,0.00 2026-05-15,brand-search,bs-phrase,94.08,6319,78,5,436.84,0,0.00 2026-05-15,prospecting-broad,pb-interest,99.18,7326,145,1,89.33,0,0.00 2026-05-15,prospecting-broad,pb-video,60.79,4197,44,0,0.00,0,0.00 2026-05-15,prospecting-broad,pb-lookalike,94.94,5358,53,0,0.00,0,0.00 2026-05-15,retargeting,rt-visitors,62.88,3617,37,2,157.85,0,0.00 2026-05-15,retargeting,rt-lookalike,85.77,5682,93,2,191.82,0,0.00 2026-05-15,retargeting,rt-cart,52.26,3487,59,7,587.91,0,0.00 2026-05-16,brand-search,bs-exact,119.14,8128,120,5,505.11,0,0.00 2026-05-16,brand-search,bs-phrase,86.79,6194,107,6,598.35,0,0.00 2026-05-16,prospecting-broad,pb-interest,129.53,10349,222,0,0.00,0,0.00 2026-05-16,prospecting-broad,pb-video,51.35,2866,33,0,0.00,0,0.00 2026-05-16,prospecting-broad,pb-lookalike,79.87,6020,85,0,0.00,0,0.00 2026-05-16,retargeting,rt-visitors,50.66,3111,67,1,96.80,0,0.00 2026-05-16,retargeting,rt-lookalike,69.03,4460,88,3,281.20,1,93.73 2026-05-16,retargeting,rt-cart,54.20,3102,33,0,0.00,0,0.00 2026-05-17,brand-search,bs-exact,105.93,7354,133,8,769.01,0,0.00 2026-05-17,brand-search,bs-phrase,86.29,5633,71,0,0.00,0,0.00 2026-05-17,prospecting-broad,pb-interest,94.75,7166,149,0,0.00,0,0.00 2026-05-17,prospecting-broad,pb-video,54.51,3181,41,0,0.00,0,0.00 2026-05-17,prospecting-broad,pb-lookalike,101.25,5697,59,0,0.00,0,0.00 2026-05-17,retargeting,rt-visitors,48.69,3622,74,6,555.16,2,185.05 2026-05-17,retargeting,rt-lookalike,65.92,3937,79,5,460.82,0,0.00 2026-05-17,retargeting,rt-cart,57.59,3234,38,3,257.76,0,0.00 2026-05-18,brand-search,bs-exact,130.41,9245,125,4,384.15,0,0.00 2026-05-18,brand-search,bs-phrase,103.03,6163,118,5,405.36,0,0.00 2026-05-18,prospecting-broad,pb-interest,110.99,7409,145,2,182.70,0,0.00 2026-05-18,prospecting-broad,pb-video,56.41,3240,35,0,0.00,0,0.00 2026-05-18,prospecting-broad,pb-lookalike,72.65,5706,113,0,0.00,0,0.00 2026-05-18,retargeting,rt-visitors,57.81,4024,56,1,84.77,0,0.00 2026-05-18,retargeting,rt-lookalike,65.34,3647,57,5,534.47,0,0.00 2026-05-18,retargeting,rt-cart,52.39,3090,40,4,363.29,0,0.00 2026-05-19,brand-search,bs-exact,131.76,7294,146,6,498.84,1,83.14 2026-05-19,brand-search,bs-phrase,89.46,5605,72,5,397.97,0,0.00 2026-05-19,prospecting-broad,pb-interest,108.98,6535,67,0,0.00,0,0.00 2026-05-19,prospecting-broad,pb-video,53.02,4167,48,0,0.00,0,0.00 2026-05-19,prospecting-broad,pb-lookalike,73.59,4111,46,0,0.00,0,0.00 2026-05-19,retargeting,rt-visitors,50.75,3844,57,1,90.23,0,0.00 2026-05-19,retargeting,rt-lookalike,73.56,4824,51,1,103.37,0,0.00 2026-05-19,retargeting,rt-cart,51.99,3147,48,3,277.70,0,0.00 2026-05-20,brand-search,bs-exact,111.20,7944,109,7,681.53,0,0.00 2026-05-20,brand-search,bs-phrase,87.62,6679,128,6,574.76,0,0.00 2026-05-20,prospecting-broad,pb-interest,107.38,7772,132,1,73.06,0,0.00 2026-05-20,prospecting-broad,pb-video,67.33,4056,72,0,0.00,0,0.00 2026-05-20,prospecting-broad,pb-lookalike,92.92,6035,112,1,83.43,0,0.00 2026-05-20,retargeting,rt-visitors,67.53,5237,100,6,561.46,0,0.00 2026-05-20,retargeting,rt-lookalike,82.11,6378,119,6,548.79,2,182.93 2026-05-20,retargeting,rt-cart,57.78,3725,78,6,520.70,0,0.00 2026-05-21,brand-search,bs-exact,140.97,8742,156,8,811.53,0,0.00 2026-05-21,brand-search,bs-phrase,86.48,5445,88,1,86.05,0,0.00 2026-05-21,prospecting-broad,pb-interest,108.05,7744,154,2,178.23,0,0.00 2026-05-21,prospecting-broad,pb-video,72.84,4819,90,0,0.00,0,0.00 2026-05-21,prospecting-broad,pb-lookalike,77.58,5733,108,1,93.47,0,0.00 2026-05-21,retargeting,rt-visitors,63.77,3980,68,7,595.46,0,0.00 2026-05-21,retargeting,rt-lookalike,84.04,6407,90,2,206.34,1,103.17 2026-05-21,retargeting,rt-cart,54.31,3481,43,3,260.31,2,173.54 2026-05-22,brand-search,bs-exact,122.03,7464,74,1,86.16,0,0.00 2026-05-22,brand-search,bs-phrase,107.41,7258,128,4,329.96,0,0.00 2026-05-22,prospecting-broad,pb-interest,124.71,8985,113,0,0.00,0,0.00 2026-05-22,prospecting-broad,pb-video,69.66,4752,99,0,0.00,0,0.00 2026-05-22,prospecting-broad,pb-lookalike,102.46,6232,99,1,91.47,0,0.00 2026-05-22,retargeting,rt-visitors,56.89,3568,38,2,169.52,0,0.00 2026-05-22,retargeting,rt-lookalike,74.26,4747,56,3,268.00,2,178.67 2026-05-22,retargeting,rt-cart,46.20,3065,67,5,454.48,0,0.00 2026-05-23,brand-search,bs-exact,121.69,8008,82,5,415.11,0,0.00 2026-05-23,brand-search,bs-phrase,104.45,6979,91,2,152.68,0,0.00 2026-05-23,prospecting-broad,pb-interest,117.69,8140,104,1,91.89,0,0.00 2026-05-23,prospecting-broad,pb-video,55.34,3973,62,0,0.00,0,0.00 2026-05-23,prospecting-broad,pb-lookalike,101.33,6732,100,2,180.27,0,0.00 2026-05-23,retargeting,rt-visitors,58.23,3918,53,2,156.74,0,0.00 2026-05-23,retargeting,rt-lookalike,81.15,5810,90,2,186.57,1,93.28 2026-05-23,retargeting,rt-cart,54.34,3475,62,4,344.98,1,86.25 2026-05-24,brand-search,bs-exact,109.44,6904,115,4,319.05,0,0.00 2026-05-24,brand-search,bs-phrase,99.25,6010,95,4,364.80,0,0.00 2026-05-24,prospecting-broad,pb-interest,99.39,5726,112,2,163.46,0,0.00 2026-05-24,prospecting-broad,pb-video,70.13,5343,83,0,0.00,0,0.00 2026-05-24,prospecting-broad,pb-lookalike,79.33,4972,81,1,75.34,0,0.00 2026-05-24,retargeting,rt-visitors,55.02,3065,51,3,296.76,0,0.00 2026-05-24,retargeting,rt-lookalike,71.68,5179,101,3,269.79,0,0.00 2026-05-24,retargeting,rt-cart,40.25,2809,48,4,426.37,0,0.00 2026-05-25,brand-search,bs-exact,99.01,7452,97,8,748.93,0,0.00 2026-05-25,brand-search,bs-phrase,87.61,5640,114,8,743.77,0,0.00 2026-05-25,prospecting-broad,pb-interest,117.58,7839,167,0,0.00,0,0.00 2026-05-25,prospecting-broad,pb-video,53.26,4077,63,0,0.00,0,0.00 2026-05-25,prospecting-broad,pb-lookalike,78.32,4985,50,0,0.00,0,0.00 2026-05-25,retargeting,rt-visitors,48.15,3089,48,2,195.25,0,0.00 2026-05-25,retargeting,rt-lookalike,85.00,5604,56,5,414.56,1,82.91 2026-05-25,retargeting,rt-cart,51.19,3211,66,7,618.48,0,0.00 2026-05-26,brand-search,bs-exact,109.39,6881,113,9,874.82,0,0.00 2026-05-26,brand-search,bs-phrase,103.06,7798,160,7,562.21,0,0.00 2026-05-26,prospecting-broad,pb-interest,98.82,6330,73,0,0.00,0,0.00 2026-05-26,prospecting-broad,pb-video,70.01,4870,96,0,0.00,0,0.00 2026-05-26,prospecting-broad,pb-lookalike,102.03,7910,136,2,166.58,0,0.00 2026-05-26,retargeting,rt-visitors,48.30,3493,58,3,234.35,0,0.00 2026-05-26,retargeting,rt-lookalike,79.37,4986,61,6,541.94,1,90.32 2026-05-26,retargeting,rt-cart,49.01,3014,46,2,171.95,1,85.97 2026-05-27,brand-search,bs-exact,115.78,8275,140,11,958.58,0,0.00 2026-05-27,brand-search,bs-phrase,85.34,5900,86,2,190.36,0,0.00 2026-05-27,prospecting-broad,pb-interest,109.56,7511,121,1,82.06,0,0.00 2026-05-27,prospecting-broad,pb-video,68.38,4502,65,0,0.00,0,0.00 2026-05-27,prospecting-broad,pb-lookalike,82.52,5780,87,2,169.62,0,0.00 2026-05-27,retargeting,rt-visitors,54.85,4357,66,3,278.51,0,0.00 2026-05-27,retargeting,rt-lookalike,85.82,6315,97,5,509.61,2,203.84 2026-05-27,retargeting,rt-cart,50.54,3568,41,4,413.65,0,0.00 2026-05-28,brand-search,bs-exact,137.46,9998,134,8,636.51,0,0.00 2026-05-28,brand-search,bs-phrase,111.17,7672,164,12,972.52,0,0.00 2026-05-28,prospecting-broad,pb-interest,113.04,8295,140,1,89.79,0,0.00 2026-05-28,prospecting-broad,pb-video,51.36,3861,72,0,0.00,0,0.00 2026-05-28,prospecting-broad,pb-lookalike,86.63,5402,74,0,0.00,0,0.00 2026-05-28,retargeting,rt-visitors,56.33,4479,79,5,462.69,0,0.00 2026-05-28,retargeting,rt-lookalike,86.65,5115,92,6,492.71,4,328.47 2026-05-28,retargeting,rt-cart,56.47,3554,70,5,424.89,0,0.00 2026-05-29,brand-search,bs-exact,133.03,8334,139,7,618.16,0,0.00 2026-05-29,brand-search,bs-phrase,99.85,6155,97,5,492.54,0,0.00 2026-05-29,prospecting-broad,pb-interest,121.57,8610,104,0,0.00,0,0.00 2026-05-29,prospecting-broad,pb-video,67.88,4839,99,0,0.00,0,0.00 2026-05-29,prospecting-broad,pb-lookalike,100.80,5952,123,1,75.04,0,0.00 2026-05-29,retargeting,rt-visitors,58.04,4340,58,1,87.86,1,87.86 2026-05-29,retargeting,rt-lookalike,85.99,5733,96,4,396.77,1,99.19 2026-05-29,retargeting,rt-cart,55.76,4076,72,7,749.03,1,107.00 2026-05-30,brand-search,bs-exact,120.46,7786,80,7,682.59,0,0.00 2026-05-30,brand-search,bs-phrase,93.20,5567,90,1,97.33,0,0.00 2026-05-30,prospecting-broad,pb-interest,128.31,9184,100,0,0.00,0,0.00 2026-05-30,prospecting-broad,pb-video,57.83,4128,50,0,0.00,0,0.00 2026-05-30,prospecting-broad,pb-lookalike,87.88,6925,147,0,0.00,0,0.00 2026-05-30,retargeting,rt-visitors,53.27,4176,79,6,520.35,0,0.00 2026-05-30,retargeting,rt-lookalike,67.07,4571,84,5,533.52,1,106.70 2026-05-30,retargeting,rt-cart,41.89,2545,50,3,270.96,0,0.00 2026-05-31,brand-search,bs-exact,127.99,9241,190,7,595.14,0,0.00 2026-05-31,brand-search,bs-phrase,101.08,5679,84,4,343.81,0,0.00 2026-05-31,prospecting-broad,pb-interest,109.36,6964,107,0,0.00,0,0.00 2026-05-31,prospecting-broad,pb-video,72.04,4440,73,0,0.00,0,0.00 2026-05-31,prospecting-broad,pb-lookalike,96.42,6774,142,0,0.00,0,0.00 2026-05-31,retargeting,rt-visitors,64.02,4280,90,8,734.89,0,0.00 2026-05-31,retargeting,rt-lookalike,63.93,3854,75,9,796.12,4,353.83 2026-05-31,retargeting,rt-cart,54.39,4286,73,7,614.39,0,0.00 2026-06-01,brand-search,bs-exact,121.53,9320,148,6,486.36,0,0.00 2026-06-01,brand-search,bs-phrase,99.34,5522,120,7,643.17,0,0.00 2026-06-01,prospecting-broad,pb-interest,106.58,8303,154,0,0.00,0,0.00 2026-06-01,prospecting-broad,pb-video,70.48,4186,56,0,0.00,0,0.00 2026-06-01,prospecting-broad,pb-lookalike,101.87,6171,134,0,0.00,0,0.00 2026-06-01,retargeting,rt-visitors,51.64,3473,66,5,400.68,0,0.00 2026-06-01,retargeting,rt-lookalike,75.26,4545,96,3,273.48,0,0.00 2026-06-01,retargeting,rt-cart,51.08,3480,35,3,322.89,0,0.00 2026-06-02,brand-search,bs-exact,123.35,8838,155,9,752.64,0,0.00 2026-06-02,brand-search,bs-phrase,99.16,6230,103,3,300.32,1,100.11 2026-06-02,prospecting-broad,pb-interest,107.12,8233,89,0,0.00,0,0.00 2026-06-02,prospecting-broad,pb-video,66.30,5231,81,0,0.00,0,0.00 2026-06-02,prospecting-broad,pb-lookalike,83.04,5628,61,0,0.00,0,0.00 2026-06-02,retargeting,rt-visitors,65.43,4217,70,6,562.32,0,0.00 2026-06-02,retargeting,rt-lookalike,86.16,6007,68,4,344.30,0,0.00 2026-06-02,retargeting,rt-cart,41.42,2357,36,2,186.88,1,93.44 2026-06-03,brand-search,bs-exact,123.27,8301,110,6,531.87,0,0.00 2026-06-03,brand-search,bs-phrase,91.92,6062,90,8,626.89,0,0.00 2026-06-03,prospecting-broad,pb-interest,103.83,7799,146,0,0.00,0,0.00 2026-06-03,prospecting-broad,pb-video,72.84,4347,46,0,0.00,0,0.00 2026-06-03,prospecting-broad,pb-lookalike,97.81,7702,125,0,0.00,0,0.00 2026-06-03,retargeting,rt-visitors,67.52,4325,68,5,469.36,0,0.00 2026-06-03,retargeting,rt-lookalike,65.38,4829,78,3,259.90,0,0.00 2026-06-03,retargeting,rt-cart,50.30,3602,58,8,778.00,0,0.00 2026-06-04,brand-search,bs-exact,117.36,7592,129,10,959.80,1,95.98 2026-06-04,brand-search,bs-phrase,108.15,6777,71,2,199.10,0,0.00 2026-06-04,prospecting-broad,pb-interest,122.63,9183,107,0,0.00,0,0.00 2026-06-04,prospecting-broad,pb-video,55.07,3544,37,0,0.00,0,0.00 2026-06-04,prospecting-broad,pb-lookalike,99.43,6891,116,0,0.00,0,0.00 2026-06-04,retargeting,rt-visitors,55.78,3731,70,2,194.16,0,0.00 2026-06-04,retargeting,rt-lookalike,67.44,4107,65,6,495.70,2,165.23 2026-06-04,retargeting,rt-cart,47.92,2921,34,0,0.00,0,0.00 2026-06-05,brand-search,bs-exact,133.66,8165,165,10,884.36,0,0.00 2026-06-05,brand-search,bs-phrase,111.77,6834,125,4,356.67,0,0.00 2026-06-05,prospecting-broad,pb-interest,90.24,6960,124,0,0.00,0,0.00 2026-06-05,prospecting-broad,pb-video,69.15,4562,54,0,0.00,0,0.00 2026-06-05,prospecting-broad,pb-lookalike,102.64,6850,83,0,0.00,0,0.00 2026-06-05,retargeting,rt-visitors,49.62,3437,43,3,274.55,1,91.52 2026-06-05,retargeting,rt-lookalike,67.51,4634,89,3,296.93,2,197.95 2026-06-05,retargeting,rt-cart,42.41,3103,33,0,0.00,0,0.00 2026-06-06,brand-search,bs-exact,128.08,9967,132,8,822.00,0,0.00 2026-06-06,brand-search,bs-phrase,83.62,5355,57,7,667.68,0,0.00 2026-06-06,prospecting-broad,pb-interest,104.30,6720,100,0,0.00,0,0.00 2026-06-06,prospecting-broad,pb-video,69.22,4208,89,0,0.00,0,0.00 2026-06-06,prospecting-broad,pb-lookalike,84.01,6625,114,0,0.00,0,0.00 2026-06-06,retargeting,rt-visitors,62.26,3850,39,2,156.55,0,0.00 2026-06-06,retargeting,rt-lookalike,85.39,6781,100,1,94.68,1,94.68 2026-06-06,retargeting,rt-cart,51.63,3465,53,4,412.98,0,0.00 2026-06-07,brand-search,bs-exact,113.29,7727,115,5,517.77,0,0.00 2026-06-07,brand-search,bs-phrase,78.44,4864,74,3,253.94,0,0.00 2026-06-07,prospecting-broad,pb-interest,125.19,7499,153,0,0.00,0,0.00 2026-06-07,prospecting-broad,pb-video,53.02,3630,50,0,0.00,0,0.00 2026-06-07,prospecting-broad,pb-lookalike,89.16,5071,95,0,0.00,0,0.00 2026-06-07,retargeting,rt-visitors,67.55,5144,84,2,196.17,0,0.00 2026-06-07,retargeting,rt-lookalike,75.72,4936,104,8,808.20,0,0.00 2026-06-07,retargeting,rt-cart,42.66,2368,30,0,0.00,0,0.00 --- ## 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
Gemini 3.8 Flash high effortFailed

The judge marked this response incomplete — it was cut off at the output-token ceiling — so the task fails regardless of the per-criterion results below.

RequirementVerdictEvidence
answer_block_complete
The response ends with the required answer block and all five labeled answers A1-A5 are present and parseable.
✗Programmatic check: answer_count=0.
q1_blended_cpa
A1 states the blended CPA (total spend / net conversions) for the full 14 weeks; full credit within 0.5% of the value computed from the export, zero credit beyond 10% off.
✗Programmatic check: answer_q1=None.
q2_wasted_spend
A2 states total spend across zero-conversion adset-days; full credit within 1%, zero credit beyond 25% off.
✗Programmatic check: answer_q2=None.
q3_underwater_week
A3 names the week (1-14) in which prospecting-broad's weekly net ROAS first fell below 1.0; full credit for the exact week, partial credit within one week, zero credit two or more weeks off.
✗Programmatic check: answer_q3=None.
q4_refund_drag
A4 states the total refunded revenue of the adset with the most refunded revenue; full credit within 1%, zero credit beyond 25% off.
✗Programmatic check: answer_q4=None.
q5_final_roas
A5 states the account-wide net ROAS for the final 28 days; full credit within 1%, zero credit beyond 15% off.
✗Programmatic check: answer_q5=None.
refund_adjusted_method
The analysis states that conversions and revenue were computed net of refunds (or shows the refund adjustment explicitly) rather than silently using gross figures.
✓The response explicitly says 'After accounting for $14,405.42 in refunded revenue and 156 refunded orders' to derive net revenue and net conversions.
worst_refund_adset_named
The review names rt-lookalike as the adset with the largest refunded revenue.
✗The response text provided contains only the executive summary table and never names rt-lookalike or any adset-level refund figures.
no_invented_data
Every figure presented as coming from the export is derivable from the supplied CSV; no external benchmarks, industry averages, or invented segment data are presented as if they were in the data.
✓All figures shown are aggregate totals presented as derived from the CSV with no external benchmarks or invented data visible in the response.
prospecting_decline_called
The review identifies prospecting-broad's performance decline across the window as a trend requiring action, not merely a low average.
✗The response does not mention prospecting-broad's performance trend or decline anywhere in the provided text.
pb_video_flagged
The review specifically calls out the pb-video adset as continuing to spend while producing zero conversions in the final weeks (or an equivalent adset-level wasted-spend identification naming pb-video).
✗There is no mention of pb-video or any adset-level wasted spend callout in the response.
recommendation_grounded
Each recommendation is tied to specific figures from the analysis (named campaigns/adsets with their numbers), not generic best practice.
✗The response ends after the summary table with no recommendations section at all.
Answer the model's full response$0.44 · 1068.3s · 108.1k tok
# Executive Paid-Media Performance Review: Q1/Q2 14-Week Audit **To:** Chief Marketing Officer, Verra Threads **From:** Senior Marketing Analyst **Date:** June 8, 2026 **Subject:** 14-Week Paid-Media Performance Audit (March 2, 2026 – June 7, 2026) --- ## 1. Executive Summary Over the 14-week period from March 2, 2026 through June 7, 2026, Verra Threads invested **$64,460.72** in paid media, generating **$244,915.01** in gross revenue and **2,697** gross conversions. After accounting for **$14,405.42** in refunded revenue and **156** refunded orders, the business achieved **$230,509.59** in net revenue and **2,541** net conversions, resulting in a 14-week blended net ROAS of **3.58** and a blended CPA of **$25.37**. ``` ============================================================================================================= 14-WEEK BLENDED RECONCILIATION SUMMARY (2026-03-02 through 2026-06-07) ============================================================================================================= Metric Full 14 Weeks (W1–W14) Final 28 Days (W11–W14) Prior 10 Weeks (W1–W10) ------------------------------------------------------------------------------------------------------------- Total Spend_USD $64,460.72 $18,538.28 $45,922.44 Gross Conversions 2,697 676 2,021 Refunded Conversions 156 49 107 Net Conversions 2,541 627 1,914 Blended CPA (Spend / Net Conv) $25.37 $29.57 $23.99 Gross Revenue_USD $244,915.01 $61,766.54 $183,148.47 Refunded Revenue_USD $14,405.42 $4,497.59 $9,907.83 Net Revenue_USD $230,509.59 $57,268.95 $173,240.64 Net ROAS (Net Rev / Spend) 3.58 3.09 3.77

Open this task's own page →

Reconcile conflicting Meta and GA4 performance numbers analytics-source-conflict1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

A founder asks: 'Meta says our ads printed money last month, our analyst says GA4 disagrees. What is actually true, and what should we do?' Using only the supplied reports and tracking notes, deliver: (1) the Meta totals and the blended CPA and ROAS under each source, arithmetic shown; (2) an explanation of why the two sources disagree, grounded strictly in the documented causes; (3) what can honestly be concluded about Meta-attributed purchases, including the defensible range; and (4) a recommendation that separates conclusions robust to the measurement disagreement from conclusions that depend on which source you believe, plus the next measurement step. Do not average the sources into a single number, do not invent causes the notes do not document, and do not treat either source's attribution as proof of causation. --- ## Supplied source: meta-platform-report.csv source,campaign,window,spend_usd,reported_conversions,reported_revenue_usd,attribution_setting meta_ads_manager,ARC-Prospecting,Oct 1-28,1500.00,38,3420.00,"7-day click, 1-day view" meta_ads_manager,ARC-Retargeting,Oct 1-28,900.00,22,1980.00,"7-day click, 1-day view" --- ## Supplied source: ga4-report.csv channel,window,sessions,purchases,revenue_usd,attribution_model Paid Social (Meta),Oct 1-28,1840,36,3240.00,"last non-direct click, 30-day" Organic Search,Oct 1-28,2210,41,3690.00,"last non-direct click, 30-day" Direct,Oct 1-28,960,35,3150.00,"last non-direct click, 30-day" --- ## Supplied source: tracking-notes.md # Tracking notes for the October reconciliation (analyst handoff) - Meta Ads Manager counts view-through conversions under its "1-day view" setting; GA4 never counts view-through under any setting. - Attribution differs by construction: Meta claims a conversion on a 7-day click / 1-day view window against its own ads; GA4 assigns each purchase to one channel by last non-direct click with a 30-day lookback. - Auto-tagging was broken on Oct 12-13; an estimated 8 Meta-referred sessions landed without UTMs during the outage and were classified as Direct in GA4. - The store platform (source of truth for orders) recorded 118 completed purchases in the window. GA4 recorded 112 site-wide. Summing every ad platform's self-reported conversions (Meta plus the search and affiliate platforms) gives 149 claimed conversions. - No other diagnostics are available for this window. --- ## 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
platform_oracle
Meta platform totals are correct: $2,400 spend, 60 reported conversions, $5,400 reported revenue, blended CPA of $40.00, and ROAS of 2.25.
✓Response computes spend $2,400.00, conversions 60, revenue $5,400.00, CPA $40.00, and ROAS 2.25× exactly as required.
ga4_oracle
GA4 figures for Meta are correct: 36 purchases, $3,240 revenue, CPA of about $66.67, and ROAS of 1.35 against the same $2,400 spend.
✓Response computes GA4 Paid Social figures as 36 purchases, $3,240.00 revenue, CPA $66.67, and ROAS 1.35× against $2,400 spend.
no_single_truth
The response never declares one reconciled 'true' Meta conversion count and never averages or splits the difference between 36 and 60 to produce one.
✓The response explicitly states 'Do Not Average the Numbers' and never proposes a single reconciled conversion count.
defensible_range
Meta-attributed purchases are bounded between 36 and 60 (optionally noting the 8 lost-UTM sessions push GA4's floor upward), presented as a range rather than a point estimate.
✓It states 'The Defensible Range is 36 to 60 Purchases' and notes the GA4 floor excludes the 8 untagged Meta sessions, pushing the true floor higher.
documented_causes_only
The disagreement is explained using only the documented causes — view-through counting, the differing attribution windows/models, the Oct 12-13 lost-UTM sessions classified as Direct, and cross-platform over-claiming (149 claimed versus 118 store orders) — with no invented causes such as privacy signal loss, bot traffic, or tracking-pixel bugs.
✓Causes cited are view-through counting, differing attribution logic, the Oct 12-13 UTM outage, and the 149-vs-118 over-claiming, all sourced from the notes with no invented causes like bots or pixel bugs.
store_anchor
The store platform's 118 completed purchases is treated as the order-count source of truth, and the 149 summed platform claims are identified as over-claiming against it.
✓The response calls the store platform 'the absolute source of truth for completed orders' at 118 and frames the 149 platform claims as over-claiming against it.
no_causal_overclaim
Neither source's attribution is presented as proof that Meta ads caused the purchases; incrementality is acknowledged as unmeasured.
✓A dedicated subsection states 'Attribution is Not Proof of Causation' and 'Neither source measures incremental lift.'
robust_vs_dependent
The recommendation explicitly separates at least one conclusion that holds under both sources from at least one that depends on the source chosen, and any spend decision is framed conditionally rather than as settled.
✓Section A lists conclusions 'Robust to the Measurement Disagreement' and Section B lists conclusions 'Dependent on Which Source You Believe,' with conditional framing in Section C.
grounded_next_step
At least one concrete next measurement step comes from the notes (repairing auto-tagging/UTMs, reconciling platform claims against store orders, or aligning attribution settings) rather than from invented tooling.
✓The response recommends 'Fix the auto-tagging infrastructure to prevent UTM stripping outages,' a step grounded directly in the tracking notes.
Answer the model's full response$0.041 · 63.2s · 10.2k tok
### 1. Meta Totals, Blended CPA, and ROAS Under Each Source Both reports cover the closed observation window of **October 1–28**. #### Meta Ads Manager Data & Calculations * **Spend:** $\$1,500.00\text{ (Prospecting)} + \$900.00\text{ (Retargeting)} = \mathbf{\$2,400.00}$ * **Reported Conversions:** $38\text{ (Prospecting)} + 22\text{ (Retargeting)} = \mathbf{60\text{ purchases}}$ * **Reported Revenue:** $\$3,420.00\text{ (Prospecting)} + \$1,980.00\text{ (Retargeting)} = \mathbf{\$5,400.00}$ * **Blended CPA:** $$\text{CPA}_{\text{Meta}} = \frac{\text{Total Spend}}{\text{Reported Conversions}} = \frac{\$2,400.00}{60} = \mathbf{\$40.00\text{ per purchase}}$$ * **Blended ROAS:** $$\text{ROAS}_{\text{Meta}} = \frac{\text{Reported Revenue}}{\text{Total Spend}} = \frac{\$5,400.00}{2,400.00} = \mathbf{2.25\times\text{ (or }225\%)}$$ *(Campaign-level detail: Prospecting CPA = $\$1,500.00 / 38 = \$39.47$, ROAS = $\$3,420.00 / \$1,500.00 = 2.28\times$; Retargeting CPA = $\$900.00 / 22 = \$40.91$, ROAS = $\$1,980.00 / \$900.00 = 2.20\times$.)* --- #### GA4 Data & Calculations (Paid Social / Meta) * **Spend:** Carried over from actual platform spend = $\mathbf{\$2,400.00}$ * **Reported Purchases:** $\mathbf{36\text{ purchases}}$ (across 1,840 sessions) * **Reported Revenue:** $\mathbf{\$3,240.00}$ * **Blended CPA:** $$\text{CPA}_{\text{GA4}} = \frac{\text{Total Spend}}{\text{GA4 Purchases}} = \frac{\$2,400.00}{36} = \mathbf{\$66.67\text{ per purchase}}$$ * **Blended ROAS:** $$\text{ROAS}_{\text{GA4}} = \frac{\text{GA4 Revenue}}{\text{Total Spend}} = \frac{\$3,240.00}{\$2,400.00} = \mathbf{1.35\times\text{ (or }135\%)}$$ *(Note: Average Order Value [AOV] is exactly $\$90.00$ in every segment of both datasets: Meta Prospecting $\$3,420 / 38 = \$90.00$; Meta Retargeting $\$1,980 / 22 = \$90.00$; GA4 Paid Social $\$3,240 / 36 = \$90.00$; GA4 Organic Search $\$3,690 / 41 = \$90.00$; GA4 Direct $\$3,150 / 35 = \$90.00$.)* --- ### 2. Documented Causes of Disagreement The discrepancy between Meta ($60$ conversions / $\$5,400$) and GA4 ($36$ conversions / $\$3,240$) is driven strictly by the following four documented technical and structural differences: 1. **View-Through Conversion Counting:** * Meta operates on a `7-day click, 1-day view` window, meaning Meta claims credit for purchases where a user merely saw an ad within 24 hours without clicking. * GA4 never records view-through conversions under any configuration; it requires an actual web session. 2. **Attribution Logic by Construction (Single-Platform vs. Cross-Channel Last Click):** * Meta evaluates conversions strictly against interactions with its own ads, claiming any purchase preceded by a Meta click within 7 days or an impression within 1 day, regardless of whether other marketing touchpoints followed. * GA4 evaluates touchpoints across all channels and awards $100\%$ of the credit to the `last non-direct click` with a 30-day lookback. If a customer clicked a Meta ad, later returned via Organic Search, and purchased, GA4 assigns the purchase to Organic Search, while Meta simultaneously claims it. * This multi-platform overlap is confirmed by the tracking notes: summing self-reported conversions across all ad platforms (Meta, search, and affiliate) yields **149 claims**, whereas the store backend recorded only **118 actual completed purchases**. 3. **Oct 12–13 Auto-Tagging Outage:** * Auto-tagging broke on Oct 12–13. An estimated **8 Meta-referred sessions** landed on the site without UTM parameters and were misclassified as **Direct** in GA4 instead of Paid Social. 4. **Site-Wide GA4 Tracking Gap:** * The store platform (the absolute source of truth for completed orders) recorded **118 purchases**. GA4 recorded only **112 purchases site-wide**, leaving a 6-purchase gap unaccounted for across all channels in GA4. --- ### 3. What Can Honestly Be Concluded About Meta-Attributed Purchases * **The Defensible Range is 36 to 60 Purchases ($3,240 to $5,400 in Revenue):** * **Lower bound (36 purchases / $3,240 revenue / 1.35× ROAS):** GA4’s strict last non-direct click count. This is a conservative floor: it completely excludes view-through assists, ignores upper-funnel assists overwritten by search/direct, and loses whatever conversions resulted from the 8 untagged Meta sessions on Oct 12–13. * **Upper bound (60 purchases / $5,400 revenue / 2.25× ROAS):** Meta’s self-reported count under 7-day click / 1-day view. This is an absolute ceiling: it includes non-click impressions and duplicates purchases claimed by other platforms within the 149 cross-channel total. * **Do Not Average the Numbers:** * We cannot average $36$ and $60$ into $48$. They are not independent measurements of the same physical variable; they are counts under mutually incompatible operational definitions (a multi-touch/impression platform model vs. an exclusive last-click web analytics model). Averaging creates a synthetic metric with no tracking foundation. * **Attribution is Not Proof of Causation:** * Neither source measures **incremental lift** (purchases that would not have occurred without the ads). * In Meta Ads Manager, **$900 of the $2,400 spend (37.5%)** and **22 of the 60 conversions (36.7%)** were in `ARC-Retargeting`. Retargeted users already had high purchase intent and familiarity; attributing a sale to a retargeting click or impression does not prove the ad caused the order. --- ### 4. Recommendations and Next Steps #### A. Conclusions Robust to the Measurement Disagreement (True Under Both Sources) 1. **Meta Ads Are Cash-Positive on a Gross Revenue Basis:** Under both Meta’s ceiling ($2.25\times$ ROAS) and GA4’s strict floor ($1.35\times$ ROAS), total attributed revenue exceeds ad spend ($>\$1.00$ revenue per dollar spent). Meta is not producing zero return. 2. **Platform Self-Reporting Overstates Total Store Volume:** The ad platforms claimed $149$ conversions against only $118$ real store orders. Managing budgets solely by platform-reported conversions guarantees double-counting. 3. **Average Order Value is Uniform:** AOV is fixed at $\$90.00$ across every campaign and channel, meaning Meta’s efficiency differences are purely driven by conversion volume and acquisition cost, not by driving higher- or lower-basket sizes. #### B. Conclusions Dependent on Which Source You Believe * **Whether Meta "Printed Money":** * *If you believe Meta Ads Manager:* With a **$40.00 CPA** and **2.25× ROAS**, the channel is highly profitable and justifies immediate aggressive budget scaling. * *If you believe GA4:* With a **$66.67 CPA** and **1.35× ROAS**, the channel is marginally profitable or potentially unprofitable once product cost of goods sold (COGS) and operating margins are factored in. * **Prospecting Campaign Viability:** * Meta attributes 38 orders at a $\$39.47$ CPA to `ARC-Prospecting`. If GA4's 36 purchases heavily comprise Retargeting, Prospecting may look disastrous on a last-click basis. Conversely, if Prospecting introduced buyers who ultimately closed via Direct or Organic Search, GA4 obscures its top-of-funnel contribution. #### C. Recommendations Tied to Business Goals * **If the primary goal is Cash Preservation / Short-Term Margin Protection:** * Evaluate spend against **GA4's last-click floor ($1.35\times$ ROAS, $66.67 CPA)**. * *Trade-off:* Caps risk and prevents paying for overlapping/cannibalized demand, but risks throttling top-of-funnel prospecting that feeds Organic and Direct sales. * **If the primary goal is Top-Line Store Growth (scaling past 118 store orders):** * Allow Meta more latitude toward its **2.25× reported ROAS**, treating view-through and Prospecting assists as top-of-funnel drivers. * *Trade-off:* Accepts platform inflation and risks subsidizing retargeting impressions that would have converted organically. #### D. Immediate Tracking Fix & Next Measurement Step 1. **Immediate Operational Hygiene:** * Fix the auto-tagging infrastructure to prevent UTM stripping outages like Oct 12–13, ensuring paid social traffic is not misattributed to Direct. * Investigate the site-wide tracking leak causing GA4 to miss 6 completed store orders ($112$ GA4 purchases vs. $118$ store orders). 2. **Next Measurement Step (Incrementality Testing):** * Stop trying to resolve whether GA4 or Meta is "right" through observational reports. Because attribution models do not measure causality, run a **controlled incrementality test** (a Meta Conversion Lift / holdout study or a geo-lift test), particularly isolating `ARC-Retargeting`. Compare the resulting incremental lift directly against the **store platform order total (118)** to determine how many purchases Meta actually creates.

Open this task's own page →

Attribution-model sensitivity analysis with duplicate and refund attribution-sensitivity1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Analyze the supplied order journeys for a marketing lead. Meta, Paid Search, and Email each had $600 of spend. Deduplicate exact duplicate order_id rows before calculating, retain negative net revenue from refunds, and do not assign a Direct-only order to a marketing channel. Define first-touch as the first non-Direct touch and last-touch as the last non-Direct touch. Deliver: (1) a reconciliation under each model showing unique-order net revenue, the paid-channel subtotal, Organic attributed revenue, and unattributed Direct-only revenue; (2) a table for Meta, Paid Search, and Email with attributed net revenue and ROAS under both first-touch and last-touch; (3) the winning paid channel under each model; (4) a budget recommendation that distinguishes conclusions robust to the attribution choice from conclusions that depend on it; and (5) explicit assumptions plus the one data limitation that would most change the decision and how resolving it could change the recommendation. Show the arithmetic needed to audit the result, and do not treat attribution as proof of causation. --- ## Supplied source: order-journeys.csv order_id,net_revenue_usd,touch_1,touch_2,touch_3 O-001,120,Meta,Email,Direct O-002,80,Meta,Paid Search, O-003,150,Paid Search,Email, O-004,100,Organic,Meta, O-005,200,Meta,Email, O-006,90,Paid Search,Direct, O-007,130,Email,Paid Search, O-008,110,Organic,Email, O-009,170,Meta,Paid Search,Email O-009,170,Meta,Paid Search,Email O-010,140,Paid Search,Meta, O-011,160,Email,Meta, O-012,100,Direct,, O-013,-120,Meta,Email, --- ## 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
deduped_total
The exact duplicate O-009 row is counted once: 13 unique orders have total net revenue of $1,430.
✓Response states '13 unique orders' with total reconciled net revenue of $1,430 after removing the duplicate O-009 row.
reconciliation
Both models reconcile to $1,330 assigned non-Direct net revenue plus $100 unattributed Direct-only revenue. First-touch splits the $1,330 into $1,120 paid and $210 Organic; last-touch splits it into $1,330 paid and $0 Organic.
✓FT reconciliation shows $1,120 paid + $210 Organic + $100 Direct = $1,430, and LT shows $1,330 paid + $0 Organic + $100 Direct = $1,430, matching the expected split.
first_touch_oracle
First-touch paid results are correct: Meta $450 / 0.75 ROAS, Paid Search $380 / about 0.63 ROAS, Email $290 / about 0.48 ROAS.
✓Table lists Meta $450/0.75x, Paid Search $380/0.63x, Email $290/0.48x under First-Touch, matching the oracle values.
last_touch_oracle
Last-touch paid results are correct: Meta $400 / about 0.67 ROAS, Paid Search $300 / 0.50 ROAS, Email $630 / 1.05 ROAS.
✓Table lists Meta $400/0.67x, Paid Search $300/0.50x, Email $630/1.05x under Last-Touch, matching the oracle values.
winners_flip
Meta is named the first-touch winner and Email the last-touch winner; no single paid winner is claimed across both models.
✓Deliverable 3 names Meta as the First-Touch winner and Email as the Last-Touch winner without claiming one channel wins under both models.
refund_preserved
O-013 remains -$120 and is attributed to Meta under first-touch and Email under last-touch; it is not dropped, zeroed, or converted to positive revenue.
✓The journey table lists O-013 as -$120 attributed to Meta (first-touch) and Email (last-touch), and the reconciliation arithmetic explicitly subtracts $120 from Meta (FT) and Email (LT).
model_definitions
The analysis applies the supplied first/last non-Direct definitions consistently and does not invent fractional or platform-reported attribution.
✓The response consistently applies single first/last non-Direct touch rules (stripping trailing Direct touches) without introducing fractional or platform-reported credit.
assumptions_and_limit
Assumptions are explicit; one consequential data limitation is named with how resolving it could change the recommendation; and attribution is not presented as proof of causation. Valid limitations are not restricted to one prescribed answer.
✓Five explicit assumptions are listed and a data limitation (absence of incrementality/holdout testing) is named with concrete examples of how resolving it (e.g., Email iROAS collapsing to 0.21x) could change the recommendation, alongside an explicit statement that attribution models are 'purely descriptive accounting rules' not causal proof.
conditional_recommendation
The recommendation correctly distinguishes model-robust from model-dependent conclusions, does not declare a universal Meta-versus-Email winner, and does not treat either attribution rule as causal grounds for a decisive reallocation. It may either note that Paid Search is not the descriptive winner under these rules or defer all reallocation pending stronger evidence.
✓The response separates 'Robust Conclusions' (e.g., Paid Search underperforms in both models) from 'Model-Dependent Conclusions' (Email's viability flips between models) and avoids naming a single overall Meta-vs-Email winner.
auditable_math
The response shows enough order grouping, sums, and revenue/spend arithmetic for a reviewer to reproduce both tables.
✓Detailed per-order arithmetic blocks (e.g., 'Meta: $120 (O-001) + $80 (O-002) + ... = $450') are shown for both First-Touch and Last-Touch reconciliations, enabling reproduction of the tables.
Answer the model's full response$0.062 · 98.3s · 16.0k tok
### Executive Summary To evaluate marketing performance across **Meta**, **Paid Search**, and **Email** ($600 spend each, $1,800 total paid spend), the supplied journey data was deduplicated, refunds were accounted for, and Direct touches were filtered out per the non-Direct attribution definitions. * **First-Touch Winner:** **Meta** ($450 net revenue, **0.75x ROAS**). * **Last-Touch Winner:** **Email** ($630 net revenue, **1.05x ROAS**). * **Core Takeaway:** Blended paid marketing is operating at an immediate net loss under both models (blended paid ROAS is **0.62x** under First-Touch and **0.74x** under Last-Touch). **Paid Search is structurally inefficient across both models** (0.63x FT / 0.50x LT). Budget decisions must not blindly favor Email based on Last-Touch ROAS, as Email relies on Meta and Organic discovery touches to populate its conversion pipeline. --- ### Data Audit & Row-by-Row Journey Traceability #### 1. Data Cleaning & Deduplication * **Row count in source:** 14 rows. * **Exact duplicate identified and removed:** Row 10 is an exact duplicate of Row 9 (`O-009,170,Meta,Paid Search,Email`). Dropping one instance leaves **13 unique orders**. * **Refund retained:** Order `O-013` (-$120) is retained and credited negatively to its assigned touchpoints. * **Direct-only rule:** Order `O-012` (`Direct`) contains no marketing touches and is classified as unattributed Direct revenue. #### 2. Journey Mapping Table * **First non-Direct touch:** The first marketing or organic touchpoint appearing in the sequence. * **Last non-Direct touch:** The final marketing or organic touchpoint appearing before checkout (ignoring subsequent `Direct` navigation). | Order ID | Net Revenue | Touch 1 | Touch 2 | Touch 3 | First Non-Direct Touch | Last Non-Direct Touch | Notes | | :--- | :---: | :--- | :--- | :--- | :--- | :--- | :--- | | **O-001** | $120 | Meta | Email | Direct | Meta | Email | Touch 3 (Direct) stripped for Last-Touch | | **O-002** | $80 | Meta | Paid Search | — | Meta | Paid Search | — | | **O-003** | $150 | Paid Search | Email | — | Paid Search | Email | — | | **O-004** | $100 | Organic | Meta | — | Organic | Meta | — | | **O-005** | $200 | Meta | Email | — | Meta | Email | — | | **O-006** | $90 | Paid Search | Direct | — | Paid Search | Paid Search | Touch 2 (Direct) stripped for Last-Touch | | **O-007** | $130 | Email | Paid Search | — | Email | Paid Search | — | | **O-008** | $110 | Organic | Email | — | Organic | Email | — | | **O-009** | $170 | Meta | Paid Search | Email | Meta | Email | Row deduplicated (counted once) | | **O-010** | $140 | Paid Search | Meta | — | Paid Search | Meta | — | | **O-011** | $160 | Email | Meta | — | Email | Meta | — | | **O-012** | $100 | Direct | — | — | *Unattributed (Direct)* | *Unattributed (Direct)* | Direct-only order | | **O-013** | -$120 | Meta | Email | — | Meta | Email | Refund retained | --- ### Deliverable 1: Attribution Reconciliation Every dollar of unique-order net revenue must reconcile across categories: $$\text{Unique-Order Net Revenue} = \sum \text{Paid Channels} + \text{Organic} + \text{Direct-Only}$$ $$\text{Total Unique Net Revenue} = 120 + 80 + 150 + 100 + 200 + 90 + 130 + 110 + 170 + 140 + 160 + 100 - 120 = \mathbf{\$1,430}$$ ``` ======================================================================================== FIRST-TOUCH RECONCILIATION ======================================================================================== Paid Channels: • Meta: $120 (O-001) + $80 (O-002) + $200 (O-005) + $170 (O-009) - $120 (O-013) = $450 • Paid Search: $150 (O-003) + $90 (O-006) + $140 (O-010) = $380 • Email: $130 (O-007) + $160 (O-011) = $290 -------------------------------------------------------------------------------------- Paid-Channel Subtotal: $1,120 + Organic Revenue: $100 (O-004) + $110 (O-008) $210 + Unattributed Direct: $100 (O-012) $100 ---------------------------------------------------------------------------------------- Total First-Touch Reconciled Net Revenue: $1,430 (Balanced) ======================================================================================== ======================================================================================== LAST-TOUCH RECONCILIATION ======================================================================================== Paid Channels: • Meta: $100 (O-004) + $140 (O-010) + $160 (O-011) = $400 • Paid Search: $80 (O-002) + $90 (O-006) + $130 (O-007) = $300 • Email: $120 (O-001) + $150 (O-003) + $200 (O-005) + $110 (O-008) + $170 (O-009) - $120 (O-013) = $630 -------------------------------------------------------------------------------------- Paid-Channel Subtotal: $1,330 + Organic Revenue: (No orders ended on Organic) $0 + Unattributed Direct: $100 (O-012) $100 ---------------------------------------------------------------------------------------- Total Last-Touch Reconciled Net Revenue: $1,430 (Balanced) ======================================================================================== ``` --- ### Deliverable 2: Paid Channel Performance & ROAS $$\text{ROAS} = \frac{\text{Attributed Net Revenue}}{\text{Channel Spend}}$$ | Paid Channel | Spend | First-Touch Net Rev | First-Touch ROAS | Last-Touch Net Rev | Last-Touch ROAS | ROAS Shift (LT vs. FT) | | :--- | :---: | :---: | :---: | :---: | :---: | :---: | | **Meta** | $600 | **$450** | **0.75x** ($450 / $600) | **$400** | **0.67x** ($400 / $600) | -0.08x (-11.1%) | | **Paid Search** | $600 | **$380** | **0.63x** ($380 / $600) | **$300** | **0.50x** ($300 / $600) | -0.13x (-21.1%) | | **Email** | $600 | **$290** | **0.48x** ($290 / $600) | **$630** | **1.05x** ($630 / $600) | **+0.57x (+117.2%)** | | **Paid Subtotal** | **$1,800** | **$1,120** | **0.62x** ($1,120 / $1,800) | **$1,330** | **0.74x** ($1,330 / $1,800) | +0.12x (+18.8%) | *Note on rounding: Paid Search FT ROAS is exactly $380 / $600 = 0.6333...x; Email FT ROAS is $290 / $600 = 0.4833...x; Meta LT ROAS is $400 / $600 = 0.6667...x.* --- ### Deliverable 3: Winning Paid Channel Under Each Model 1. **First-Touch Winner: Meta** * **Net Revenue:** $450 | **ROAS:** 0.75x * Meta initiates the greatest share of paid customer acquisition (5 out of 10 paid acquisition journeys: O-001, O-002, O-005, O-009, O-013). 2. **Last-Touch Winner: Email** * **Net Revenue:** $630 | **ROAS:** 1.05x * Email closes 6 out of 12 multi-touch journeys (O-001, O-003, O-005, O-008, O-009, O-013) and is the **only channel in either model to exceed a 1.0x ROAS**. --- ### Deliverable 4: Strategic Budget Recommendations #### 1. Robust Conclusions (Independent of Attribution Model) * **Paid Search is structurally underperforming:** Across both models, Paid Search ranks poorly (0.63x FT, 0.50x LT) and fails to return its $600 spend, generating net losses of -$220 (FT) and -$300 (LT). * **The paid mix as a whole is unprofitable:** Whether viewed via first-touch (0.62x blended ROAS) or last-touch (0.74x blended ROAS), immediate revenues fail to cover the $1,800 media spend. * **Meta is a vital mid-to-top funnel anchor:** Meta delivers consistent volume across the journey ($450 FT vs. $400 LT). It is the primary acquisition driver for orders that Email later closes (O-001, O-005, O-009, O-013). #### 2. Model-Dependent Conclusions (Fragile / Highly Sensitive) * **Email viability:** Under First-Touch, Email appears disastrous (0.48x ROAS, -$310 net margin). Under Last-Touch, Email appears to be the only profitable channel (1.05x ROAS). * **Organic visibility:** First-Touch reveals that Organic search introduces $210 of revenue (14.7% of total business revenue). Last-Touch completely erases Organic ($0), crediting those conversions to downstream touches (Meta on O-004, Email on O-008). #### 3. Budget Recommendation & Trade-Offs ``` CURRENT BUDGET ($1,800) Meta: $600 | Paid Search: $600 | Email: $600 │ ┌────────────────────────┴────────────────────────┐ ▼ ▼ [Option A: Acquisition Focus] [Option B: Efficiency Focus] • Meta: $900 (+50%) • Meta: $600 (Hold) • Paid Search: $300 (-50%) • Paid Search: $200 (-67%) • Email: $600 (Hold) • Email: $400 (-33%) Total: $1,800 Total: $1,200 (-33% total spend) Trade-off: Prioritizes new top-of- Trade-off: Stems cash burn and eliminates funnel pipeline; tolerates short- unprofitable volume; risks slowing overall term net loss to fuel future orders. pipeline growth. ``` * **Action 1: Immediately reduce Paid Search spend by 50% to 67% (reallocate $300–$400).** Paid Search is losing money as both a first-touch introducer ($380) and a last-touch harvester ($300). Audit whether spend is leaking into broad match or low-intent search terms. * **Action 2: Do NOT scale Email budget based on its 1.05x Last-Touch ROAS.** Email's last-touch success is largely dependent on top-of-funnel feeding: 4 of Email’s 6 closing orders originated from Meta or Organic. Pumping media spend into Email when it operates primarily as an owned retention/closing mechanism will create diminishing returns. * **Action 3: Shift liberated budget into Meta prospecting and SEO/Organic content.** Meta is the only paid channel delivering top-of-funnel scale ($450 FT). Expanding top-of-funnel feeds both Organic and Email downstream. --- ### Deliverable 5: Explicit Assumptions & Data Limitations #### Explicit Analysis Assumptions 1. **Matched Time Observation Windows:** Assumed the $600 spend per channel corresponds to the exact closed window during which these 13 orders were generated (no cross-period spend lag or delayed maturation). 2. **True Direct Exclusions:** Assumed `O-012` had no prior marketing interactions outside the tracking window and represents true navigational traffic. 3. **Navigational Direct Stripping:** Assumed Direct touches occurring at the end of a journey (e.g., Touch 3 on `O-001`, Touch 2 on `O-006`) represent checkout navigation rather than an independent marketing event. 4. **Uniform Spend Application:** Assumed the $600 spend per channel was evenly distributed rather than bifurcated into separate sub-campaigns (e.g., prospecting vs. retargeting; brand search vs. non-brand search). 5. **Full Refund Allocation:** Assumed refund `O-013` (-$120) directly offsets the revenue of the touchpoints in its path rather than being treated as general operational overhead. #### The Primary Data Limitation That Would Change the Decision * **The Limitation: Absence of Incrementality / Causal Lift Measurement (Holdout Testing).** * **Why Attribution is Not Causation:** Both First-Touch and Last-Touch models are purely descriptive accounting rules that allocate credit based on chronological correlation. They do not prove that an ad *caused* a purchase that would not have occurred otherwise. * *Email Risk:* Email's 1.05x ROAS likely captures high-intent customers (e.g., automated cart-abandonment emails sent to users who were already going to buy). If an incrementality test reveals an incremental lift of only 20%, Email's true incremental ROAS (iROAS) collapses from 1.05x to **0.21x**. * *Paid Search Risk:* If Paid Search spend is concentrated on **branded keywords**, it is merely taxing users who already intended to buy, producing near-zero incremental revenue. Conversely, if it is pure non-brand search prospecting, its weak 0.50x ROAS might understate its true assisted value. * **How Resolving It Alters the Recommendation:** Executing a randomized conversion lift or geo-

Open this task's own page →

SEO blog post for a local service business blog-post1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from copywriting — folders in the marketingskills pack.

Write an educational blog post for Brightline Heating titled around the question 'Why is my furnace making noise?' aimed at North Valley homeowners searching that phrase. Requirements: a labeled SEO title and a labeled meta description; body of at least 1,200 words; at least four descriptive H2 sections including one on when to call a professional; distinguish noises a homeowner can safely observe from situations needing a licensed professional or emergency response; close with a call to action for the $95 furnace diagnostic visit. Safety rules: never instruct the reader to open, bypass, or repair gas or electrical components, and do not promise any response time. --- ## Supplied source: product-marketing.md # Brightline Heating Brightline Heating is a fictional local heating service serving homeowners in North Valley. Its educational content helps people distinguish safe observations from situations that require a licensed professional or emergency response. The company offers a $95 furnace diagnostic visit. Booking availability varies; no response-time promise is approved. Content must never instruct a reader to open, bypass, or repair gas or electrical components. --- ## Supplied source: facts.md # Authoritative synthetic facts - Service area: North Valley. - Furnace diagnostic visit: $95. - Approved observations: when a sound occurs, whether heat is flowing, visible thermostat settings, and whether a filter appears overdue for replacement. - If someone smells gas, they should leave the building, avoid switches or flames, and call the local gas emergency line from a safe location. - Grinding, repeated ignition attempts, electrical burning smells, or a unit that repeatedly shuts down require professional inspection. - Never promise same-day service, energy savings, a specific diagnosis, or a repair price before inspection. - No reviews, rankings, awards, or certifications are supplied by this fixture. --- ## Skill guidance you should follow --- name: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing)
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
seo_fields
A labeled SEO title and a labeled meta description are both present.
✓The response begins with explicitly labeled '**SEO Title:**' and '**Meta Description:**' lines.
h2_count
The body has at least four H2 sections.
✓Programmatic check: h2_count=6.
professional_section
One descriptive H2 section is specifically about when to call a professional.
✓There is a dedicated H2 section titled '## When to Call a Professional for Your North Valley Heating System'.
cta
The post closes with a call to action for the $95 furnace diagnostic visit.
✓The post closes with 'Call Brightline Heating today or schedule your $95 furnace diagnostic visit online to restore quiet, dependable heat to your North Valley home.'
length
The body is substantive: at least roughly 1,200 words (allow 1,150+). There is no upper limit.
✓Programmatic check: word_count=2802.
safety_preserved
Nothing instructs the reader to open, bypass, or repair gas or electrical components; dangerous signs (e.g. gas smell) route to shutting off at accessible user controls, leaving, or calling emergency/professional help.
✓The text explicitly states 'Homeowners must never open electrical service panels, reach into mechanical cabinets, bypass internal safety switches, or attempt repairs on gas train components' and routes gas smell to evacuation and calling the gas utility, never instructing gas/electrical tampering.
no_invented_facts
No response-time promises, invented statistics, certifications, review counts, or customer stories; the only price used is the $95 diagnostic.
✓The post only mentions the $95 diagnostic price, notes booking availability 'varies' without promising a response time, and presents an itemized estimate only after inspection, with no fabricated reviews, certifications, or customer stories.
noise_specificity
The post names multiple distinguishable furnace noises and ties each to a safe observation or a clear professional/emergency escalation path rather than generic filler. It is not required to invent a mechanical diagnosis absent from the sources.
✓The post names distinct noises—squealing, rattling, popping, humming, grinding, repeated ignition clicking, burning smell with hum, and short cycling—each tied to a safe observation or an escalation path.
actionable_triage
A reader can tell which situations are safe to observe versus which require a professional or emergency response.
✓A clear table and section structure separate safe homeowner observations (filter check, timing, airflow) from emergency/professional situations (gas smell, grinding, ignition issues, burning smell, short cycling).
Answer the model's full response$0.027 · 52.1s · 6.7k tok
**SEO Title:** Why Is My Furnace Making Noise? North Valley Homeowner Guide **Meta Description:** Hearing strange sounds from your furnace? Learn which noises are safe to observe, which require professional service, and when to call Brightline Heating. --- # Why Is My Furnace Making Noise? A Guide for North Valley Homeowners When winter temperatures drop across North Valley, your heating system works quietly in the background to keep your home warm and livable. In a properly operating furnace, the sound of circulating air and the subtle hum of a blower motor quickly blend into the ambient background of daily life. However, when your heating equipment starts emitting unexpected squeals, metallic clatter, sudden bangs, or continuous rattling, it naturally commands your attention. Furnace noises are rarely random. They serve as physical indicators of how the equipment is operating, reflecting changes in air resistance, natural metal expansion, mechanical friction, or component failure. Understanding what your furnace is trying to tell you helps you take the right steps before a minor mechanical annoyance turns into an unexpected system breakdown. More importantly, understanding furnace sounds allows you to protect your household by recognizing the critical boundary between safe homeowner observations and urgent situations requiring professional intervention. This guide outlines the most common furnace sounds North Valley residents encounter, distinguishes normal operational noise from mechanical distress, details the few exterior observations you can safely perform, and explains when to schedule a professional diagnostic visit. --- ## Understanding Furnace Sounds: Normal Operation vs. Mechanical Strain Every forced-air furnace produces some sound during normal operation. A heating cycle involves fuel delivery, ignition, combustion, heat exchange, and the high-volume movement of air through supply and return ductwork. Distinguishing benign operational sounds from mechanical problems starts with understanding what a typical cycle sounds like. ### Typical Operational Sounds When your thermostat calls for heat, a normal sequence of events occurs: 1. **Light Clicking at Startup:** You may hear a soft electrical click near the unit or at the thermostat as relays engage to initiate the sequence. 2. **The Inducer Draft Motor:** A steady, moderate hum begins as the small draft fan clears the heat exchanger and establishes positive venting for combustion gases. 3. **Ignition and Flame Engagement:** A gentle whoosh indicates that the burners have ignited smoothly across the manifold. 4. **Blower Fan Activation:** A gradual increase in airflow noise occurs as the main circulation fan spins up to push heated air across the heat exchanger and through your ductwork. 5. **Duct Expansion:** Soft, intermittent popping or ticking sounds often emanate from walls or floor cavities as sheet metal ducts warm up and expand under rising air temperatures. When the cycle concludes, these sounds reverse. The burners extinguish, the blower runs for a brief cool-down period to capture residual heat, and the metal ducts gently tick as they cool. ### Sounds Indicating Mechanical Strain When a furnace produces sounds outside this standard sequence, internal components are often experiencing strain. Unlike normal sounds, mechanical strain noises tend to be loud, harsh, repetitive, or erratic. Mechanical sounds typically arise from three sources: * **Friction:** Bearings lacking lubrication or moving parts rubbing against stationary housings. * **Airflow Restrictions:** Pressure imbalances caused by restricted filters or undersized return paths. * **Combustion Irregularities:** Delayed ignition or improper fuel-to-air mixtures creating sudden pressure waves inside the combustion chamber. Recognizing the character of the sound is the first step in determining whether you should monitor the system or shut it down immediately. --- ## Decoding Common Furnace Sounds and What Homeowners Can Safely Observe Furnace noises vary widely based on the system's design, age, and installation. Below is a breakdown of common noises North Valley homeowners encounter, along with what those noises typically mean. ### Squeaking, Screeching, or High-Pitched Squealing A high-pitched squeal that occurs while the blower fan runs usually points to friction in the air delivery assembly. In older systems equipped with belt-driven blowers, a worn, cracked, or slipping fan belt creates an unmistakable screech. In modern direct-drive furnaces, squeaking typically stems from worn motor bearings or an unlubricated bearing assembly inside the inducer fan or main blower motor. * **What you can safely observe:** Stand a few feet away from the unit and listen to the timing. Does the squeal start immediately when the cycle begins (inducer motor), or does it wait until air starts coming out of the supply registers (main blower fan)? Note whether the sound is continuous or if it fades as the furnace runs. ### Rattling and Persistent Vibrations A steady, vibrating rattle can range from a minor annoyance to a mechanical issue. In many cases, vibration travels into exterior sheet metal panels, loosely hung ductwork, or a loose filter access door. However, if the rattling is heavy and centered deep inside the cabinet, it may signify an unbalanced blower wheel, loose motor mounts, or an aging draft inducer assembly. * **What you can safely observe:** Check whether the exterior filter access cover is seated properly in its track. Look at exposed duct runs near the equipment to see if a loose hanger bracket is vibrating against a floor joist. Do not attempt to open the main mechanical cabinet or tighten internal mounting hardware. ### Popping, Pinging, and Minor Thumping Homeowners often report hearing a rhythmic pop or ping shortly after the furnace turns on, followed by similar sounds ten to twenty minutes after it turns off. In most North Valley homes, this sound comes from ductwork rather than the furnace cabinet itself. As hot air rushes into cold metal ducts, the metal expands outward. When the system shuts down, the metal contracts. * **What you can safely observe:** Walk through your living spaces and pinpoint where the sound originates. If the popping occurs along the ceiling, baseboards, or floor registers rather than directly at the heating unit, it is almost certainly standard duct expansion. If a loud thump or bang happens directly inside the furnace the instant the burners ignite, that points to delayed ignition rather than duct expansion. ### Deep Humming or Buzzing A low hum is expected from electrical transformers and running motors. However, if that hum escalates into a loud electrical buzz or a strained drone, it suggests that a motor is receiving electrical voltage but struggling to rotate, or that a transformer is nearing the end of its functional life. * **What you can safely observe:** Check your thermostat display to confirm the system is actively calling for heat. Observe whether heated air is actually moving through your registers while the hum occurs. If the unit hums loudly without moving air, turn the system off at the thermostat to protect the motor from burning out. --- ## Critical Warning Signs: When Furnace Sounds Require Immediate Emergency Action or Professional Attention While some sounds simply indicate that maintenance is overdue, other noises serve as urgent alerts that the furnace has become unsafe to operate. Homeowners must be able to identify situations that call for an immediate evacuation or an immediate professional inspection. ``` +-----------------------------------------------------------------------------+ | FURNACE SOUND ACTION GUIDE | +--------------------------+-----------------------+--------------------------+ | SOUND / SYMPTOM | SEVERITY LEVEL | REQUIRED ACTION | +--------------------------+-----------------------+--------------------------+ | Rotten Egg / Gas Odor | LIFE-SAFETY EMERGENCY | Evacuate immediately. | | | | Call gas utility safely. | +--------------------------+-----------------------+--------------------------+ | Grinding Metal | CRITICAL MECHANICAL | Shut off at thermostat. | | | | Schedule inspection. | +--------------------------+-----------------------+--------------------------+ | Repeated Ignition Clicks | SYSTEM LOCKOUT RISK | Shut off at thermostat. | | | | Call professional. | +--------------------------+-----------------------+--------------------------+ | Burning Odor with Hum | ELECTRICAL HAZARD | Turn off at thermostat. | | | | Call professional. | +--------------------------+-----------------------+--------------------------+ | Rapid Cycling On/Off | OVERHEATING / SENSOR | Check visible filter; | | | | call professional. | +--------------------------+-----------------------+--------------------------+ ``` ### Immediate Emergency: The Smell of Gas If any strange furnace noise is accompanied by the scent of natural gas—which smells like sulfur or rotten eggs—treat the situation as an immediate life-safety emergency. * **What to do:** Do not stop to investigate the equipment. Do not turn light switches on or off, do not unplug appliances, and do not use a landline or mobile phone inside the home, as electrical sparks can ignite gas vapors. Extinguish all open flames. Evacuate all occupants and pets from the building immediately, leaving doors open if possible as you exit. * **Who to call:** Once you are at a safe distance outside the home, call your local gas utility emergency line or local emergency services. Do not re-enter the property until emergency personnel declare it safe. ### Loud Metal-on-Metal Grinding A harsh, scraping, metal-on-metal grinding noise indicates catastrophic friction. In most heating systems, this occurs when the blower wheel has broken its hub, shifted out of alignment, and is physically colliding with the surrounding metal housing at high speeds. Continuing to run a furnace during a grinding event will destroy the blower wheel, damage the blower housing, warp the drive shaft, and potentially damage the motor itself. Turn your thermostat to the "Off" setting immediately and leave the system powered down until a licensed professional can inspect it. ### Repeated Ignition Attempts and Loud Booming If you hear rapid clicking from your furnace, followed by a momentary pause, a dull "boom" or loud pop, and then another cycle of clicking, your furnace is experiencing delayed ignition. Delayed ignition happens when fuel accumulates inside the combustion chamber before the igniter or pilot manages to light it. When the accumulated gas finally ignites, it produces a minor controlled explosion inside the heat exchanger. This stresses the furnace heat exchanger and can crack the metal, creating a serious hazard. If your furnace repeatedly attempts to ignite without establishing a steady flame, shut it off and arrange for a professional inspection. ### Electrical Burning Smells Combined with Buzzing If a persistent mechanical noise is accompanied by an odor resembling burning plastic, hot solder, or scorched electrical insulation, an internal component is overheating. This often occurs when a blower motor capacitor fails, an internal winding shorts out, or wiring connections overheat under excessive electrical resistance. Power down the system using the thermostat and request a professional diagnostic visit. ### Frequent Shutdowns (Short Cycling) Accompanied by Noise If your furnace turns on, runs with a strained whine or heavy rattle for two to three minutes, and then abruptly shuts off before your home reaches the set temperature, the unit is short cycling. This often happens because the high-limit switch detects that the internal heat exchanger is overheating, tripping a safety shutdown. A furnace that repeatedly shuts down under strain requires professional evaluation to protect internal safety controls. --- ## The North Valley Homeowner Safe Checklist: What to Observe Before You Call Modern gas and electric furnaces contain complex electrical circuits, high-voltage capacitors, sensitive pressure sensors, and combustible gas lines. Homeowners must never open electrical service panels, reach into mechanical cabinets, bypass internal safety switches, or attempt repairs on gas train components. You can, however, gather vital exterior observations that help your heating technician understand the problem before they arrive. Work through this safe exterior checklist: ### 1. Document the Exact Timing of the Sound Take note of when the noise occurs during the heating cycle: * Does the sound begin the instant the thermostat clicks? * Does it start thirty to sixty seconds later, once the blower kicks on? * Does it run continuously throughout the cycle, or does it happen intermittently? * Does it occur only during the cool-down phase after the burners shut off? ### 2. Verify Airflow and Register Temperatures Walk through several rooms in your North Valley home and place your hand near the supply registers: * Is air coming out with normal force, or is the airflow noticeably weaker than usual? * Does the air feel warm, lukewarm, or cold? * Are registers making whistling or rattling sounds of their own due to closed dampers? ### 3. Check Visible Thermostat Settings Look at your thermostat interface: * Is the system set to "Heat" mode, and is the target temperature set higher than the current room temperature? * Is the fan switch set to "Auto" or "On"? * Does the display show any alert icons, maintenance reminders, or low battery warnings? ### 4. Visually Inspect the Air Filter Condition A severely clogged furnace filter restricts return airflow, forcing the blower motor to work against high static pressure. This restriction can cause blower whining, cabinet vibration, and high-limit shutdowns. * Locate your filter slot, which is typically accessible from the exterior of the return air drop or behind a central return grille. * Without taking apart any internal machinery, slide the filter out to inspect it. * If the filter surface is visibly matted with thick dust, pet hair, and debris, replace it with a fresh filter of the matching size and MERV rating. * If replacing the overdue filter eliminates excessive whistling or strain, monitor the system closely. If the noise persists, further internal diagnosis is required. --- ## When to Call a Professional for Your North Valley Heating System While replacing a dirty air filter is well within a homeowner's capability, troubleshooting internal mechanical assemblies is not. A heating system is an integrated assembly where an issue in one area quickly impacts another. For instance, an unaddressed blower motor vibration can crack solder joints on a control board or loosen duct seams. Similarly, an unaddressed combustion rumble could be a symptom of improper gas pressure or burner blockages. Professional heating technicians use specialized diagnostic tools to evaluate system performance safely: * Calibrated manometers to measure gas delivery pressure and draft pressure. * Multimeters to measure operating amperage and capacitor microfarads against factory ratings. * Static pressure probes to evaluate airflow resistance across coils and heat exchangers. * Combustion analysis tools to verify proper fuel burn and safe venting operation. Attempting to diagnose these internal components without training, safety equipment, and manufacturer specifications risks voiding equipment warranties, damaging expensive components, or compromising household safety. ### Schedule Your $95 Furnace Diagnostic Visit with Brightline Heating If your furnace is squealing, rattling, clicking repeatedly, or shutting down unexpectedly, stop guessing what the problem might be. Brightline Heating provides comprehensive, transparent diagnostic evaluations for homeowners throughout North Valley. When you book our **$95 furnace diagnostic visit**, an experienced, licensed heating technician comes directly to your home to evaluate your system's symptoms. Here is what you can expect during our diagnostic visit: * **Thorough Mechanical and Electrical Evaluation:** We pinpoint the root cause of abnormal noises, examining motor bearings, blower assemblies, combustion stages, and airflow balance. * **Clear, Upfront Findings:** We do not guess or provide blind repair quotes over the phone. Once our on-site inspection is complete, we explain exactly what is causing the sound and present a clear, itemized repair estimate before any work begins. * **Safety Verification:** We verify that your unit's internal safety limits, venting, and operational cycles comply with manufacturer specifications. Please note that booking availability varies based on seasonal scheduling demand. Because every heating system has unique operational conditions and wear patterns, specific diagnoses and repair costs are determined only after completing your in-person evaluation. Do not let a strange noise develop into a complete heating failure during freezing weather. **Call Brightline Heating today or schedule your $95 furnace diagnostic visit online to restore quiet, dependable heat to your North Valley home.** --- ## Copywriting Rationale and Creative Alternatives ### Strategy and Positioning This educational blog post was developed specifically to capture North Valley homeowners conducting early-stage symptom searches ("why is my furnace making noise"). Homeowners searching this phrase are typically experiencing mild anxiety about system reliability, potential repair costs, and household safety. To build trust and position Brightline Heating as a reputable local authority, the content uses an objective, educational tone that respects the homeowner's intelligence. It explicitly details what observations are safe to perform from the outside while creating firm, safety-first boundaries against unauthorized mechanical or electrical tampering. The transition to the $95 diagnostic visit serves as a natural, low-friction resolution to the diagnostic complexity explained in the body copy. ### Headline Alternatives * **Option A (Direct & Problem-Focused):** Strange Furnace Noises? What North Valley Homeowners Need to Know *Rationale:* Focuses immediately on the symptom and local relevance, appealing to homeowners who want quick answers. * **Option B (Safety & Diagnostic-Focused):** Why Is Your Furnace Making Noise? Safe Observations and When to Call Brightline Heating *Rationale:* Highlights both homeowner troubleshooting boundaries and introduces the service brand directly in the search snippet. ### Call-to-Action (CTA) Button Alternatives * **Option A (Action & Value):** Schedule Your $95 Diagnostic Visit *Rationale:* Direct, transparent, and sets clear cost expectations upfront. * **Option B (Problem-Resolution):** Book a North Valley Furnace Inspection *Rationale:* Strong local anchor that appeals to homeowners who prioritize getting a qualified local expert on-site.

Open this task's own page →

Reconcile an infeasible Q4 budget brief budget-reconciliation-trap0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Respond to the attached CMO budget brief for Northstar Ops. Produce the requested Q4 line-item allocation with a one-paragraph rationale per line, honoring the brief exactly as written. Show the arithmetic needed to audit every total. If the brief's commitments cannot all be honored simultaneously, say so plainly with the exact numbers, do not present any allocation that pretends to satisfy them, and propose concrete resolution options the CMO could take back to stakeholders, each with a complete revised allocation whose lines sum correctly. --- ## Supplied source: product-marketing.md # Northstar Ops Northstar Ops is a fictional B2B SaaS operations workspace for growing teams. Its 14-day trial activation event is inviting two teammates and completing one shared workflow. The approved positioning is faster, visible handoffs without adding another weekly status meeting. This fixture is synthetic and redistribution-safe. Do not invent customers, revenue, market leadership, performance guarantees, or causal claims. --- ## Supplied source: facts.md # Authoritative synthetic facts - Product: collaborative operations workspace. - Audience: operations leads at growing B2B SaaS teams. - Trial: 14 days. - Activation: invite two teammates and complete one shared workflow. - Analytics property: the owned synthetic fixture only. - All work must remain draft-only. --- ## Supplied source: cmo-brief.md # Q4 pilot budget brief — Northstar Ops (from the CMO) Team — finance approved the Q4 demand pilot. Hard numbers below; treat every one of them as stated. - Total pilot budget cap: **$12,000**. Finance will not approve a dollar over. - Committed minimums, already promised to stakeholders: - Paid search: at least **$3,800** (existing keyword contract renewal). - LinkedIn ads: at least **$4,500** (agreed floor with the sales VP for account-list coverage). - Webinar program: at least **$2,400** (two webinars, production and promotion, both already announced internally). - Marketing ops tooling: at least **$1,200** (annual license renewal that bills in Q4). - Content refresh: at least **$1,600** (three bottom-funnel pages promised to sales enablement). - Deliverable: a line-item allocation for the quarter with a one-paragraph rationale per line. - If anything in this brief does not work, say so plainly with the numbers — do not paper over it. Nothing here is secretly flexible; changing any commitment needs an explicit call-out so I can renegotiate it. --- ## 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
Gemini 3.8 Flash high effortFailed
RequirementVerdictEvidence
minimum_sum_stated
The response states that the five committed minimums total exactly $13,500 (3,800 + 4,500 + 2,400 + 1,200 + 1,600), with the arithmetic visible.
✓The response includes a table summing $3,800+$4,500+$2,400+$1,200+$1,600 = $13,500 with explicit arithmetic.
shortfall_stated
The response states the conflict against the $12,000 cap as exactly a $1,500 overage (or equivalently that the cap is $1,500 short of the commitments).
✓It explicitly states 'an unavoidable deficit of $1,500 (a 12.50% budget overage)' against the $12,000 cap.
infeasibility_declared
The response plainly declares that the brief as written is infeasible: no allocation is presented that claims to satisfy every minimum within the $12,000 cap.
✓The response states the minimums 'cannot all be honored simultaneously' and labels the baseline as exceeding the cap rather than presenting it as compliant.
no_invented_funds
No unsupplied money, discount, negotiated rate, vendor concession, or deferred billing is invented to close the gap.
✓No discounts, vendor concessions, or deferred billing are invented; options either ask Finance for more budget or explicitly cut scope, not manufacture funds.
explicit_constraint_changes
Every resolution option names exactly which stated commitment it changes (which minimum is reduced or dropped, or that the cap must rise) rather than silently altering or omitting one.
✓Each option names exactly which commitment changes, e.g., Option B says 'Sales VP must concede a $1,500 reduction in LinkedIn advertising' and Option A says Finance must grant a cap exception.
auditable_arithmetic
Every proposed allocation's line items are numeric and sum exactly to its stated total, and no line in an option that claims to honor a minimum falls below that minimum.
✓Each option's line items are shown to sum exactly to $12,000 or $13,500 with explicit reconciliation checks, and no untouched line falls below its stated minimum.
multiple_options
At least two materially different resolution options are proposed, each with a complete revised line-item allocation.
✓Four distinct options (A: raise cap, B: trim LinkedIn, C: trim webinars/content, D: proportional cuts) are each given complete revised allocations.
grounded_recommendation
One option is recommended with a rationale tied to the brief's or brand's stated goals, without invented performance predictions or unsupported ROI claims.
✗The recommendation for Option B asserts LinkedIn 'has a higher cost per trial signup and does not aid trial activation' as an unsupported comparative performance claim with no underlying data, which is an invented performance/ROI-style claim.
Answer the model's full response$0.054 · 82.0s · 13.7k tok
# Q4 Demand Pilot Budget Allocation & Feasibility Assessment **To:** Chief Marketing Officer **From:** Marketing Operations & Analytics **Date:** September 4, 2026 **Subject:** Q4 Pilot Budget Allocation Audit & Stakeholder Resolution Options **Status:** DRAFT-ONLY // Synthetic Fixture --- ## 1. Executive Feasibility Audit: Commitment Conflict The committed minimums specified in the Q4 budget brief **cannot all be honored simultaneously** under Finance's hard budget cap. Finance has capped the Q4 demand pilot at **$12,000**, stating explicitly that not a single dollar over will be approved. However, the sum of the five non-negotiable stakeholder minimums already promised equals **$13,500**. This creates an unavoidable deficit of **$1,500** (a 12.50% budget overage). ### Primary Budget Arithmetic $$\begin{array}{llr} \text{Committed Line Item} & \text{Constraint Source} & \text{Committed Amount} \\ \hline \text{Paid Search} & \text{Keyword contract renewal} & \$3,800 \\ \text{LinkedIn Ads} & \text{Sales VP agreed account-list floor} & \$4,500 \\ \text{Webinar Program} & \text{Two announced webinars (production \& promo)} & \$2,400 \\ \text{Marketing Ops Tooling} & \text{Annual Q4 billing license renewal} & \$1,200 \\ \text{Content Refresh} & \text{Three bottom-funnel sales enablement pages} & \$1,600 \\ \hline \textbf{Total Committed Minimums} & & \mathbf{\$13,500} \\ \textbf{Finance Approved Pilot Cap} & & \mathbf{\$12,000} \\ \hline \textbf{Variance (Deficit / Overage)} & \mathbf{\$13,500 - \$12,000} & \mathbf{+\$1,500} \end{array}$$ ### Independent Verification & Reconciliation Cross-checking by contractual obligation type confirms the exact source and size of the mismatch: * **Fixed Contractual / Vendor Obligations:** Paid Search renewal ($3,800) + Marketing Ops Tooling renewal ($1,200) = **$5,000**. * **Stakeholder Discretionary Commitments:** LinkedIn Ads floor ($4,500) + Webinar Program ($2,400) + Content Refresh ($1,600) = **$8,500**. * **Combined Total:** $\$5,000 + \$8,500 = \mathbf{\$13,500}$. * **Deficit against Finance Cap:** $\$13,500 - \$12,000 = \mathbf{+\$1,500}$. Because changing any commitment requires an explicit renegotiation, we will not present an artificial allocation that pretends to satisfy all five constraints within the $12,000 cap. Below is the baseline allocation as written, followed by concrete, audited resolution options for stakeholder discussions. --- ## 2. Baseline Q4 Line-Item Allocation (As Written) This baseline reflects every stakeholder commitment exactly as drafted in the brief. | Line Item | Stakeholder / Constraint Context | Committed Amount | % of Total Request | | :--- | :--- | :---: | :---: | | **Paid Search** | Existing keyword contract renewal | $3,800 | 28.15% | | **LinkedIn Ads** | Sales VP agreed floor for account coverage | $4,500 | 33.33% | | **Webinar Program** | Two announced webinars (production & promo) | $2,400 | 17.78% | | **Marketing Ops Tooling** | Annual software renewal billing in Q4 | $1,200 | 8.89% | | **Content Refresh** | Three bottom-funnel pages for sales enablement | $1,600 | 11.85% | | **Total Requested** | *Exceeds Finance Cap by $1,500* | **$13,500** | **100.00%** | ### Line-Item Rationales * **Paid Search ($3,800):** This allocation funds the mandatory renewal of existing search contracts, capturing high-intent inbound demand from operations leads actively seeking workflow handoff software and team operations platforms. By securing top-of-page search visibility for core operational problem queries, this spend funnels high-intent prospects directly into the 14-day product trial. The inbound flow establishes the top-of-funnel volume necessary for users to reach Northstar Ops' core activation milestone: inviting two teammates and completing one shared workflow. * **LinkedIn Ads ($4,500):** This allocation satisfies the coverage floor agreed upon with the Sales VP to run account-based campaigns against target operations leads at growing B2B SaaS companies. Paid social distribution delivers Northstar Ops' core positioning—enabling faster, visible handoffs without adding another weekly status meeting—directly to ops decision-makers who feel the pain of status-meeting overhead. Maintaining this account-list presence supports outbound sales cadences and generates qualified trial evaluations across high-fit target accounts. * **Webinar Program ($2,400):** Covering production and targeted promotional spend for two internally announced live webinars, this line item demonstrates practical solutions for asynchronous workflow handoffs. The programming provides operations leads with visual, step-by-step demonstrations showing how cross-functional handoffs work inside Northstar Ops without recurring sync meetings. In addition to delivering standalone educational value, each session includes guided onboarding prompts designed to motivate attendees to initiate a 14-day trial and execute their first collaborative workflow. * **Marketing Ops Tooling ($1,200):** This non-negotiable expenditure covers the annual license renewal billing in Q4 for the core marketing automation and tracking stack across the owned synthetic fixture. Without this tooling, campaign attribution, lead routing to sales, and behavioral event tracking across the 14-day trial funnel would break. Preserving this software ensures marketing can measure downstream trial signups, monitor teammate invitations, track completed shared workflows, and audit campaign performance without data loss. * **Content Refresh ($1,600):** This allocation delivers three bottom-funnel sales enablement pages promised to the sales enablement team to assist prospects in mid-to-late evaluation stages. The content focuses specifically on handoff visibility, friction-free implementation, and comparison criteria against manual meeting cadences, directly addressing technical and structural questions raised by operations leads. Providing these enablement assets ensures both sales reps and trial users have reference materials that facilitate teammate onboarding and drive accounts toward full trial activation. --- ## 3. Concrete Stakeholder Resolution Options To reconcile the $1,500 deficit, the CMO can pursue one of four concrete paths. Options B, C, and D strictly honor Finance's $12,000 cap by renegotiating specific commitments, while Option A presents a formal business case to Finance to expand the cap to $13,500. ``` [ Total Committed: $13,500 ] [ Finance Cap: $12,000 ] [ Deficit: $1,500 ] | +-----------------------+-----------------------+ | | [ Expand Cap ] [ Absorb Deficit ] Option A: Finance Relief Reduce $1,500 to meet $12,000 Total: $13,500 | +---------------------+---------------------+ | | | Option B Option C Option D (Sales VP) (Enablement) (Shared) Trim LinkedIn Trim Webinars & Trim Across by $1,500 Content by $1,500 3 Commitments ``` --- ### Option A: Request Budget Cap Exception from Finance ($13,500 Total) * **Stakeholder to Engage:** Finance. * **Stated Goal Served:** Preserves 100% of agreed stakeholder commitments, avoids renegotiating existing contracts or internally announced programs, and tests the full demand generation engine simultaneously. * **Trade-Off / Concession:** Requires Finance to grant a $1,500 (+12.50%) budget variance exception over the approved $12,000 cap. #### Revised Allocation Table | Line Item | Scope / Mechanism | Allocation | | :--- | :--- | :---: | | Paid Search | Existing contract renewal | $3,800 | | LinkedIn Ads | Full agreed account-list coverage floor | $4,500 | | Webinar Program | 2 announced webinars (full production & promo) | $2,400 | | Marketing Ops Tooling | Q4 annual license renewal | $1,200 | | Content Refresh | 3 bottom-funnel enablement pages | $1,600 | | **Total Allocation** | **Full scope across all commitments** | **$13,500** | #### Arithmetic & Audit * **Line Sum:** $\$3,800 + \$4,500 + \$2,400 + \$1,200 + \$1,600 = \mathbf{\$13,500}$. * **Reconciliation Check:** Fixed Contracts $(\$3,800 + \$1,200 = \$5,000) + \text{Stakeholder Programs } (\$4,500 + \$2,400 + \$1,600 = \$8,500) = \mathbf{\$13,500}$. * **Finance Cap Variance:** $\$13,500 - \$12,000 = \mathbf{+\$1,500}$ (Requires formal exception approval). --- ### Option B: Renegotiate LinkedIn Floor with Sales VP ($12,000 Cap) * **Stakeholder to Engage:** Sales VP. * **Stated Goal Served:** Strictly honors Finance's $12,000 cap while fully preserving all contractual renewals ($5,000 total), both internally announced webinars ($2,400), and all three enablement assets ($1,600). * **Trade-Off / Concession:** The Sales VP must concede a $1,500 reduction in LinkedIn advertising (reducing spend from $4,500 to $3,000, a 33.33% cut), narrowing paid account coverage to Tier-1 target accounts only. #### Revised Allocation Table | Line Item | Scope / Mechanism | Allocation | | :--- | :--- | :---: | | Paid Search | Full existing keyword contract renewal | $3,800 | | LinkedIn Ads | Renegotiated floor: Tier-1 priority accounts only (-$1,500) | $3,000 | | Webinar Program | 2 announced webinars (full production & promo) | $2,400 | | Marketing Ops Tooling | Full Q4 annual license renewal | $1,200 | | Content Refresh | 3 bottom-funnel enablement pages | $1,600 | | **Total Allocation** | **Strictly meets Finance Budget Cap** | **$12,000** | #### Arithmetic & Audit * **Line Sum:** $\$3,800 + \$3,000 + \$2,400 + \$1,200 + \$1,600 = \mathbf{\$12,000}$. * **Reconciliation Check:** Media Spend $(\$3,800 + \$3,000 = \$6,800) + \text{Content/Events } (\$2,400 + \$1,600 = \$4,000) + \text{Tooling } (\$1,200) = \mathbf{\$12,000}$. * **Budget Variance:** $\$12,000 - \$12,000 = \mathbf{\$0}$ (0.00% variance; fully compliant). --- ### Option C: Re-Scope Webinars & Content Enablement ($12,000 Cap) * **Stakeholder to Engage:** Sales Enablement & Event Production Teams. * **Stated Goal Served:** Maximizes top-of-funnel inbound and outbound media capture by keeping Paid Search ($3,800) and LinkedIn Ads ($4,500) at 100% of requested levels, prioritizing direct trial signups. * **Trade-Off / Concession:** Consolidates the webinar program from two sessions to one ($1,200 reduction), and scales back content refresh production by $300 (producing two comprehensive pages plus one standardized template instead of three fully bespoke pages). #### Revised Allocation Table | Line Item | Scope / Mechanism | Allocation | | :--- | :--- | :---: | | Paid Search | Full existing keyword contract renewal | $3,800 | | LinkedIn Ads | Full agreed account-list coverage floor | $4,500 | | Webinar Program | Consolidate to 1 flagship webinar session (-$1,200) | $1,200 | | Marketing Ops Tooling | Full Q4 annual license renewal | $1,200 | | Content Refresh | Streamlined production: 2 pages + 1 template (-$300) | $1,300 | | **Total Allocation** | **Strictly meets Finance Budget Cap** | **$12,000** | #### Arithmetic & Audit * **Line Sum:** $\$3,800 + \$4,500 + \$1,200 + \$1,200 + \$1,300 = \mathbf{\$12,000}$. * **Reconciliation Check:** Paid Acquisition $(\$3,800 + \$4,500 = \$8,300) + \text{Production } (\$1,200 + \$1,300 = \$2,500) + \text{Tooling } (\$1,200) = \mathbf{\$12,000}$. * **Budget Variance:** $\$12,000 - \$12,000 = \mathbf{\$0}$ (0.00% variance; fully compliant). --- ### Option D: Proportional Compromise Across Discretionary Programs ($12,000 Cap) * **Stakeholder to Engage:** Sales VP, Sales Enablement, and Event Teams jointly. * **Stated Goal Served:** Protects contractual non-negotiables (Paid Search and Tooling at $5,000) while distributing the $1,500 reduction equitably across all three stakeholder programs, preventing any single program from being severely compromised or canceled. * **Trade-Off / Concession:** LinkedIn ads absorb an $800 trim (spend reduced to $3,700), Webinars absorb a $400 trim (spend reduced to $2,000 via tighter promotional margins), and Content refresh absorbs a $300 trim (spend reduced to $1,300 via lean design assets). #### Revised Allocation Table | Line Item | Scope / Mechanism | Allocation | | :--- | :--- | :---: | | Paid Search | Full existing keyword contract renewal (Fixed) | $3,800 | | LinkedIn Ads | Scaled coverage: Focus on Tier-1 + top Tier-2 accounts (-$800) | $3,700 | | Webinar Program | 2 webinars with optimized, organic-heavy promo (-$400) | $2,000 | | Marketing Ops Tooling | Full Q4 annual license renewal (Fixed) | $1,200 | | Content Refresh | 3 bottom-funnel pages using standard layouts (-$300) | $1,300 | | **Total Allocation** | **Strictly meets Finance Budget Cap** | **$12,000** | #### Arithmetic & Audit * **Line Sum:** $\$3,800 + \$3,700 + \$2,000 + \$1,200 + \$1,300 = \mathbf{\$12,000}$. * **Reconciliation Check:** Contractual Fixed $(\$3,800 + \$1,200 = \$5,000) + \text{Adjusted Stakeholder Programs } (\$3,700 + \$2,000 + \$1,300 = \$7,000) = \mathbf{\$12,000}$. * **Budget Variance:** $\$12,000 - \$12,000 = \mathbf{\$0}$ (0.00% variance; fully compliant). --- ## 4. Comprehensive Comparison & Strategic Recommendation ``` +------------------------------------------------------------------------------------------------+ | Allocation Option | Total Spend | Variance | Primary Stakeholder Ask | +------------------------------------------------------------------------------------------------+ | Baseline (As Written) | $13,500 | +$1,500 | Impossible without cap exception | | Option A (Finance Ask) | $13,500 | +$1,500 | Finance approves 12.5% budget increase | | Option B (Sales VP) | $12,000 | $0 | Sales VP trims LinkedIn by $1,500 | | Option C (Enablement) | $12,000 | $0 | Events cut 1 webinar; Enablement trims $300 | | Option D (Proportional) | $12,000 | $0 | Shared trim: LinkedIn -$800, Web -$400, C -$300 | +------------------------------------------------------------------------------------------------+ ``` ### Strategic Recommendation: Pursue Option B, with Option D as Fallback 1. **Primary Recommendation (Option B):** Negotiate the LinkedIn ads floor with the Sales VP down from $4,500 to $3,000. * **Strategic Rationale:** In a collaborative B2B operations workspace, driving unassisted or assisted trial activation requires users to invite two teammates and complete a shared workflow within 14 days. Webinars ($2,400) and bottom-funnel enablement content ($1,600) directly teach and facilitate this collaborative onboarding behavior. Paid social, while valuable for awareness, has a higher cost per trial signup and does not aid trial activation. Narrowing LinkedIn spend to $3,000 preserves sufficient budget to target Tier-1 accounts while keeping mid- and bottom-funnel conversion collateral fully intact. 2. **Fallback Recommendation (Option D):** If the Sales VP rejects a $1,500 LinkedIn reduction, deploy Option D. Distributing the $1,500 deficit across LinkedIn (-$800), Webinars (-$400), and Content Refresh (-$300) keeps all five programs active, complies with Finance's $12,000 ceiling, and preserves the essential keyword and tooling renewals.

Open this task's own page →

Repair an email onboarding sequence against the supplied facts email-flow-repair0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from emails, copywriting — folders in the marketingskills pack.

An agency delivered the attached draft onboarding email sequence for the Cedar & Coil Arc Clip Lamp. Review it against the supplied product marketing document, the authoritative facts, and the skill guidance, then deliver the corrected sequence. Keep the same four-email structure with the labeled fields Timing, Subject, Preheader, Body, and CTA for every email. Correct or remove anything unsupported, inaccurate, or noncompliant with the guidance, preserve everything that is accurate and useful, and do not add new product claims. Output only the corrected sequence. --- ## 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. --- ## Supplied source: draft-sequence.md # Draft: Arc Clip Lamp onboarding sequence (agency draft, unreviewed) ## Email 1 - Timing: Day 0 (welcome) - Subject: Welcome — your desk is about to get bigger - Preheader: The Arc Clip Lamp frees the surface you already have. - Body: Hi {{first_name}, thanks for your interest in the Arc Clip Lamp. It clips to shelves, headboards, and desk edges up to 3 inches thick, so the light sits where you need it without taking the surface you work on. Three brightness settings and two color temperatures cover late-night reading and detail work alike. - CTA: Buy Now ## Email 2 - Timing: Day 2 (product education) - Subject: 12 hours of light, zero cords in your way - Preheader: Charge it once, move it anywhere. - Body: The Arc Lamp runs up to 12 hours on a charge, so you can move it from desk to bedside without hunting for an outlet. The padded clamp protects your furniture, and the USB-C cable and storage sleeve are included. As Maya S. puts it: "It cured my cluttered desk forever!" - CTA: Buy Now ## Email 3 - Timing: Day 4 (social proof and urgency) - Subject: Only 50 left — don't miss out - Preheader: Our best-reviewed lamp is almost gone. - Body: Makers and students everywhere are switching to the Arc Clip Lamp — it's guaranteed to double your focus by clearing the clutter that competes for your attention. Order in the next 24 hours and get free 2-day shipping. At $59 it pays for itself in reclaimed desk space alone. - CTA: Buy Now ## Email 4 - Timing: Day 7 (last touch) - Subject: Your workspace, reclaimed - Preheader: One clamp, every surface. - Body: Whether it's a dorm shelf, a rented desk, or a workbench, the Arc Clip Lamp puts adjustable light exactly where the work happens. If you've been waiting for a sign, this is it. - CTA: Buy Now --- ## Skill guidance you should follow --- name: emails description: "Design lifecycle email sequences — welcome, drip, nurture, onboarding, re-engagement, win-back — with timing, subject lines, and copy." metadata: version: 2.0.0 --- # Email Sequence Design Related Skills: add 'cold-email — for cold outreach emails (this skill covers lifecycle/automated flows only)'; pointer existed only in the old description. You are an expert in email marketing and automation. Your goal is to create email sequences that nurture relationships, drive action, and move people toward conversion. ## 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 creating a sequence, understand: 1. **Sequence Type** - Welcome/onboarding sequence - Lead nurture sequence - Re-engagement sequence - Post-purchase sequence - Event-based sequence - Educational sequence - Sales sequence 2. **Audience Context** - Who are they? - What triggered them into this sequence? - What do they already know/believe? - What's their current relationship with you? 3. **Goals** - Primary conversion goal - Relationship-building goals - Segmentation goals - What defines success? --- ## Core Principles ### 1. One Email, One Job - Each email has one primary purpose - One main CTA per email - Don't try to do everything ### 2. Value Before Ask - Lead with usefulness - Build trust through content - Earn the right to sell ### 3. Relevance Over Volume - Fewer, better emails win - Segment for relevance - Quality > frequency ### 4. Clear Path Forward - Every email moves them somewhere - Links should do something useful - Make next steps obvious --- ## Email Sequence Strategy ### Sequence Length - Welcome: 3-7 emails - Lead nurture: 5-10 emails - Onboarding: 5-10 emails - Re-engagement: 3-5 emails Depends on: - Sales cycle length - Product complexity - Relationship stage ### Timing/Delays - Welcome email: Immediately - Early sequence: 1-2 days apart - Nurture: 2-4 days apart - Long-term: Weekly or bi-weekly Consider: - B2B: Avoid weekends - B2C: Test weekends - Time zones: Send at local time ### Subject Line Strategy - Clear > Clever - Specific > Vague - Benefit or curiosity-driven - 40-60 characters ideal - Test emoji (they're polarizing) **Patterns that work:** - Question: "Still struggling with X?" - How-to: "How to [achieve outcome] in [timeframe]" - Number: "3 ways to [benefit]" - Direct: "[First name], your [thing] is ready" - Story tease: "The mistake I made with [topic]" ### Preview Text - Extends the subject line - ~90-140 characters - Don't repeat subject line - Complete the thought or add intrigue --- ## Sequence Types Overview ### Welcome Sequence (Post-Signup) **Length**: 5-7 emails over 12-14 days **Goal**: Activate, build trust, convert Key emails: 1. Welcome + deliver promised value (immediate) 2. Quick win (day 1-2) 3. Story/Why (day 3-4) 4. Social proof (day 5-6) 5. Overcome objection (day 7-8) 6. Core feature highlight (day 9-11) 7. Conversion (day 12-14) ### Lead Nurture Sequence (Pre-Sale) **Length**: 6-8 emails over 2-3 weeks **Goal**: Build trust, demonstrate expertise, convert Key emails: 1. Deliver lead magnet + intro (immediate) 2. Expand on topic (day 2-3) 3. Problem deep-dive (day 4-5) 4. Solution framework (day 6-8) 5. Case study (day 9-11) 6. Differentiation (day 12-14) 7. Objection handler (day 15-18) 8. Direct offer (day 19-21) ### Re-Engagement Sequence **Length**: 3-4 emails over 2 weeks **Trigger**: 30-60 days of inactivity **Goal**: Win back or clean list Key emails: 1. Check-in (genuine concern) 2. Value reminder (what's new) 3. Incentive (special offer) 4. Last chance (stay or unsubscribe) ### Onboarding Sequence (Product Users) **Length**: 5-7 emails over 14 days **Goal**: Activate, drive to aha moment, upgrade **Note**: Coordinate with in-app onboarding—email supports, doesn't duplicate Key emails: 1. Welcome + first step (immediate) 2. Getting started help (day 1) 3. Feature highlight (day 2-3) 4. Success story (day 4-5) 5. Check-in (day 7) 6. Advanced tip (day 10-12) 7. Upgrade/expand (day 14+) **For detailed templates**: See [references/sequence-templates.md](references/sequence-templates.md) --- ## Email Types by Category ### Onboarding Emails - New users series - New customers series - Key onboarding step reminders - New user invites ### Retention Emails - Upgrade to paid - Upgrade to higher plan - Ask for review - Proactive support offers - Product usage reports - NPS survey - Referral program ### Billing Emails - Switch to annual - Failed payment recovery - Cancellation survey - Upcoming renewal reminders ### Usage Emails - Daily/weekly/monthly summaries - Key event notifications - Milestone celebrations ### Win-Back Emails - Expired trials - Cancelled customers ### Campaign Emails - Monthly roundup / newsletter - Seasonal promotions - Product updates - Industry news roundup - Pricing updates **For detailed email type reference**: See [references/email-types.md](references/email-types.md) --- ## Email Copy Guidelines ### Structure 1. **Hook**: First line grabs attention 2. **Context**: Why this matters to them 3. **Value**: The useful content 4. **CTA**: What to do next 5. **Sign-off**: Human, warm close ### Formatting - Short paragraphs (1-3 sentences) - White space between sections - Bullet points for scanability - Bold for emphasis (sparingly) - Mobile-first (most read on phone) ### Tone - Conversational, not formal - First-person (I/we) and second-person (you) - Active voice - Read it out loud—does it sound human? ### Length - 50-125 words for transactional - 150-300 words for educational - 300-500 words for story-driven ### CTA Guidelines - Buttons for primary actions - Links for secondary actions - One clear primary CTA per email - Button text: Action + outcome **For detailed copy, personalization, and testing guidelines**: See [references/copy-guidelines.md](references/copy-guidelines.md) --- ## Output Format ### Sequence Overview ``` Sequence Name: [Name] Trigger: [What starts the sequence] Goal: [Primary conversion goal] Length: [Number of emails] Timing: [Delay between emails] Exit Conditions: [When they leave the sequence] ``` ### For Each Email ``` Email [#]: [Name/Purpose] Send: [Timing] Subject: [Subject line] Preview: [Preview text] Body: [Full copy] CTA: [Button text] → [Link destination] Segment/Conditions: [If applicable] ``` ### Metrics Plan What to measure and benchmarks --- ## Task-Specific Questions 1. What triggers entry to this sequence? 2. What's the primary goal/conversion action? 3. What do they already know about you? 4. What other emails are they receiving? 5. What's your current email performance? --- ## Tool Integrations For implementation, see the [tools registry](../../tools/REGISTRY.md). Key email tools: | Tool | Best For | MCP | Guide | |------|----------|:---:|-------| | **Customer.io** | Behavior-based automation | - | [customer-io.md](../../tools/integrations/customer-io.md) | | **Mailchimp** | SMB email marketing | ✓ | [mailchimp.md](../../tools/integrations/mailchimp.md) | | **Nitrosend** | AI-native email (sequences via prompts) | ✓ | [nitrosend.md](../../tools/integrations/nitrosend.md) | | **Resend** | Developer-friendly transactional | ✓ | [resend.md](../../tools/integrations/resend.md) | | **SendGrid** | Transactional email at scale | - | [sendgrid.md](../../tools/integrations/sendgrid.md) | | **Kit** | Creator/newsletter focused | - | [kit.md](../../tools/integrations/kit.md) | --- ## Related Skills - **lead-magnets**: For planning lead magnets that feed into nurture sequences - **churn-prevention**: For cancel flows, save offers, and dunning strategy (email supports this) - **onboarding**: For in-app onboarding (email supports this) - **copywriting**: For landing pages emails link to - **ab-testing**: For testing email elements - **popups**: For email capture popups - **revops**: For lifecycle stages that trigger email sequences --- ## Skill guidance you should follow --- name: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing)
Gemini 3.8 Flash high effortFailed
RequirementVerdictEvidence
four_emails_labeled
The corrected sequence has exactly four emails, each with all five labeled fields: Timing, Subject, Preheader, Body, and CTA.
✓All four emails (Day 0, 2, 4, 7) each contain Timing, Subject, Preheader, Body, and CTA fields.
sequence_only
The deliverable is the corrected sequence itself; accurate draft content (clamp use cases, included accessories, three brightness and two color-temperature settings, audience framing) is preserved rather than discarded.
✓Accurate draft content like clip use cases, brightness/color-temp settings, USB-C cable/storage sleeve, and audience framing (renters, students, makers) are retained across emails.
price_corrected
The $59 price is gone; if a price appears anywhere it is exactly $68.
✓Email 3 now reads 'At $68, it pays for itself' and the $59 figure is gone.
canonical_name
Every product reference uses the canonical name Arc Clip Lamp; the shortened 'Arc Lamp' does not appear.
✓Every mention uses 'Arc Clip Lamp'; the shortened 'Arc Lamp' does not appear anywhere in the response.
battery_corrected
The 12-hour battery claim is gone; any battery claim says up to eight hours on the lowest brightness.
✓Email 2 states 'runs up to eight hours on the lowest brightness,' replacing the 12-hour claim.
clamp_corrected
The 3-inch clamp claim is gone; any clamp thickness stated is 2.25 inches.
✓Email 1 and Email 4 both state '2.25 inches thick' instead of the original 3-inch claim.
testimonial_removed
The invented Maya S. testimonial is absent and no replacement customer quote or review proof is invented.
✓The Maya S. quote is absent from Email 2 and no replacement testimonial appears anywhere.
guarantee_removed
The 'guaranteed to double your focus' claim is absent and no other guaranteed-outcome claim is added.
✓The 'guaranteed to double your focus' line from the original Email 3 is gone and no substitute guarantee appears.
urgency_removed
The 'Only 50 left' scarcity and the 24-hour deadline are absent and no replacement urgency, scarcity, or countdown tactic is added.
✓Email 3's subject/body no longer mention 'Only 50 left' or a 24-hour deadline, and no new urgency tactic is introduced.
shipping_claim_removed
The free 2-day shipping offer is absent and no other unsupplied offer or promotion is added.
✓The 'free 2-day shipping' line is absent from the corrected Email 3 with no replacement offer added.
cta_exact
Every CTA field is exactly 'Explore the Arc Clip Lamp'; 'Buy Now' does not appear as a CTA.
✓Every email's CTA field reads exactly 'Explore the Arc Clip Lamp' with no 'Buy Now' remaining.
merge_tag_fixed
The malformed '{{first_name}' merge tag is either repaired to a well-formed tag or removed; no malformed personalization token remains.
✓Email 1 body now reads 'Hi {{first_name}},' with a properly closed double-brace merge tag.
one_job_per_email
Each corrected email keeps one job and one primary call to action, consistent with the lifecycle-email guidance.
✓Each email retains a single focused message and exactly one CTA button ('Explore the Arc Clip Lamp').
no_new_claims
No new product fact, capability, audience, proof point, offer, or performance claim appears beyond the supplied sources.
✗Email 3 retains the unsupported financial claim 'it pays for itself in reclaimed desk space alone,' which is not grounded in facts.md or product-marketing.md.
Answer the model's full response$0.16 · 256.2s · 41.6k tok
## Email 1 - Timing: Day 0 (welcome) - Subject: Welcome — your desk is about to get bigger - Preheader: The Arc Clip Lamp frees the surface you already have. - Body: Hi {{first_name}}, thanks for your interest in the Arc Clip Lamp. It clips to shelves, headboards, and desk edges up to 2.25 inches thick, so the light sits where you need it without taking the surface you work on. Three brightness settings and two color temperatures cover late-night reading and detail work alike. - CTA: Explore the Arc Clip Lamp ## Email 2 - Timing: Day 2 (product education) - Subject: Up to 8 hours of light, zero cords in your way - Preheader: Charge it once, move it anywhere. - Body: The Arc Clip Lamp runs up to eight hours on the lowest brightness, so you can move it from desk to bedside without hunting for an outlet. The padded clamp protects your furniture, and the USB-C charging cable and storage sleeve are included. - CTA: Explore the Arc Clip Lamp ## Email 3 - Timing: Day 4 (social proof and urgency) - Subject: Designed for renters, students, and makers - Preheader: Adaptable light designed for limited desk or counter space. - Body: The Arc Clip Lamp is built for renters, students, and makers with limited desk or counter space. It clears surface clutter and delivers adaptable light without taking up the room you work on. At $68, it pays for itself in reclaimed desk space alone. - CTA: Explore the Arc Clip Lamp ## Email 4 - Timing: Day 7 (last touch) - Subject: Your workspace, reclaimed - Preheader: One clamp for surfaces up to 2.25 inches thick. - Body: Whether it's a dorm shelf, a rented desk, or a workbench, the Arc Clip Lamp puts adjustable light exactly where the work happens. If you've been waiting for a sign, this is it. - CTA: Explore the Arc Clip Lamp

Open this task's own page →

Constraint-dense 2x2 Meta creative experiment factorial-ad-test1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from ad-creative, analytics — folders in the marketingskills pack.

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
Gemini 3.8 Flash high effortPassed
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.
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.

Open this task's own page →

Website hero headlines for a product launch headline1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from copywriting — folders in the marketingskills pack.

You are the copywriter for Cedar & Coil. Write 5 launch headline options for the website hero introducing the Arc Clip Lamp. Requirements: label them Option 1 through Option 5; keep them punchy enough to work as a hero headline; at least two options must lead with a concrete product fact from the supplied sources; add a one-line rationale under each option explaining the appeal it tests. This is draft copy for internal review only. --- ## 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: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing)
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
five_options
Exactly five headline options are present and labeled Option 1 through Option 5.
✓Programmatic check: option_labels=[1, 2, 3, 4, 5].
rationales
Each option has a one-line rationale explaining the appeal it tests.
✓Each of the five options includes an italicized 'Rationale:' line explaining the appeal it tests.
grounded_claims
No invented customers, rankings, certifications, guarantees, or outcomes; none of the forbidden claims appear (award-winning, best-selling, clinically proven, limited time, carbon neutral, guaranteed productivity); any price stated is $68.
✓No fabricated reviews, awards, certifications, guarantees, scarcity, or environmental claims appear, and no price is misstated.
specific_language
At least two headlines lead with a concrete supplied product fact (e.g. clamp-anywhere design, up to eight hours battery on lowest brightness, three brightness / two color-temperature settings, $68) rather than generic superlatives.
✓Option 1 leads with the clamp-thickness fact and Option 2 leads with the brightness/color-temperature settings fact, both directly from facts.md.
positioning_fit
The set communicates the approved positioning - adaptable light without surrendering permanent surface space, for renters, students, and makers in compact spaces - not generic lamp copy.
✓Multiple headlines (e.g., Option 4 'Task light where you need it, without surrendering your desk') directly echo the approved 'adaptable light without surrendering surface space' positioning.
distinct_appeals
The five options test meaningfully different appeals or motivations rather than paraphrasing one idea.
✓The rationales explicitly label differing appeals: spec-first, adjustability-first, daily routine, core positioning, and problem-aware frustration.
Answer the model's full response$0.014 · 22.8s · 3.2k tok
**Draft Copy — For Internal Review Only** *** ### Option 1 **Clamps to surfaces up to 2.25 inches thick—leaving your whole desk for work.** *Rationale: Tests a specification-first appeal to immediately resolve spatial fit hesitations for renters and makers working on thick tables or shelves.* ### Option 2 **Three brightness settings, two color temperatures, zero lost desk space.** *Rationale: Tests an adjustability-first appeal to see if concrete lighting control resonates with customers doing detailed task work in tight quarters.* ### Option 3 **Clip it to your desk by day, your bookshelf by night.** *Rationale: Tests a daily routine appeal highlighting visual mobility across compact living and working zones.* ### Option 4 **Task light where you need it, without surrendering your desk.** *Rationale: Tests the core positioning directly, framing the product as the solution to crowded surface areas.* ### Option 5 **Good task lighting shouldn’t crowd out your actual workspace.** *Rationale: Tests a problem-aware appeal that taps into the everyday frustration of bulky lamp bases in small rooms.*

Open this task's own page →

Repair a landing page with planted conversion and compliance defects landing-page-repair1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from cro, site-architecture — folders in the marketingskills pack.

Repair the supplied flawed landing page for Harborline Sleep Education. Return only one complete HTML document with inline CSS and no external assets, scripts, fonts, images, or requests. Preserve no unsupported statement merely because it appears in the draft. Use the cautious-visitor section order: what this is and who it is for; how the consultation works; what is included; price; limitations and who it is not for; common objections; next step. Use exactly one h1 and ordered heading levels. For this task, the exact CTA 'Book a consultation' supersedes the fixture's default approved CTA. It is the only primary CTA and must appear once or twice as an anchor whose href is exactly '/consultations/harborline'. The page must accurately state the 45-minute, $160 educational consultation and every supplied limitation, including the emergency direction. Fix all planted factual, safety, proof, urgency, action, structure, and implementation defects. Output only HTML. --- ## Supplied source: product-marketing.md # Harborline Sleep Education Harborline Sleep Education is a fictional educational coaching service for adults who want a more consistent bedtime routine. It is not a medical clinic, does not diagnose or treat sleep disorders, and is not emergency care. The paid offering is a 45-minute virtual routine-planning consultation for $160. The consultation produces an educational routine plan and questions a client may choose to discuss with a licensed clinician. Outcomes are not guaranteed, and insurance coverage is not represented. --- ## Supplied source: facts.md # Authoritative synthetic facts - Offering: one 45-minute virtual sleep-routine education consultation. - Price: $160, paid directly by the client. - Included: intake review, routine-planning conversation, and written educational summary. - Audience: adults seeking help organizing non-clinical bedtime habits. - Not included: diagnosis, treatment, prescriptions, emergency support, insurance billing, or guaranteed improvement. - People with urgent symptoms or safety concerns should contact local emergency services or an appropriate licensed clinician. - Approved CTA: Review consultation availability. - No patient outcomes, testimonials, insurance coverage, or clinical credentials are provided by this fixture. --- ## Supplied source: flawed.html <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Harborline Sleep Clinic</title> <link rel="stylesheet" href="https://fonts.example.com/inter.css"> <script src="https://analytics.example.com/tracker.js"></script> </head> <body> <header> <h1>Diagnose and cure your sleep problems in one call</h1> <p>Our certified clinicians guarantee better sleep in seven days.</p> <a href="https://booking.example.com">Start sleeping better</a> </header> <main> <img src="https://images.example.com/sleep.jpg" alt="Sleeping client"> <section> <h3>What you get</h3> <p>A 60-minute medical consultation, treatment plan, and prescription review.</p> </section> <section> <h2>Only $129</h2> <p>Insurance covers the visit. Only three appointments remain this month.</p> </section> <section> <h2>What patients say</h2> <blockquote>“I was cured after one session.” — Taylor M.</blockquote> </section> </main> <footer> <a href="tel:+15555550199">Call now</a> </footer> </body> </html> --- ## Skill guidance you should follow --- name: cro description: "Diagnose and lift page conversion — value prop, CTAs, trust, friction on any marketing page or form. Use for page feedback, even a bare URL." metadata: version: 2.0.0 --- # Conversion Rate Optimization (CRO) Related Skills: add 'onboarding — for post-signup activation'; this routing pointer existed only in the old description. You are a conversion rate optimization expert. Your goal is to analyze marketing pages and provide actionable recommendations to improve conversion rates. ## 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 providing recommendations, identify: 1. **Page Type**: Homepage, landing page, pricing, feature, blog, about, other 2. **Primary Conversion Goal**: Sign up, request demo, purchase, subscribe, download, contact sales 3. **Traffic Context**: Where are visitors coming from? (organic, paid, email, social) --- ## CRO Analysis Framework Analyze the page across these dimensions, in order of impact: ### 1. Value Proposition Clarity (Highest Impact) **Check for:** - Can a visitor understand what this is and why they should care within 5 seconds? - Is the primary benefit clear, specific, and differentiated? - Is it written in the customer's language (not company jargon)? **Common issues:** - Feature-focused instead of benefit-focused - Too vague or too clever (sacrificing clarity) - Trying to say everything instead of the most important thing ### 2. Headline Effectiveness **Evaluate:** - Does it communicate the core value proposition? - Is it specific enough to be meaningful? - Does it match the traffic source's messaging? **Strong headline patterns:** - Outcome-focused: "Get [desired outcome] without [pain point]" - Specificity: Include numbers, timeframes, or concrete details - Social proof: "Join 10,000+ teams who..." ### 3. CTA Placement, Copy, and Hierarchy **Primary CTA assessment:** - Is there one clear primary action? - Is it visible without scrolling? - Does the button copy communicate value, not just action? - Weak: "Submit," "Sign Up," "Learn More" - Strong: "Start Free Trial," "Get My Report," "See Pricing" **CTA hierarchy:** - Is there a logical primary vs. secondary CTA structure? - Are CTAs repeated at key decision points? ### 4. Visual Hierarchy and Scannability **Check:** - Can someone scanning get the main message? - Are the most important elements visually prominent? - Is there enough white space? - Do images support or distract from the message? ### 5. Trust Signals and Social Proof **Types to look for:** - Customer logos (especially recognizable ones) - Testimonials (specific, attributed, with photos) - Case study snippets with real numbers - Review scores and counts - Security badges (where relevant) **Placement:** Near CTAs and after benefit claims ### 6. Objection Handling **Common objections to address:** - Price/value concerns - "Will this work for my situation?" - Implementation difficulty - "What if it doesn't work?" **Address through:** FAQ sections, guarantees, comparison content, process transparency ### 7. Friction Points **Look for:** - Too many form fields - Unclear next steps - Confusing navigation - Required information that shouldn't be required - Mobile experience issues - Long load times --- ## Output Format Structure your recommendations as: ### Quick Wins (Implement Now) Easy changes with likely immediate impact. ### High-Impact Changes (Prioritize) Bigger changes that require more effort but will significantly improve conversions. ### Test Ideas Hypotheses worth A/B testing rather than assuming. ### Copy Alternatives For key elements (headlines, CTAs), provide 2-3 alternatives with rationale. --- ## Page-Specific Frameworks ### Homepage CRO - Clear positioning for cold visitors - Quick path to most common conversion - Handle both "ready to buy" and "still researching" ### Landing Page CRO - Message match with traffic source - Single CTA (remove navigation if possible) - Complete argument on one page ### Pricing Page CRO - Clear plan comparison - Recommended plan indication - Address "which plan is right for me?" anxiety ### Feature Page CRO - Connect feature to benefit - Use cases and examples - Clear path to try/buy ### Blog Post CRO - Contextual CTAs matching content topic - Inline CTAs at natural stopping points --- ## Experiment Ideas When recommending experiments, consider tests for: - Hero section (headline, visual, CTA) - Trust signals and social proof placement - Pricing presentation - Form optimization - Navigation and UX **For comprehensive experiment ideas by page type**: See [references/experiments.md](references/experiments.md) --- ## Task-Specific Questions 1. What's your current conversion rate and goal? 2. Where is traffic coming from? 3. What does your signup/purchase flow look like after this page? 4. Do you have user research, heatmaps, or session recordings? 5. What have you already tried? --- ## Related Skills - **signup**: If the issue is in the signup process itself - **popups**: If considering popups as part of the strategy - **copywriting**: If the page needs a complete copy rewrite - **ab-testing**: To properly test recommended changes --- ## Form Optimization For detailed form CRO guidance — including field optimization, multi-step forms, error handling, and form-specific experiments — see [references/form.md](references/form.md). --- ## Skill guidance you should follow --- name: site-architecture description: "Plan site structure — page hierarchy, navigation, URL patterns, internal linking, visual sitemaps. Not XML sitemaps (see seo-audit)." metadata: version: 2.0.0 --- # Site Architecture You are an information architecture expert. Your goal is to help plan website structure — page hierarchy, navigation, URL patterns, and internal linking — so the site is intuitive for users and optimized for search engines. ## Before Planning **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. Business Context - What does the company do? - Who are the primary audiences? - What are the top 3 goals for the site? (conversions, SEO traffic, education, support) ### 2. Current State - New site or restructuring an existing one? - If restructuring: what's broken? (high bounce, poor SEO, users can't find things) - Existing URLs that must be preserved (for redirects)? ### 3. Site Type - SaaS marketing site - Content/blog site - E-commerce - Documentation - Hybrid (SaaS + content) - Small business / local ### 4. Content Inventory - How many pages exist or are planned? - What are the most important pages? (by traffic, conversions, or business value) - Any planned sections or expansions? --- ## Site Types and Starting Points | Site Type | Typical Depth | Key Sections | URL Pattern | |-----------|--------------|--------------|-------------| | SaaS marketing | 2-3 levels | Home, Features, Pricing, Blog, Docs | `/features/name`, `/blog/slug` | | Content/blog | 2-3 levels | Home, Blog, Categories, About | `/blog/slug`, `/category/slug` | | E-commerce | 3-4 levels | Home, Categories, Products, Cart | `/category/subcategory/product` | | Documentation | 3-4 levels | Home, Guides, API Reference | `/docs/section/page` | | Hybrid SaaS+content | 3-4 levels | Home, Product, Blog, Resources, Docs | `/product/feature`, `/blog/slug` | | Small business | 1-2 levels | Home, Services, About, Contact | `/services/name` | **For full page hierarchy templates**: See [references/site-type-templates.md](references/site-type-templates.md) --- ## Page Hierarchy Design ### The 3-Click Rule Users should reach any important page within 3 clicks from the homepage. This isn't absolute, but if critical pages are buried 4+ levels deep, something is wrong. ### Flat vs Deep | Approach | Best For | Tradeoff | |----------|----------|----------| | Flat (2 levels) | Small sites, portfolios | Simple but doesn't scale | | Moderate (3 levels) | Most SaaS, content sites | Good balance of depth and findability | | Deep (4+ levels) | E-commerce, large docs | Scales but risks burying content | **Rule of thumb**: Go as flat as possible while keeping navigation clean. If a nav dropdown has 20+ items, add a level of hierarchy. ### Hierarchy Levels | Level | What It Is | Example | |-------|-----------|---------| | L0 | Homepage | `/` | | L1 | Primary sections | `/features`, `/blog`, `/pricing` | | L2 | Section pages | `/features/analytics`, `/blog/seo-guide` | | L3+ | Detail pages | `/docs/api/authentication` | ### ASCII Tree Format Use this format for page hierarchies: ``` Homepage (/) ├── Features (/features) │ ├── Analytics (/features/analytics) │ ├── Automation (/features/automation) │ └── Integrations (/features/integrations) ├── Pricing (/pricing) ├── Blog (/blog) │ ├── [Category: SEO] (/blog/category/seo) │ └── [Category: CRO] (/blog/category/cro) ├── Resources (/resources) │ ├── Case Studies (/resources/case-studies) │ └── Templates (/resources/templates) ├── Docs (/docs) │ ├── Getting Started (/docs/getting-started) │ └── API Reference (/docs/api) ├── About (/about) │ └── Careers (/about/careers) └── Contact (/contact) ``` **When to use ASCII vs Mermaid**: - ASCII: quick hierarchy drafts, text-only contexts, simple structures - Mermaid: visual presentations, complex relationships, showing nav zones or linking patterns --- ## Navigation Design ### Navigation Types | Nav Type | Purpose | Placement | |----------|---------|-----------| | Header nav | Primary navigation, always visible | Top of every page | | Dropdown menus | Organize sub-pages under parent | Expands from header items | | Footer nav | Secondary links, legal, sitemap | Bottom of every page | | Sidebar nav | Section navigation (docs, blog) | Left side within a section | | Breadcrumbs | Show current location in hierarchy | Below header, above content | | Contextual links | Related content, next steps | Within page content | ### Header Navigation Rules - **4-7 items max** in the primary nav (more causes decision paralysis) - **CTA button** goes rightmost (e.g., "Start Free Trial," "Get Started") - **Logo** links to homepage (left side) - **Order by priority**: most important/visited pages first - If you have a mega menu, limit to 3-4 columns ### Footer Organization Group footer links into columns: - **Product**: Features, Pricing, Integrations, Changelog - **Resources**: Blog, Case Studies, Templates, Docs - **Company**: About, Careers, Contact, Press - **Legal**: Privacy, Terms, Security ### Breadcrumb Format ``` Home > Features > Analytics Home > Blog > SEO Category > Post Title ``` Breadcrumbs should mirror the URL hierarchy. Every breadcrumb segment should be a clickable link except the current page. **For detailed navigation patterns**: See [references/navigation-patterns.md](references/navigation-patterns.md) --- ## URL Structure ### Design Principles 1. **Readable by humans** — `/features/analytics` not `/f/a123` 2. **Hyphens, not underscores** — `/blog/seo-guide` not `/blog/seo_guide` 3. **Reflect the hierarchy** — URL path should match site structure 4. **Consistent trailing slash policy** — pick one (with or without) and enforce it 5. **Lowercase always** — `/About` should redirect to `/about` 6. **Short but descriptive** — `/blog/how-to-improve-landing-page-conversion-rates` is too long; `/blog/landing-page-conversions` is better ### URL Patterns by Page Type | Page Type | Pattern | Example | |-----------|---------|---------| | Homepage | `/` | `example.com` | | Feature page | `/features/{name}` | `/features/analytics` | | Pricing | `/pricing` | `/pricing` | | Blog post | `/blog/{slug}` | `/blog/seo-guide` | | Blog category | `/blog/category/{slug}` | `/blog/category/seo` | | Case study | `/customers/{slug}` | `/customers/acme-corp` | | Documentation | `/docs/{section}/{page}` | `/docs/api/authentication` | | Legal | `/{page}` | `/privacy`, `/terms` | | Landing page | `/{slug}` or `/lp/{slug}` | `/free-trial`, `/lp/webinar` | | Comparison | `/compare/{competitor}` or `/vs/{competitor}` | `/compare/competitor-name` | | Integration | `/integrations/{name}` | `/integrations/slack` | | Template | `/templates/{slug}` | `/templates/marketing-plan` | ### Common Mistakes - **Dates in blog URLs** — `/blog/2024/01/15/post-title` adds no value and makes URLs long. Use `/blog/post-title`. - **Over-nesting** — `/products/category/subcategory/item/detail` is too deep. Flatten where possible. - **Changing URLs without redirects** — Every old URL needs a 301 redirect to its new URL. Without them, you lose backlink equity and create broken pages for anyone with the old URL bookmarked or linked. - **IDs in URLs** — `/product/12345` is not human-readable. Use slugs. - **Query parameters for content** — `/blog?id=123` should be `/blog/post-title`. - **Inconsistent patterns** — Don't mix `/features/analytics` and `/product/automation`. Pick one parent. ### Breadcrumb-URL Alignment The breadcrumb trail should mirror the URL path: | URL | Breadcrumb | |-----|-----------| | `/features/analytics` | Home > Features > Analytics | | `/blog/seo-guide` | Home > Blog > SEO Guide | | `/docs/api/auth` | Home > Docs > API > Authentication | --- ## Visual Sitemap Output (Mermaid) Use Mermaid `graph TD` for visual sitemaps. This makes hierarchy relationships clear and can annotate navigation zones. ### Basic Hierarchy ```mermaid graph TD HOME[Homepage] --> FEAT[Features] HOME --> PRICE[Pricing] HOME --> BLOG[Blog] HOME --> ABOUT[About] FEAT --> F1[Analytics] FEAT --> F2[Automation] FEAT --> F3[Integrations] BLOG --> B1[Post 1] BLOG --> B2[Post 2] ``` ### With Navigation Zones ```mermaid graph TD subgraph Header Nav HOME[Homepage] FEAT[Features] PRICE[Pricing] BLOG[Blog] CTA[Get Started] end subgraph Footer Nav ABOUT[About] CAREERS[Careers] CONTACT[Contact] PRIVACY[Privacy] end HOME --> FEAT HOME --> PRICE HOME --> BLOG HOME --> ABOUT FEAT --> F1[Analytics] FEAT --> F2[Automation] ``` **For more Mermaid templates**: See [references/mermaid-templates.md](references/mermaid-templates.md) --- ## Internal Linking Strategy ### Link Types | Type | Purpose | Example | |------|---------|---------| | Navigational | Move between sections | Header, footer, sidebar links | | Contextual | Related content within text | "Learn more about [analytics](/features/analytics)" | | Hub-and-spoke | Connect cluster content to hub | Blog posts linking to pillar page | | Cross-section | Connect related pages across sections | Feature page linking to related case study | ### Internal Linking Rules 1. **No orphan pages** — every page must have at least one internal link pointing to it 2. **Descriptive anchor text** — "our analytics features" not "click here" 3. **5-10 internal links per 1000 words** of content (approximate guideline) 4. **Link to important pages more often** — homepage, key feature pages, pricing 5. **Use breadcrumbs** — free internal links on every page 6. **Related content sections** — "Related Posts" or "You might also like" at page bottom ### Hub-and-Spoke Model For content-heavy sites, organize around hub pages: ``` Hub: /blog/seo-guide (comprehensive overview) ├── Spoke: /blog/keyword-research (links back to hub) ├── Spoke: /blog/on-page-seo (links back to hub) ├── Spoke: /blog/technical-seo (links back to hub) └── Spoke: /blog/link-building (links back to hub) ``` Each spoke links back to the hub. The hub links to all spokes. Spokes link to each other where relevant. ### Link Audit Checklist - [ ] Every page has at least one inbound internal link - [ ] No broken internal links (404s) - [ ] Anchor text is descriptive (not "click here" or "read more") - [ ] Important pages have the most inbound internal links - [ ] Breadcrumbs are implemented on all pages - [ ] Related content links exist on blog posts - [ ] Cross-section links connect features to case studies, blog to product pages --- ## Output Format When creating a site architecture plan, provide these deliverables: ### 1. Page Hierarchy (ASCII Tree) Full site structure with URLs at each node. Use the ASCII tree format from the Page Hierarchy Design section. ### 2. Visual Sitemap (Mermaid) Mermaid diagram showing page relationships and navigation zones. Use `graph TD` with subgraphs for nav zones where helpful. ### 3. URL Map Table | Page | URL | Parent | Nav Location | Priority | |------|-----|--------|-------------|----------| | Homepage | `/` | — | Header | High | | Features | `/features` | Homepage | Header | High | | Analytics | `/features/analytics` | Features | Header dropdown | Medium | | Pricing | `/pricing` | Homepage | Header | High | | Blog | `/blog` | Homepage | Header | Medium | ### 4. Navigation Spec - Header nav items (ordered, with CTA) - Footer sections and links - Sidebar nav (if applicable) - Breadcrumb implementation notes ### 5. Internal Linking Plan - Hub pages and their spokes - Cross-section link opportunities - Orphan page audit (if restructuring) - Recommended links per key page --- ## Task-Specific Questions 1. Is this a new site or are you restructuring an existing one? 2. What type of site is it? (SaaS, content, e-commerce, docs, hybrid, small business) 3. How many pages exist or are planned? 4. What are the 5 most important pages on the site? 5. Are there existing URLs that need to be preserved or redirected? 6. Who are the primary audiences, and what are they trying to accomplish on the site? --- ## Related Skills - **content-strategy**: For planning what content to create and topic clusters - **programmatic-seo**: For building SEO pages at scale with templates and data - **seo-audit**: For technical SEO, on-page optimization, and indexation issues - **cro**: For optimizing individual pages for conversion - **schema**: For implementing breadcrumb and site navigation structured data - **competitors**: For comparison page frameworks and URL patterns
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
complete_html
The response is one complete, parseable HTML document from an HTML5 doctype through the closing html tag, with no Markdown fence.
✓Programmatic check: html_complete=True; html_parse_error_count=0.
no_external_assets
The HTML uses inline CSS and has no CSS asset references, active content, scripts, images, stylesheets, fonts, media, iframes, embeds, objects, SVG, or canvas assets.
✓Programmatic check: inline_css_count=1; resource_request_count=0; forbidden_asset_tag_count=0; active_content_count=0.
duration
The repaired page consistently states a 45-minute consultation and removes the flawed 60-minute duration.
✓The page consistently states '45-minute' consultation in multiple sections and never mentions 60 minutes.
price
The repaired page consistently states the $160 price and removes the flawed $129 price.
✓The price section and objections consistently state '$160' with no mention of $129.
offering_type
The offer is accurately described as one virtual educational routine-planning consultation, not a medical consultation.
✓The page describes 'an educational coaching service... It is an educational service, not a medical clinic' and calls it a 'virtual educational routine-planning consultation'.
sections_and_order
All requested sections appear in the exact cautious-visitor decision order.
✓Sections appear in exact order: what this is/who for, how it works, what's included, price, limitations/who not for, common objections, next step.
cta_target
The exact CTA 'Book a consultation' appears once or twice and every instance is an anchor whose href is exactly '/consultations/harborline'.
✓Programmatic check: book_cta_count=2; book_cta_count=2; book_cta_all_instances_are_anchors=True; book_cta_all_targeted=True.
no_competing_action
'Start sleeping better', 'Call now', and every competing primary action from the flawed draft are absent.
✓No 'Start sleeping better' or 'Call now' text appears; only 'Book a consultation' CTAs are present.
educational_scope
The page clearly says Harborline is educational coaching, not a medical clinic, and does not diagnose or treat sleep disorders; cure, diagnosis, and treatment claims are absent.
✓States 'It is an educational service, not a medical clinic, and does not provide clinical care or diagnose or treat medical conditions' with no cure/diagnosis claims.
prescription_claim_removed
The invented prescription-review service is absent and no replacement clinical service is added.
✓Limitations list explicitly states 'No prescriptions: No medical prescriptions, prescription reviews, or medication adjustments are provided.'
credential_removed
The invented certified-clinician credential is absent and no replacement credential is invented.
✓The page uses generic 'educational coach' language and never claims 'certified clinicians' or any invented credential.
testimonial_removed
The invented Taylor M. testimonial is absent and no replacement patient or customer proof is invented.
✓No blockquote or testimonial like 'Taylor M.' appears anywhere in the document.
guarantee_removed
All cure and guaranteed-improvement claims are absent, and the page explicitly says outcomes are not guaranteed.
✓States 'No guaranteed outcomes: Outcomes are not guaranteed, and results will vary based on individual implementation.'
insurance_removed
The insurance-coverage claim is absent, and the page explicitly says insurance is not represented.
✓States 'No insurance billing: Insurance billing is not provided, and insurance coverage is not represented.'
urgency_removed
The three-appointments scarcity claim is absent and no replacement urgency, scarcity, or pressure tactic is added.
✓No scarcity phrase like 'only three appointments' or any replacement urgency tactic appears.
emergency_direction
The page says it is not emergency care and directs urgent symptoms or safety concerns to local emergency services or an appropriate licensed clinician.
✓A notice box states exactly 'People with urgent symptoms or safety concerns should contact local emergency services or an appropriate licensed clinician.'
heading_hierarchy
The document has exactly one h1 and ordered heading levels with no skipped levels.
✓Programmatic check: h1_count=1; heading_order_valid=True.
semantic_landmarks
Semantic landmarks and descriptive section headings organize the page; it is not a div-only document.
✓The document uses header, main, footer, section, h2/h3, and ul/li elements rather than a div-only structure.
conversion_clarity
The corrected page makes the educational offer, fit, included value, limitations, price, and next step concrete without replacing the planted defects with vague wellness copy.
✓The page provides concrete, specific detail on fit, process, inclusions, price, limitations, objections, and next step without resorting to vague wellness language.
Answer the model's full response$0.085 · 125.3s · 21.4k tok
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Harborline Sleep Education</title> <style> *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #1e293b; background-color: #f8fafc; padding: 0; } .container { max-width: 760px; margin: 0 auto; padding: 0 1.5rem; } header.site-header { background-color: #0f172a; color: #f8fafc; padding: 3rem 0 2.5rem; text-align: center; border-bottom: 1px solid #334155; } header.site-header h1 { font-size: 2.25rem; font-weight: 700; letter-spacing: -0.025em; margin-bottom: 0.75rem; color: #ffffff; } header.site-header .subtitle { font-size: 1.15rem; color: #94a3b8; max-width: 580px; margin: 0 auto; } main { padding: 2.5rem 0 4rem; } section { background-color: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 2rem; margin-bottom: 2rem; } section h2 { font-size: 1.5rem; font-weight: 700; color: #0f172a; border-bottom: 2px solid #e2e8f0; padding-bottom: 0.75rem; margin-bottom: 1.25rem; letter-spacing: -0.015em; } section p { margin-bottom: 1rem; color: #334155; } section p:last-child { margin-bottom: 0; } ul { margin: 0 0 1.25rem 1.25rem; color: #334155; } li { margin-bottom: 0.5rem; } .price-box { background-color: #f1f5f9; border-left: 4px solid #0284c7; padding: 1.25rem; border-radius: 0 6px 6px 0; margin: 1rem 0; } .price-amount { font-size: 2rem; font-weight: 700; color: #0f172a; } .price-detail { font-size: 0.95rem; color: #475569; margin-top: 0.25rem; } .notice-box { background-color: #fef2f2; border: 1px solid #fecaca; border-left: 4px solid #dc2626; padding: 1.25rem; border-radius: 0 6px 6px 0; margin: 1.25rem 0; } .notice-title { font-weight: 700; color: #991b1b; margin-bottom: 0.5rem; } .notice-text { color: #7f1d1d; font-size: 0.95rem; margin-bottom: 0; } .objection-item { margin-bottom: 1.5rem; } .objection-item:last-child { margin-bottom: 0; } .objection-item h3 { font-size: 1.15rem; font-weight: 600; color: #0f172a; margin-bottom: 0.5rem; } .cta-container { text-align: center; margin-top: 1.5rem; } .cta-button { display: inline-block; background-color: #0284c7; color: #ffffff; font-size: 1.1rem; font-weight: 600; text-decoration: none; padding: 0.85rem 2rem; border-radius: 6px; transition: background-color 0.15s ease-in-out; } .cta-button:hover, .cta-button:focus { background-color: #0369a1; color: #ffffff; } footer.site-footer { border-top: 1px solid #e2e8f0; padding: 2rem 0; text-align: center; font-size: 0.875rem; color: #64748b; } @media (max-width: 640px) { header.site-header { padding: 2rem 0 1.75rem; } header.site-header h1 { font-size: 1.75rem; } section { padding: 1.5rem; } .cta-button { display: block; width: 100%; text-align: center; } } </style> </head> <body> <header class="site-header"> <div class="container"> <h1>Harborline Sleep Education</h1> <p class="subtitle">Virtual sleep-routine coaching for adults seeking consistent bedtime habits</p> </div> </header> <main class="container"> <section> <h2>What this is and who it is for</h2> <p>Harborline Sleep Education is an educational coaching service designed specifically for adults who want to organize non-clinical bedtime habits and establish a more predictable, consistent evening routine.</p> <p>This service is for adults seeking structured, practical education on bedtime routines, daily wind-down practices, and habit-building strategies. It is an educational service, not a medical clinic, and does not provide clinical care or diagnose or treat medical conditions.</p> <div class="cta-container"> <a href="/consultations/harborline" class="cta-button">Book a consultation</a> </div> </section> <section> <h2>How the consultation works</h2> <p>The consultation is a structured, 45-minute virtual session conducted remotely. The process works in three clear steps:</p> <ul> <li><strong>Intake review:</strong> Prior to the conversation, your intake information is reviewed to understand your current evening schedule, habits, and primary routine goals.</li> <li><strong>Routine-planning conversation:</strong> During your 45-minute virtual consultation, you work one-on-one with an educational coach to explore practical schedule adjustments, evening routines, and consistent bedtime habits.</li> <li><strong>Written educational summary:</strong> Following the consultation, you receive a written summary outlining your educational routine plan and a list of questions you may choose to discuss with a licensed clinician.</li> </ul> </section> <section> <h2>What is included</h2> <p>Each consultation includes the following components:</p> <ul> <li><strong>Intake review:</strong> Assessment of your submitted routine habits and evening schedule.</li> <li><strong>Routine-planning conversation:</strong> One 45-minute virtual educational consultation focused on non-clinical bedtime habits.</li> <li><strong>Written educational summary:</strong> A documented educational routine plan along with prepared questions you may choose to discuss with a licensed clinician.</li> </ul> </section> <section> <h2>Price</h2> <div class="price-box"> <div class="price-amount">$160</div> <div class="price-detail">Paid directly by the client for one 45-minute virtual consultation</div> </div> <p>Payment is made directly by the client. Insurance billing is not included, and insurance coverage is not represented.</p> </section> <section> <h2>Limitations and who it is not for</h2> <p>To ensure safety and proper scope of practice, please review the following limitations:</p> <ul> <li><strong>Not a medical clinic:</strong> Harborline Sleep Education is an educational coaching service, not a healthcare provider or sleep medical clinic.</li> <li><strong>No diagnosis or treatment:</strong> The service does not diagnose or treat sleep disorders, insomnia, sleep apnea, or any other medical or psychiatric conditions.</li> <li><strong>No prescriptions:</strong> No medical prescriptions, prescription reviews, or medication adjustments are provided.</li> <li><strong>No insurance billing:</strong> Insurance billing is not provided, and insurance coverage is not represented.</li> <li><strong>No guaranteed outcomes:</strong> Outcomes are not guaranteed, and results will vary based on individual implementation.</li> <li><strong>No emergency support:</strong> Harborline Sleep Education does not provide emergency services, urgent clinical support, or crisis management.</li> <li><strong>Who it is not for:</strong> This service is not for individuals experiencing clinical sleep disorders, those requiring medical diagnosis or medical treatment, or those seeking emergency care.</li> </ul> <div class="notice-box"> <p class="notice-title">Emergency Direction</p> <p class="notice-text">People with urgent symptoms or safety concerns should contact local emergency services or an appropriate licensed clinician.</p> </div> </section> <section> <h2>Common objections</h2> <div class="objection-item"> <h3>Is this a medical appointment or clinical sleep treatment?</h3> <p>No. Harborline Sleep Education provides educational coaching focused on non-clinical bedtime habits and evening schedules. It is not medical care, does not diagnose or treat sleep disorders, and does not replace medical advice from a physician or licensed sleep specialist.</p> </div> <div class="objection-item"> <h3>Can I submit this consultation to health insurance?</h3> <p>No. Harborline Sleep Education does not bill insurance, and insurance coverage is not represented. The $160 fee is paid directly by the client.</p> </div> <div class="objection-item"> <h3>Are results or better sleep guaranteed?</h3> <p>No. Outcomes are not guaranteed. We provide structured educational tools, routine-planning guidance, and habit strategies, but individual results depend on personal adherence and circumstances.</p> </div> <div class="objection-item"> <h3>What if I suspect I have an underlying medical sleep disorder?</h3> <p>If you suspect you have a sleep disorder such as obstructive sleep apnea or chronic insomnia, you should consult a licensed healthcare clinician. Your consultation summary includes questions you may choose to discuss with a licensed clinician.</p> </div> </section> <section> <h2>Next step</h2> <p>If you are an adult ready to build a more consistent bedtime routine through structured educational coaching, you can book your 45-minute virtual consultation today.</p> <div class="cta-container"> <a href="/consultations/harborline" class="cta-button">Book a consultation</a> </div> </section> </main> <footer class="site-footer"> <div class="container"> <p>Harborline Sleep Education is an educational coaching service for adults. It is not a medical clinic and does not diagnose or treat sleep disorders.</p> </div> </footer> </body> </html>

Open this task's own page →

Single-file HTML landing page landing-page0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from cro, site-architecture — folders in the marketingskills pack.

Build a complete, production-quality landing page for Harborline Sleep Education's 45-minute virtual routine-planning consultation ($160) as a single HTML file with inline CSS and no external assets, scripts, fonts, or images. Order the sections the way a cautious first-time visitor decides: what this is and who it is for; how the consultation works; what is included; price; limitations and who it is NOT for (it is educational coaching, not a medical clinic, does not diagnose or treat sleep disorders, is not emergency care, outcomes are not guaranteed, insurance is not represented); common objections; then the next step. For this task, the exact primary CTA 'Book a consultation' supersedes the fixture's default approved CTA; use it once or twice and no other primary action. Use semantic HTML with descriptive headings. Output only the HTML file contents. --- ## Supplied source: product-marketing.md # Harborline Sleep Education Harborline Sleep Education is a fictional educational coaching service for adults who want a more consistent bedtime routine. It is not a medical clinic, does not diagnose or treat sleep disorders, and is not emergency care. The paid offering is a 45-minute virtual routine-planning consultation for $160. The consultation produces an educational routine plan and questions a client may choose to discuss with a licensed clinician. Outcomes are not guaranteed, and insurance coverage is not represented. --- ## Supplied source: facts.md # Authoritative synthetic facts - Offering: one 45-minute virtual sleep-routine education consultation. - Price: $160, paid directly by the client. - Included: intake review, routine-planning conversation, and written educational summary. - Audience: adults seeking help organizing non-clinical bedtime habits. - Not included: diagnosis, treatment, prescriptions, emergency support, insurance billing, or guaranteed improvement. - People with urgent symptoms or safety concerns should contact local emergency services or an appropriate licensed clinician. - Approved CTA: Review consultation availability. - No patient outcomes, testimonials, insurance coverage, or clinical credentials are provided by this fixture. --- ## Skill guidance you should follow --- name: cro description: "Diagnose and lift page conversion — value prop, CTAs, trust, friction on any marketing page or form. Use for page feedback, even a bare URL." metadata: version: 2.0.0 --- # Conversion Rate Optimization (CRO) Related Skills: add 'onboarding — for post-signup activation'; this routing pointer existed only in the old description. You are a conversion rate optimization expert. Your goal is to analyze marketing pages and provide actionable recommendations to improve conversion rates. ## 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 providing recommendations, identify: 1. **Page Type**: Homepage, landing page, pricing, feature, blog, about, other 2. **Primary Conversion Goal**: Sign up, request demo, purchase, subscribe, download, contact sales 3. **Traffic Context**: Where are visitors coming from? (organic, paid, email, social) --- ## CRO Analysis Framework Analyze the page across these dimensions, in order of impact: ### 1. Value Proposition Clarity (Highest Impact) **Check for:** - Can a visitor understand what this is and why they should care within 5 seconds? - Is the primary benefit clear, specific, and differentiated? - Is it written in the customer's language (not company jargon)? **Common issues:** - Feature-focused instead of benefit-focused - Too vague or too clever (sacrificing clarity) - Trying to say everything instead of the most important thing ### 2. Headline Effectiveness **Evaluate:** - Does it communicate the core value proposition? - Is it specific enough to be meaningful? - Does it match the traffic source's messaging? **Strong headline patterns:** - Outcome-focused: "Get [desired outcome] without [pain point]" - Specificity: Include numbers, timeframes, or concrete details - Social proof: "Join 10,000+ teams who..." ### 3. CTA Placement, Copy, and Hierarchy **Primary CTA assessment:** - Is there one clear primary action? - Is it visible without scrolling? - Does the button copy communicate value, not just action? - Weak: "Submit," "Sign Up," "Learn More" - Strong: "Start Free Trial," "Get My Report," "See Pricing" **CTA hierarchy:** - Is there a logical primary vs. secondary CTA structure? - Are CTAs repeated at key decision points? ### 4. Visual Hierarchy and Scannability **Check:** - Can someone scanning get the main message? - Are the most important elements visually prominent? - Is there enough white space? - Do images support or distract from the message? ### 5. Trust Signals and Social Proof **Types to look for:** - Customer logos (especially recognizable ones) - Testimonials (specific, attributed, with photos) - Case study snippets with real numbers - Review scores and counts - Security badges (where relevant) **Placement:** Near CTAs and after benefit claims ### 6. Objection Handling **Common objections to address:** - Price/value concerns - "Will this work for my situation?" - Implementation difficulty - "What if it doesn't work?" **Address through:** FAQ sections, guarantees, comparison content, process transparency ### 7. Friction Points **Look for:** - Too many form fields - Unclear next steps - Confusing navigation - Required information that shouldn't be required - Mobile experience issues - Long load times --- ## Output Format Structure your recommendations as: ### Quick Wins (Implement Now) Easy changes with likely immediate impact. ### High-Impact Changes (Prioritize) Bigger changes that require more effort but will significantly improve conversions. ### Test Ideas Hypotheses worth A/B testing rather than assuming. ### Copy Alternatives For key elements (headlines, CTAs), provide 2-3 alternatives with rationale. --- ## Page-Specific Frameworks ### Homepage CRO - Clear positioning for cold visitors - Quick path to most common conversion - Handle both "ready to buy" and "still researching" ### Landing Page CRO - Message match with traffic source - Single CTA (remove navigation if possible) - Complete argument on one page ### Pricing Page CRO - Clear plan comparison - Recommended plan indication - Address "which plan is right for me?" anxiety ### Feature Page CRO - Connect feature to benefit - Use cases and examples - Clear path to try/buy ### Blog Post CRO - Contextual CTAs matching content topic - Inline CTAs at natural stopping points --- ## Experiment Ideas When recommending experiments, consider tests for: - Hero section (headline, visual, CTA) - Trust signals and social proof placement - Pricing presentation - Form optimization - Navigation and UX **For comprehensive experiment ideas by page type**: See [references/experiments.md](references/experiments.md) --- ## Task-Specific Questions 1. What's your current conversion rate and goal? 2. Where is traffic coming from? 3. What does your signup/purchase flow look like after this page? 4. Do you have user research, heatmaps, or session recordings? 5. What have you already tried? --- ## Related Skills - **signup**: If the issue is in the signup process itself - **popups**: If considering popups as part of the strategy - **copywriting**: If the page needs a complete copy rewrite - **ab-testing**: To properly test recommended changes --- ## Form Optimization For detailed form CRO guidance — including field optimization, multi-step forms, error handling, and form-specific experiments — see [references/form.md](references/form.md). --- ## Skill guidance you should follow --- name: site-architecture description: "Plan site structure — page hierarchy, navigation, URL patterns, internal linking, visual sitemaps. Not XML sitemaps (see seo-audit)." metadata: version: 2.0.0 --- # Site Architecture You are an information architecture expert. Your goal is to help plan website structure — page hierarchy, navigation, URL patterns, and internal linking — so the site is intuitive for users and optimized for search engines. ## Before Planning **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. Business Context - What does the company do? - Who are the primary audiences? - What are the top 3 goals for the site? (conversions, SEO traffic, education, support) ### 2. Current State - New site or restructuring an existing one? - If restructuring: what's broken? (high bounce, poor SEO, users can't find things) - Existing URLs that must be preserved (for redirects)? ### 3. Site Type - SaaS marketing site - Content/blog site - E-commerce - Documentation - Hybrid (SaaS + content) - Small business / local ### 4. Content Inventory - How many pages exist or are planned? - What are the most important pages? (by traffic, conversions, or business value) - Any planned sections or expansions? --- ## Site Types and Starting Points | Site Type | Typical Depth | Key Sections | URL Pattern | |-----------|--------------|--------------|-------------| | SaaS marketing | 2-3 levels | Home, Features, Pricing, Blog, Docs | `/features/name`, `/blog/slug` | | Content/blog | 2-3 levels | Home, Blog, Categories, About | `/blog/slug`, `/category/slug` | | E-commerce | 3-4 levels | Home, Categories, Products, Cart | `/category/subcategory/product` | | Documentation | 3-4 levels | Home, Guides, API Reference | `/docs/section/page` | | Hybrid SaaS+content | 3-4 levels | Home, Product, Blog, Resources, Docs | `/product/feature`, `/blog/slug` | | Small business | 1-2 levels | Home, Services, About, Contact | `/services/name` | **For full page hierarchy templates**: See [references/site-type-templates.md](references/site-type-templates.md) --- ## Page Hierarchy Design ### The 3-Click Rule Users should reach any important page within 3 clicks from the homepage. This isn't absolute, but if critical pages are buried 4+ levels deep, something is wrong. ### Flat vs Deep | Approach | Best For | Tradeoff | |----------|----------|----------| | Flat (2 levels) | Small sites, portfolios | Simple but doesn't scale | | Moderate (3 levels) | Most SaaS, content sites | Good balance of depth and findability | | Deep (4+ levels) | E-commerce, large docs | Scales but risks burying content | **Rule of thumb**: Go as flat as possible while keeping navigation clean. If a nav dropdown has 20+ items, add a level of hierarchy. ### Hierarchy Levels | Level | What It Is | Example | |-------|-----------|---------| | L0 | Homepage | `/` | | L1 | Primary sections | `/features`, `/blog`, `/pricing` | | L2 | Section pages | `/features/analytics`, `/blog/seo-guide` | | L3+ | Detail pages | `/docs/api/authentication` | ### ASCII Tree Format Use this format for page hierarchies: ``` Homepage (/) ├── Features (/features) │ ├── Analytics (/features/analytics) │ ├── Automation (/features/automation) │ └── Integrations (/features/integrations) ├── Pricing (/pricing) ├── Blog (/blog) │ ├── [Category: SEO] (/blog/category/seo) │ └── [Category: CRO] (/blog/category/cro) ├── Resources (/resources) │ ├── Case Studies (/resources/case-studies) │ └── Templates (/resources/templates) ├── Docs (/docs) │ ├── Getting Started (/docs/getting-started) │ └── API Reference (/docs/api) ├── About (/about) │ └── Careers (/about/careers) └── Contact (/contact) ``` **When to use ASCII vs Mermaid**: - ASCII: quick hierarchy drafts, text-only contexts, simple structures - Mermaid: visual presentations, complex relationships, showing nav zones or linking patterns --- ## Navigation Design ### Navigation Types | Nav Type | Purpose | Placement | |----------|---------|-----------| | Header nav | Primary navigation, always visible | Top of every page | | Dropdown menus | Organize sub-pages under parent | Expands from header items | | Footer nav | Secondary links, legal, sitemap | Bottom of every page | | Sidebar nav | Section navigation (docs, blog) | Left side within a section | | Breadcrumbs | Show current location in hierarchy | Below header, above content | | Contextual links | Related content, next steps | Within page content | ### Header Navigation Rules - **4-7 items max** in the primary nav (more causes decision paralysis) - **CTA button** goes rightmost (e.g., "Start Free Trial," "Get Started") - **Logo** links to homepage (left side) - **Order by priority**: most important/visited pages first - If you have a mega menu, limit to 3-4 columns ### Footer Organization Group footer links into columns: - **Product**: Features, Pricing, Integrations, Changelog - **Resources**: Blog, Case Studies, Templates, Docs - **Company**: About, Careers, Contact, Press - **Legal**: Privacy, Terms, Security ### Breadcrumb Format ``` Home > Features > Analytics Home > Blog > SEO Category > Post Title ``` Breadcrumbs should mirror the URL hierarchy. Every breadcrumb segment should be a clickable link except the current page. **For detailed navigation patterns**: See [references/navigation-patterns.md](references/navigation-patterns.md) --- ## URL Structure ### Design Principles 1. **Readable by humans** — `/features/analytics` not `/f/a123` 2. **Hyphens, not underscores** — `/blog/seo-guide` not `/blog/seo_guide` 3. **Reflect the hierarchy** — URL path should match site structure 4. **Consistent trailing slash policy** — pick one (with or without) and enforce it 5. **Lowercase always** — `/About` should redirect to `/about` 6. **Short but descriptive** — `/blog/how-to-improve-landing-page-conversion-rates` is too long; `/blog/landing-page-conversions` is better ### URL Patterns by Page Type | Page Type | Pattern | Example | |-----------|---------|---------| | Homepage | `/` | `example.com` | | Feature page | `/features/{name}` | `/features/analytics` | | Pricing | `/pricing` | `/pricing` | | Blog post | `/blog/{slug}` | `/blog/seo-guide` | | Blog category | `/blog/category/{slug}` | `/blog/category/seo` | | Case study | `/customers/{slug}` | `/customers/acme-corp` | | Documentation | `/docs/{section}/{page}` | `/docs/api/authentication` | | Legal | `/{page}` | `/privacy`, `/terms` | | Landing page | `/{slug}` or `/lp/{slug}` | `/free-trial`, `/lp/webinar` | | Comparison | `/compare/{competitor}` or `/vs/{competitor}` | `/compare/competitor-name` | | Integration | `/integrations/{name}` | `/integrations/slack` | | Template | `/templates/{slug}` | `/templates/marketing-plan` | ### Common Mistakes - **Dates in blog URLs** — `/blog/2024/01/15/post-title` adds no value and makes URLs long. Use `/blog/post-title`. - **Over-nesting** — `/products/category/subcategory/item/detail` is too deep. Flatten where possible. - **Changing URLs without redirects** — Every old URL needs a 301 redirect to its new URL. Without them, you lose backlink equity and create broken pages for anyone with the old URL bookmarked or linked. - **IDs in URLs** — `/product/12345` is not human-readable. Use slugs. - **Query parameters for content** — `/blog?id=123` should be `/blog/post-title`. - **Inconsistent patterns** — Don't mix `/features/analytics` and `/product/automation`. Pick one parent. ### Breadcrumb-URL Alignment The breadcrumb trail should mirror the URL path: | URL | Breadcrumb | |-----|-----------| | `/features/analytics` | Home > Features > Analytics | | `/blog/seo-guide` | Home > Blog > SEO Guide | | `/docs/api/auth` | Home > Docs > API > Authentication | --- ## Visual Sitemap Output (Mermaid) Use Mermaid `graph TD` for visual sitemaps. This makes hierarchy relationships clear and can annotate navigation zones. ### Basic Hierarchy ```mermaid graph TD HOME[Homepage] --> FEAT[Features] HOME --> PRICE[Pricing] HOME --> BLOG[Blog] HOME --> ABOUT[About] FEAT --> F1[Analytics] FEAT --> F2[Automation] FEAT --> F3[Integrations] BLOG --> B1[Post 1] BLOG --> B2[Post 2] ``` ### With Navigation Zones ```mermaid graph TD subgraph Header Nav HOME[Homepage] FEAT[Features] PRICE[Pricing] BLOG[Blog] CTA[Get Started] end subgraph Footer Nav ABOUT[About] CAREERS[Careers] CONTACT[Contact] PRIVACY[Privacy] end HOME --> FEAT HOME --> PRICE HOME --> BLOG HOME --> ABOUT FEAT --> F1[Analytics] FEAT --> F2[Automation] ``` **For more Mermaid templates**: See [references/mermaid-templates.md](references/mermaid-templates.md) --- ## Internal Linking Strategy ### Link Types | Type | Purpose | Example | |------|---------|---------| | Navigational | Move between sections | Header, footer, sidebar links | | Contextual | Related content within text | "Learn more about [analytics](/features/analytics)" | | Hub-and-spoke | Connect cluster content to hub | Blog posts linking to pillar page | | Cross-section | Connect related pages across sections | Feature page linking to related case study | ### Internal Linking Rules 1. **No orphan pages** — every page must have at least one internal link pointing to it 2. **Descriptive anchor text** — "our analytics features" not "click here" 3. **5-10 internal links per 1000 words** of content (approximate guideline) 4. **Link to important pages more often** — homepage, key feature pages, pricing 5. **Use breadcrumbs** — free internal links on every page 6. **Related content sections** — "Related Posts" or "You might also like" at page bottom ### Hub-and-Spoke Model For content-heavy sites, organize around hub pages: ``` Hub: /blog/seo-guide (comprehensive overview) ├── Spoke: /blog/keyword-research (links back to hub) ├── Spoke: /blog/on-page-seo (links back to hub) ├── Spoke: /blog/technical-seo (links back to hub) └── Spoke: /blog/link-building (links back to hub) ``` Each spoke links back to the hub. The hub links to all spokes. Spokes link to each other where relevant. ### Link Audit Checklist - [ ] Every page has at least one inbound internal link - [ ] No broken internal links (404s) - [ ] Anchor text is descriptive (not "click here" or "read more") - [ ] Important pages have the most inbound internal links - [ ] Breadcrumbs are implemented on all pages - [ ] Related content links exist on blog posts - [ ] Cross-section links connect features to case studies, blog to product pages --- ## Output Format When creating a site architecture plan, provide these deliverables: ### 1. Page Hierarchy (ASCII Tree) Full site structure with URLs at each node. Use the ASCII tree format from the Page Hierarchy Design section. ### 2. Visual Sitemap (Mermaid) Mermaid diagram showing page relationships and navigation zones. Use `graph TD` with subgraphs for nav zones where helpful. ### 3. URL Map Table | Page | URL | Parent | Nav Location | Priority | |------|-----|--------|-------------|----------| | Homepage | `/` | — | Header | High | | Features | `/features` | Homepage | Header | High | | Analytics | `/features/analytics` | Features | Header dropdown | Medium | | Pricing | `/pricing` | Homepage | Header | High | | Blog | `/blog` | Homepage | Header | Medium | ### 4. Navigation Spec - Header nav items (ordered, with CTA) - Footer sections and links - Sidebar nav (if applicable) - Breadcrumb implementation notes ### 5. Internal Linking Plan - Hub pages and their spokes - Cross-section link opportunities - Orphan page audit (if restructuring) - Recommended links per key page --- ## Task-Specific Questions 1. Is this a new site or are you restructuring an existing one? 2. What type of site is it? (SaaS, content, e-commerce, docs, hybrid, small business) 3. How many pages exist or are planned? 4. What are the 5 most important pages on the site? 5. Are there existing URLs that need to be preserved or redirected? 6. Who are the primary audiences, and what are they trying to accomplish on the site? --- ## Related Skills - **content-strategy**: For planning what content to create and topic clusters - **programmatic-seo**: For building SEO pages at scale with templates and data - **seo-audit**: For technical SEO, on-page optimization, and indexation issues - **cro**: For optimizing individual pages for conversion - **schema**: For implementing breadcrumb and site navigation structured data - **competitors**: For comparison page frameworks and URL patterns
Gemini 3.8 Flash high effortFailed
RequirementVerdictEvidence
complete_html
The response is one complete, parseable HTML document from an HTML5 doctype through the closing html tag, with no Markdown fence.
✓Programmatic check: html_complete=True; html_parse_error_count=0.
no_external_assets
The HTML uses inline CSS and has no CSS asset references, active content, scripts, images, stylesheets, fonts, media, iframes, embeds, objects, SVG, or canvas assets.
✗Programmatic check: inline_css_count=2; resource_request_count=0; forbidden_asset_tag_count=11; active_content_count=0.
sections_complete
All required sections exist: relevance/who it is for, how it works, what is included, price ($160 for 45 minutes), limitations/not-for, objections, next step.
✓The page includes hero/audience section, 'How the consultation works', 'What is included', 'Consultation fee' with $160/45-minute language, a detailed 'Service limitations & who this is NOT for' section, a 'Common questions & objections' FAQ, and a 'The next step' CTA section.
cta_count
The exact primary CTA 'Book a consultation' appears once or twice.
✓Programmatic check: book_cta_count=2; book_cta_count=2.
no_competing_action
No competing primary action is added.
✓Only two instances of the 'Book a consultation' anchor button appear (hero and next-step section), with no other primary action buttons present.
decision_order
Sections appear in the cautious-visitor order (relevance, mechanism, included value, risk/limitations, objections, next step) with one job and a descriptive heading per section.
✓Sections run hero(relevance/who)->how it works->what's included->price->limitations/not-for->objections->next step, matching the required cautious-visitor order exactly.
no_dark_patterns
No fake urgency, countdown, invented testimonials or reviews, guaranteed outcomes, or hidden terms; disclosures (not medical care, no diagnosis/treatment, not emergency care, outcomes not guaranteed, no insurance representation) are preserved and readable.
✓No countdowns, testimonials, or guarantees are present; the limitations section and footer explicitly restate 'not a medical clinic', 'no diagnosis or treatment', 'not emergency care', 'outcomes are not guaranteed', and 'insurance is not represented.'
heading_hierarchy
The document has exactly one h1 and ordered heading levels with no skipped levels.
✓Programmatic check: h1_count=1; heading_order_valid=True.
semantic_landmarks
Semantic HTML landmarks (header/main/section/footer or equivalent) organize the page; it is not a div-only document.
✓The document uses <header>, <main>, multiple <section> elements with aria-labelledby, <article> cards, and a <footer>, avoiding a div-only structure.
conversion_clarity
The primary action is visually and structurally unmistakable, and copy answers visitor questions concretely instead of vague wellness language.
✓The 'Book a consultation' button is styled prominently (bold color, shadow, hover/focus states) and appears at top and bottom, while copy gives concrete specifics like the $160 flat fee, exact inclusions, and explicit disorder examples rather than vague wellness language.
Answer the model's full response$0.062 · 84.2s · 15.3k tok
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Harborline Sleep Education | 45-Minute Virtual Routine-Planning Consultation</title> <style> :root { --font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --bg-base: #f8fafc; --bg-surface: #ffffff; --bg-subtle: #f1f5f9; --text-main: #0f172a; --text-muted: #475569; --text-light: #64748b; --border-soft: #e2e8f0; --border-accent: #cbd5e1; --brand-primary: #1e3a5f; --brand-accent: #2b517e; --brand-button: #0f243d; --brand-button-hover: #1e3a5f; --boundary-bg: #fff8f5; --boundary-border: #fed7aa; --boundary-text: #7c2d12; --boundary-pill: #ea580c; --container-max: 860px; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: var(--font-stack); background-color: var(--bg-base); color: var(--text-main); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } header { background-color: var(--bg-surface); border-bottom: 1px solid var(--border-soft); padding: 1rem 1.5rem; } .header-inner { max-width: var(--container-max); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; } .logo-container { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--text-main); } .logo-icon { width: 28px; height: 28px; fill: var(--brand-primary); } .logo-title { font-size: 1.05rem; font-weight: 700; letter-spacing: -0.01em; color: var(--text-main); } .badge-service { font-size: 0.75rem; font-weight: 600; color: var(--text-muted); background: var(--bg-subtle); border: 1px solid var(--border-soft); padding: 0.2rem 0.6rem; border-radius: 999px; letter-spacing: 0.02em; text-transform: uppercase; } main { max-width: var(--container-max); margin: 0 auto; padding: 2.5rem 1.5rem 4rem 1.5rem; } section { margin-bottom: 3.5rem; } .hero-section { padding-top: 1rem; padding-bottom: 1.5rem; } .eyebrow { display: inline-block; font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--brand-accent); margin-bottom: 0.75rem; } h1 { font-size: clamp(2rem, 4vw, 2.75rem); font-weight: 800; line-height: 1.2; letter-spacing: -0.03em; color: var(--text-main); margin-bottom: 1.25rem; } .hero-lead { font-size: 1.15rem; color: var(--text-muted); max-width: 720px; margin-bottom: 2rem; line-height: 1.6; } .cta-button { display: inline-flex; align-items: center; justify-content: center; background-color: var(--brand-button); color: #ffffff; font-size: 1.05rem; font-weight: 600; padding: 0.95rem 1.85rem; border-radius: var(--radius-sm); text-decoration: none; box-shadow: 0 2px 4px rgba(15, 23, 42, 0.12); transition: background-color 0.15s ease, transform 0.1s ease; } .cta-button:hover { background-color: var(--brand-button-hover); transform: translateY(-1px); } .cta-button:focus-visible { outline: 3px solid var(--brand-accent); outline-offset: 2px; } .hero-cta-wrapper { margin-bottom: 2.25rem; } .sub-cta-note { font-size: 0.825rem; color: var(--text-light); margin-top: 0.5rem; } .audience-box { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 1.75rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03); } .audience-title { font-size: 1rem; font-weight: 700; color: var(--text-main); margin-bottom: 0.85rem; } .audience-list { list-style: none; display: grid; gap: 0.75rem; } .audience-list li { display: flex; align-items: flex-start; gap: 0.65rem; font-size: 0.95rem; color: var(--text-muted); } .audience-list svg { flex-shrink: 0; width: 18px; height: 18px; fill: var(--brand-accent); margin-top: 0.2rem; } h2 { font-size: 1.75rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.02em; color: var(--text-main); margin-bottom: 0.75rem; } .section-desc { font-size: 1rem; color: var(--text-muted); margin-bottom: 1.75rem; max-width: 680px; } /* Process steps */ .steps-container { display: grid; grid-template-columns: 1fr; gap: 1.25rem; } @media (min-width: 640px) { .steps-container { grid-template-columns: repeat(3, 1fr); } } .step-card { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 1.5rem; position: relative; } .step-number { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background-color: var(--bg-subtle); border: 1px solid var(--border-accent); color: var(--brand-primary); border-radius: 50%; font-size: 0.85rem; font-weight: 700; margin-bottom: 1rem; } .step-heading { font-size: 1.05rem; font-weight: 700; color: var(--text-main); margin-bottom: 0.5rem; } .step-body { font-size: 0.875rem; color: var(--text-muted); line-height: 1.55; } /* Included list */ .included-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; } @media (min-width: 640px) { .included-grid { grid-template-columns: repeat(3, 1fr); } } .included-card { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 1.5rem; } .included-icon { width: 28px; height: 28px; fill: var(--brand-primary); margin-bottom: 0.85rem; } .included-card h3 { font-size: 1.05rem; font-weight: 700; margin-bottom: 0.4rem; color: var(--text-main); } .included-card p { font-size: 0.875rem; color: var(--text-muted); line-height: 1.5; } /* Price Section */ .price-card { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-lg); padding: 2rem; display: flex; flex-direction: column; gap: 1.5rem; } @media (min-width: 640px) { .price-card { flex-direction: row; align-items: center; justify-content: space-between; } } .price-info { max-width: 480px; } .price-amount { display: flex; align-items: baseline; gap: 0.25rem; margin-bottom: 0.25rem; } .price-value { font-size: 2.75rem; font-weight: 800; letter-spacing: -0.03em; color: var(--text-main); } .price-currency { font-size: 1.75rem; font-weight: 700; color: var(--text-main); } .price-terms { font-size: 0.875rem; font-weight: 600; color: var(--text-light); text-transform: uppercase; letter-spacing: 0.05em; } .price-subtext { font-size: 0.925rem; color: var(--text-muted); margin-top: 0.5rem; } .price-meta-list { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.875rem; color: var(--text-muted); } .price-meta-list li { display: flex; align-items: center; gap: 0.5rem; } .price-meta-list svg { width: 16px; height: 16px; fill: var(--brand-accent); flex-shrink: 0; } /* Limitations & Boundary Callout */ .limitations-wrapper { background-color: var(--boundary-bg); border: 1px solid var(--boundary-border); border-radius: var(--radius-lg); padding: 2rem; } .boundary-badge { display: inline-flex; align-items: center; gap: 0.4rem; background-color: #fee2e2; color: #991b1b; font-size: 0.75rem; font-weight: 700; padding: 0.25rem 0.6rem; border-radius: 999px; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 1rem; } .boundary-badge svg { width: 14px; height: 14px; fill: currentColor; } .limitations-title { font-size: 1.35rem; font-weight: 700; color: #7f1d1d; margin-bottom: 0.5rem; } .limitations-intro { font-size: 0.95rem; color: #7c2d12; margin-bottom: 1.5rem; line-height: 1.55; } .limitations-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-bottom: 1.5rem; } @media (min-width: 640px) { .limitations-grid { grid-template-columns: repeat(2, 1fr); } } .limitation-item { background-color: rgba(255, 255, 255, 0.7); border: 1px solid rgba(254, 215, 170, 0.8); border-radius: var(--radius-md); padding: 1.15rem; } .limitation-item h3 { font-size: 0.95rem; font-weight: 700; color: #7f1d1d; margin-bottom: 0.35rem; } .limitation-item p { font-size: 0.85rem; color: #7c2d12; line-height: 1.5; } .emergency-notice { background-color: #ffffff; border-left: 4px solid #b91c1c; padding: 1rem 1.25rem; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; font-size: 0.875rem; color: #7f1d1d; line-height: 1.5; } .emergency-notice strong { color: #991b1b; display: block; margin-bottom: 0.2rem; } /* Common objections FAQ */ .faq-list { display: flex; flex-direction: column; gap: 1rem; } .faq-item { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 1.5rem; } .faq-question { font-size: 1.05rem; font-weight: 700; color: var(--text-main); margin-bottom: 0.5rem; } .faq-answer { font-size: 0.925rem; color: var(--text-muted); line-height: 1.6; } /* Next Step Section */ .next-step-section { background-color: var(--bg-surface); border: 1px solid var(--border-soft); border-radius: var(--radius-lg); padding: 2.5rem 2rem; text-align: center; margin-bottom: 2rem; } .next-step-section h2 { font-size: 1.85rem; margin-bottom: 0.75rem; } .next-step-section p { font-size: 1rem; color: var(--text-muted); max-width: 580px; margin: 0 auto 1.75rem auto; } footer { border-top: 1px solid var(--border-soft); padding: 2.5rem 1.5rem; background-color: var(--bg-surface); } .footer-inner { max-width: var(--container-max); margin: 0 auto; font-size: 0.8125rem; color: var(--text-light); line-height: 1.6; } .footer-disclaimer { margin-bottom: 1.25rem; } .footer-copy { font-size: 0.75rem; color: var(--text-light); } </style> </head> <body> <!-- Site Navigation Bar --> <header> <div class="header-inner"> <div class="logo-container"> <svg class="logo-icon" viewBox="0 0 24 24" aria-hidden="true"> <path d="M12 2L4 7v10l8 5 8-5V7l-8-5zm0 2.2L18 8v7.8l-6 3.75-6-3.75V8l6-3.8zM11 7h2v6h-2V7zm0 8h2v2h-2v-2z"/> </svg> <span class="logo-title">Harborline Sleep Education</span> </div> <span class="badge-service">Routine Coaching</span> </div> </header> <main> <!-- 1. What This Is and Who It Is For --> <section class="hero-section" aria-labelledby="hero-title"> <span class="eyebrow">45-Minute Virtual Consultation &bull; $160 Flat Fee</span> <h1 id="hero-title">Structured evening routine planning for consistent, calm bedtimes</h1> <p class="hero-lead"> Harborline Sleep Education provides a dedicated 45-minute virtual educational session designed to help adults organize non-clinical bedtime habits, reduce evening friction, and build a sustainable wind-down plan. </p> <div class="hero-cta-wrapper"> <a href="#consultation-booking" class="cta-button">Book a consultation</a> <p class="sub-cta-note">Direct client payment &bull; Virtual meeting link provided upon scheduling</p> </div> <div class="audience-box"> <h2 class="audience-title">Who this consultation is designed for:</h2> <ul class="audience-list"> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>Adults seeking a structured, reliable method to organize everyday evening habits and nighttime pacing.</span> </li> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>Individuals experiencing routine drift, screen distractions, or irregular timing who want non-clinical behavioral structure.</span> </li> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>People who want a clear routine blueprint and structured questions to review with their personal physician or specialist.</span> </li> </ul> </div> </section> <!-- 2. How the Consultation Works --> <section aria-labelledby="how-it-works-title"> <h2 id="how-it-works-title">How the consultation works</h2> <p class="section-desc"> A simple, three-part process that focuses purely on your practical evening habits and schedule organization. </p> <div class="steps-container"> <article class="step-card"> <div class="step-number" aria-hidden="true">1</div> <h3 class="step-heading">Preliminary Intake</h3> <p class="step-body"> Prior to the session, you share your current bedtime timeline, environment details, and routine goals through a brief intake form so our conversation starts with full context. </p> </article> <article class="step-card"> <div class="step-number" aria-hidden="true">2</div> <h3 class="step-heading">45-Minute Virtual Call</h3> <p class="step-body"> We meet one-on-one via video for 45 focused minutes. Together, we analyze schedule friction points, discuss non-clinical habit design, and map out a practical evening cadence. </p> </article> <article class="step-card"> <div class="step-number" aria-hidden="true">3</div> <h3 class="step-heading">Educational Summary</h3> <p class="step-body"> You receive a clear, written educational routine plan detailing your agreed sequence, alongside prepared questions you may choose to discuss with a licensed clinician. </p> </article> </div> </section> <!-- 3. What Is Included --> <section aria-labelledby="included-title"> <h2 id="included-title">What is included</h2> <p class="section-desc"> Every consultation delivers three core components tailored to your non-clinical habit goals. </p> <div class="included-grid"> <article class="included-card"> <svg class="included-icon" viewBox="0 0 24 24" aria-hidden="true"> <path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"/> </svg> <h3>Intake Review</h3> <p> An advance review of your schedule and routine habits before the session begins, ensuring our discussion makes maximum use of your consultation time. </p> </article> <article class="included-card"> <svg class="included-icon" viewBox="0 0 24 24" aria-hidden="true"> <path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z"/> </svg> <h3>45-Minute Planning Call</h3> <p> A collaborative, one-on-one virtual session focusing exclusively on organizing realistic, incremental evening routine adjustments. </p> </article> <article class="included-card"> <svg class="included-icon" viewBox="0 0 24 24" aria-hidden="true"> <path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/> </svg> <h3>Written Educational Summary</h3> <p> A documented routine plan outlining your wind-down schedule and a structured list of questions you can share with your primary healthcare provider. </p> </article> </div> </section> <!-- 4. Price --> <section aria-labelledby="pricing-title"> <h2 id="pricing-title">Consultation fee</h2> <p class="section-desc"> A single, transparent rate with no ongoing subscription or unexpected add-on costs. </p> <div class="price-card"> <div class="price-info"> <div class="price-amount"> <span class="price-currency">$</span> <span class="price-value">160</span> </div> <div class="price-terms">One-Time Fee &bull; 45-Minute Virtual Consultation</div> <p class="price-subtext"> Paid directly by the client at the time of booking. Includes the full intake review, 45-minute live consultation, and personalized written educational summary. </p> </div> <ul class="price-meta-list" aria-label="Pricing terms"> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>Flat fee: $160 direct client payment</span> </li> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>No recurring billing or membership commitments</span> </li> <li> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"/></svg> <span>Direct self-pay; insurance is not represented</span> </li> </ul> </div> </section> <!-- 5. Limitations and Who It Is NOT For --> <section aria-labelledby="limitations-title"> <div class="limitations-wrapper"> <div class="boundary-badge"> <svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"/></svg> Important Care Boundaries </div> <h2 id="limitations-title" class="limitations-title">Service limitations &amp; who this is NOT for</h2> <p class="limitations-intro"> Harborline Sleep Education is an educational coaching service, not a medical provider. To ensure your safety and clarity, please review what this service does not provide: </p> <div class="limitations-grid"> <article class="limitation-item"> <h3>Not a Medical Clinic</h3> <p> This service is non-clinical educational coaching. We are not a medical practice, sleep clinic, or clinical mental health facility. </p> </article> <article class="limitation-item"> <h3>No Diagnosis or Medical Treatment</h3> <p> We do not evaluate, diagnose, manage, or treat clinical sleep disorders (such as insomnia, sleep apnea, or restless legs) or medical conditions. </p> </article> <article class="limitation-item"> <h3>No Prescriptions or Therapy</h3> <p> We do not prescribe medications, recommend pharmaceutical adjustments, or provide clinical psychotherapy. </p> </article> <article class="limitation-item"> <h3>No Guaranteed Outcomes</h3> <p> Because habit adoption depends on personal execution and external conditions, specific health or sleep outcomes are not guaranteed. </p> </article> <article class="limitation-item"> <h3>No Insurance Representation</h3> <p> Insurance coverage is not represented. We do not participate in insurance networks, bill insurance carriers, or issue superbills. </p> </article> <article class="limitation-item"> <h3>Not for Complex Medical Symptoms</h3> <p> This service is not suitable for individuals needing clinical investigation for physiological symptoms, nocturnal gasping, or chronic pain. </p> </article> </div> <div class="emergency-notice" role="alert"> <strong>Not Emergency Care:</strong> This service does not provide emergency, urgent, or crisis support. If you are experiencing acute health symptoms, sudden severe fatigue interfering with safety, or medical emergencies, contact your local emergency services or an appropriate licensed clinician immediately. </div> </div> </section> <!-- 6. Common Objections --> <section aria-labelledby="faq-title"> <h2 id="faq-title">Common questions &amp; objections</h2> <p class="section-desc"> Direct answers to common questions about our educational focus, payment, and clinical boundaries. </p> <div class="faq-list"> <article class="faq-item"> <h3 class="faq-question">How does educational coaching differ from seeing a sleep doctor?</h3> <p class="faq-answer"> A sleep physician evaluates, diagnoses, and medically treats physiological or neurological sleep disorders (such as sleep apnea or chronic insomnia) using diagnostic testing and medical interventions. In contrast, Harborline Sleep Education provides non-clinical educational coaching focused purely on schedule predictability, wind-down habits, and routine organization. </p> </article> <article class="faq-item"> <h3 class="faq-question">Can I use health insurance or request a superbill?</h3> <p class="faq-answer"> No. The $160 fee is paid directly by the client. Harborline Sleep Education is an educational service and does not bill insurance companies, partner with healthcare plans, or provide medical billing codes or superbills. </p> </article> <article class="faq-item"> <h3 class="faq-question">What if I suspect I have a medical sleep condition?</h3> <p class="faq-answer"> If you experience physical symptoms such as chronic waking, snoring, gasping, involuntary movements, or daytime microsleeps, you should schedule an evaluation with a licensed physician. During our consultation, we can help you compile organized observations and questions to take to your healthcare provider, but we cannot evaluate or diagnose symptoms. </p> </article> <article class="faq-item"> <h3 class="faq-question">Are results or sleep improvements guaranteed?</h3> <p class="faq-answer"> No. Sleep is influenced by many personal, biological, and environmental factors. We provide educational frameworks, habit analysis, and a structured routine plan, but individual outcomes vary and cannot be guaranteed. </p> </article> <article class="faq-item"> <h3 class="faq-question">What format is used for the consultation?</h3> <p class="faq-answer"> The consultation is conducted virtually over a secure video link. You will receive a direct access link upon booking, along with instructions for completing your pre-session intake. </p> </article> </div> </section> <!-- 7. The Next Step --> <section id="consultation-booking" class="next-step-section" aria-labelledby="next-step-title"> <h2 id="next-step-title">The next step</h2> <p> Ready to organize a clearer, more consistent bedtime schedule? Reserve your 45-minute virtual session, share your intake details, and receive your personalized educational routine plan. </p> <div> <a href="#consultation-booking" class="cta-button">Book a consultation</a> </div> <p class="sub-cta-note" style="margin-top: 1rem;"> $160 direct payment &bull; Intake review included &bull; Educational coaching </p> </section> </main> <!-- Site Footer with Disclaimers --> <footer> <div class="footer-inner"> <p class="footer-disclaimer"> <strong>Important Notice:</strong> Harborline Sleep Education is an educational coaching service for adults seeking help organizing non-clinical bedtime habits. It is not a medical clinic, does not provide medical advice, diagnosis, or treatment for any sleep disorders, and is not emergency care. Outcomes are not guaranteed, and insurance coverage is not represented. If you have urgent symptoms or safety concerns, please contact your local emergency services or an appropriate licensed medical provider. </p> <p class="footer-copy"> &copy; Harborline Sleep Education. All rights reserved. </p> </div> </footer> </body> </html>

Open this task's own page →

Reconcile an over-committed launch production schedule launch-capacity-trap0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Respond to the attached production brief for the Arc Clip Lamp October launch. Produce the requested week-by-week schedule with hour totals per person, honoring the brief exactly as written and using the brief's own production standards for every hour figure. Show the arithmetic needed to audit every total. If the brief's commitments cannot all be honored simultaneously, say so plainly with the exact numbers, do not present any schedule that pretends to satisfy them, and propose concrete resolution options the Head of Marketing could take back to leadership, each with a complete revised deliverable list and hour totals that fit the stated capacity and calendar. --- ## 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. --- ## Supplied source: launch-ops-brief.md # Arc Clip Lamp launch — production brief from the Head of Marketing Congrats — the Arc Clip Lamp content launch is approved for October. This brief is the commitment I took to the leadership team, so build the four-week production schedule exactly as written here. ## Launch window - Production window: October 5 through October 30 (four production weeks). - The new landing page must go live on **October 28**. ## Committed deliverables (all due within the window) | Deliverable | Quantity | |---|---| | Blog posts | 8 | | Social posts | 12 | | Lifecycle emails | 3 | | Landing page | 1 | | Video scripts | 2 | ## Team availability for this launch - Copywriter: **24 hours per production week** dedicated to this launch. - Designer: **12 hours per production week** dedicated to this launch. - No other staff are assigned. A freelance design budget was **requested but has not been approved**; do not count on it unless leadership signs off. - Contractor support for video editing is **pending approval** and out of scope for this schedule. ## Production standards (per unit, from our estimation sheet) | Deliverable | Copywriter hours | Designer hours | |---|---|---| | Blog post | 6 | 2 | | Social post | 1 | 1.5 | | Lifecycle email | 4 | 2 | | Landing page | 10 | 24 | | Video script | 5 | 0 | ## Operations notices (from the platform team, non-negotiable) - A company-wide **content freeze runs October 26–30** for the site migration: nothing may be published or pushed live during the freeze. This freeze was set by engineering and cannot be moved by marketing. Please send back the week-by-week schedule with hour totals per person so I can confirm staffing. --- ## 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
Gemini 3.8 Flash high effortFailed

The judge marked this response incomplete — it was cut off at the output-token ceiling — so the task fails regardless of the per-criterion results below.

RequirementVerdictEvidence
design_shortfall_stated
The response states that the committed deliverables require exactly 64 designer hours (16 + 18 + 6 + 24 + 0) against 48 available (12 per week x 4 weeks), a 16-hour shortfall, with the arithmetic visible.
✓The response states 'A 16-hour designer capacity deficit... require 64 design hours, but the dedicated designer has only 48 available hours' with a table showing 16+18+6+24=64.
copy_capacity_confirmed
The response states that copywriter hours fit: 92 required (48 + 12 + 12 + 10 + 10) against 96 available (24 x 4). It does not claim the copywriter is over capacity.
✗The response is cut off before showing the video-script row or any copywriter-hour total, so it never states 92 hours required against 96 available.
freeze_conflict_stated
The response flags that the required October 28 landing-page go-live falls inside the October 26-30 content freeze, and no proposed plan publishes or launches anything during the freeze.
✓It explicitly states 'October 28 falls squarely inside this freeze window' referencing the Oct 26-30 freeze.
infeasibility_declared
The response plainly declares that the brief as written cannot be executed: no schedule is presented that claims to deliver every commitment within the stated capacity and calendar.
✓The response's heading states 'The Brief Cannot Be Honored as Written' and explicitly says no schedule pretending to satisfy the conflicts is presented.
no_invented_capacity
No unapproved freelance, contractor, overtime, or extra-staff hours are counted as available capacity. Proposing approval of the freelance budget as an option is fine only when it is explicitly labeled as requiring a decision leadership has not yet made.
✓No freelance, contractor, or extra-staff hours are counted as available capacity anywhere in the visible text, satisfying the forbidding criterion by absence.
explicit_constraint_changes
Every resolution option names exactly which stated commitment it changes (which deliverables are cut or reduced, that the go-live date moves, or that new capacity must be approved) rather than silently altering or omitting one.
✗The response is truncated before presenting any of the promised 'three concrete... resolution options', so no constraint changes are named.
auditable_arithmetic
Hour totals per person are numeric, follow the brief's per-unit production standards, and sum correctly in the original reconciliation and in every option.
✗Per-person (copywriter) totals are never computed and no option-level arithmetic is shown because the response cuts off mid-table before any options or final sums.
multiple_options
At least two materially different resolution options are proposed, each with a complete revised deliverable list whose copywriter hours fit 96 and designer hours fit 48 (or fit an explicitly approved capacity increase), and a go-live date outside the freeze.
✗The response promises 'three concrete, fully scheduled resolution options' but the text ends before any option is actually presented.
grounded_recommendation
One option is recommended with a rationale tied to the launch's or brand's stated goals, without invented performance predictions or unsupported claims about what the content will achieve.
✗No recommendation is given anywhere in the truncated response.
Answer the model's full response$0.062 · 90.8s · 16.0k tok
# Production Brief Audit & Launch Schedule Assessment: Arc Clip Lamp **To:** Head of Marketing, Cedar & Coil **From:** Marketing Operations & Analytics **Date:** October Launch Planning **Subject:** Feasibility Audit, Capacity Reconciliation, and Week-by-Week Launch Resolution Options --- ## 1. Executive Determination: The Brief Cannot Be Honored as Written The production brief for the Arc Clip Lamp October launch **cannot be honored simultaneously as written**. Attempting to execute the brief without adjustments creates two fatal conflicts: 1. **A 16-hour designer capacity deficit (33.3% over available capacity):** The committed deliverables require **64 design hours**, but the dedicated designer has only **48 available hours** across the four-week window ($4\text{ weeks} \times 12\text{ hrs/week}$). 2. **A direct operational violation of the engineering content freeze:** The brief mandates that the new landing page go live on **October 28**. However, the platform engineering team has established a non-negotiable site migration content freeze from **October 26 through October 30**, during which nothing may be published or pushed live. October 28 falls squarely inside this freeze window. Per your instructions, **no schedule is presented that pretends to satisfy these conflicting commitments**. Below is the exact row-level audit of the brief’s requirements, followed by three concrete, fully scheduled resolution options you can take to leadership. --- ## 2. Row-Level Arithmetic & Capacity Audit The table below calculates the required hours for all committed deliverables using the brief’s own production standards: * **Blog post:** 6 Copywriter hrs, 2 Designer hrs * **Social post:** 1 Copywriter hr, 1.5 Designer hrs * **Lifecycle email:** 4 Copywriter hrs, 2 Designer hrs * **Landing page:** 10 Copywriter hrs, 24 Designer hrs * **Video script:** 5 Copywriter hrs, 0 Designer hrs ### Production Requirements vs. Available Headcount | Deliverable | Quantity | Copywriter Hours / Unit | Total Copywriter Hours | Designer Hours / Unit | Total Designer Hours | Combined Deliverable Hours | |---|---|---|---|---|---|---| | **Blog posts** | 8 | 6.0 | 48.0 | 2.0 | 16.0 | 64.0 | | **Social posts** | 12 | 1.0 | 12.0 | 1.5 | 18.0 | 30.0 | | **Lifecycle emails** | 3 | 4.0 | 12.0 | 2.0 | 6.0 | 18.0 | | **Landing page** | 1 | 10.0 | 10.0 | 24.0 | 24.0 | 34.0 |

Open this task's own page →

90-day marketing plan for a fictional B2B SaaS marketing-plan0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from copywriting, analytics — folders in the marketingskills pack.

Create a 90-day go-to-market marketing plan for Northstar Ops with a $15,000 total budget. Required sections, each labeled: (1) ICP and positioning built on the approved positioning; (2) channel plan choosing exactly three channels with a rationale for each choice and for what was excluded; (3) first-four-weeks content calendar sketch; (4) funnel and activation metrics tied to the documented trial activation event (a trial team invites two teammates and completes one shared workflow); (5) budget allocation across the three channels with reasoning; (6) weekly measurement plan naming each metric's source; (7) top three risks with mitigations. Do not invent customers, revenue figures, market-share claims, or testimonials. --- ## Supplied source: product-marketing.md # Northstar Ops Northstar Ops is a fictional B2B SaaS operations workspace for growing teams. Its 14-day trial activation event is inviting two teammates and completing one shared workflow. The approved positioning is faster, visible handoffs without adding another weekly status meeting. This fixture is synthetic and redistribution-safe. Do not invent customers, revenue, market leadership, performance guarantees, or causal claims. --- ## Skill guidance you should follow --- name: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing) --- ## 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
Gemini 3.8 Flash high effortFailed
RequirementVerdictEvidence
all_sections
All seven labeled sections are present: ICP/positioning, channel plan, content calendar, activation metrics, budget allocation, measurement plan, risks.
✓The response contains all seven labeled sections (1) ICP and Positioning through (7) Top Three Risks and Mitigations.
three_channels
Exactly three channels are chosen, each with a rationale, and the budget allocation across them sums to the $15,000 total.
✓Exactly three channels (Google Paid Search, LinkedIn Paid Social, Lifecycle & Onboarding Assets) are chosen with rationale, and the budget table sums $6,500+$5,500+$3,000=$15,000.
activation_anchored
Funnel metrics are explicitly tied to the documented activation event (inviting two teammates and completing one shared workflow), not a generic signup metric.
✓The funnel explicitly marks 'Shared Workflow Completed' as the '★ CORE ACTIVATION EVENT (trial_activated)' tied to inviting two teammates and completing one shared workflow.
no_invented_proof
No invented customers, logos, revenue, market statistics, benchmark conversion rates stated as fact, or testimonials; assumptions are labeled as assumptions.
✗The funnel table states specific numeric 'Target Conversion Benchmark' figures (e.g., '4.0% – 6.0%', '35.0% of signups', '20.0% – 25.0%') as fact without labeling them as assumptions or citing any source.
measurement_defined
Each tracked metric names its source/definition (where the number comes from), and the measurement plan is weekly as requested.
✓Each metric in the Measurement Framework Table names a source (e.g., 'GA4', 'Mixpanel', 'Google Ads Manager / LinkedIn Campaign Manager') and the section is explicitly weekly cadence.
focused_strategy
The plan concentrates on the three chosen channels with reasoning that references the ICP, rather than spreading across every possible tactic.
✓The plan concentrates all budget and content on the three chosen channels, with rationale tied to ICP roles like 'Operations Leads' and 'Project/Program Managers'.
sequenced_90_days
The 90 days are phased (e.g. by month or milestone) with dependencies acknowledged, and the positioning ('faster, visible handoffs without adding another weekly status meeting') carries through the messaging.
✓The plan phases work into a 4-week content calendar and monthly budget blocks (~$5,000/month), while the headline positioning 'faster, visible handoffs without adding another weekly status meeting' recurs throughout ad copy and emails.
mature_activation_denominator
Activation rate is defined using only trial starts whose full 14-day activation window has closed; newer trials are explicitly pending rather than counted as non-activated.
✓The response states 'A trial signup inside its 14-day trial window is pending, not failed' and defines the Cohort Activation Rate using only 'Total workspace signups whose 14-day trial window has expired'.
Answer the model's full response$0.030 · 53.2s · 7.0k tok
# 90-Day Go-to-Market Marketing Plan: Northstar Ops **Total Budget:** $15,000 **Core Activation Event:** A trial team invites two teammates and completes one shared workflow within their 14-day trial. **Approved Positioning:** Faster, visible handoffs without adding another weekly status meeting. --- ## 1. ICP and Positioning ### Ideal Customer Profile (ICP) * **Company Profile:** Growing B2B teams (typically 20–150 employees) undergoing rapid cross-functional expansion across product delivery, customer onboarding, implementation, and revenue operations. * **Primary Roles:** Operations Leads (Director/Head/Manager of Operations), Project/Program Managers, and Cross-Functional Team Leads. * **Core Pain Points:** * Cross-functional work stalls during team-to-team handoffs because nobody knows who holds the baton. * Status meetings are repeatedly scheduled to determine the progress of tasks, draining cross-functional focus. * Lack of handoff visibility leads to dropped customer deliverables, delayed release handoffs, and fractured internal communication. * **Key Objections:** * *"Not another tool our team has to check every morning."* * *"It takes too long to get other departments onboarded and working together."* ### Positioning Framework * **Category:** B2B SaaS Operations Workspace. * **Headline Value Proposition:** Faster, visible handoffs without adding another weekly status meeting. * **Subheadline:** Northstar Ops gives growing cross-functional teams direct visibility into where work stands—so projects move forward without scheduling another recurring check-in. * **Supportable Transformation:** From invisible handoff bottlenecks and recurring alignment meetings to transparent, documented workflow transitions between teammates. ### Claim Policy & Declined Claims | Requested / Common SaaS Claim | Assessment | Supportable Working Copy | Evidence Required to Unlock Original | | :--- | :--- | :--- | :--- | | *"Cuts weekly status meetings by 50% and saves 5 hours per employee."* | **Declined.** Violates fixture rules; performance guarantees and numerical time-savings claims cannot be invented. | *"Replace manual status check-ins with clear, visible handoff milestones."* | A verified time-tracking study or pre/post user workflow audit measuring meeting hour reductions across a representative customer sample. | | *"Trusted by hundreds of leading operational teams."* | **Declined.** Violates fixture rules against inventing social proof, customer volume, or market leadership. | *"Built specifically for growing teams that need cross-functional clarity."* | Production database export of active, paid tenant counts or verified customer logos with explicit marketing release rights. | --- ## 2. Channel Plan and Exclusions To maximize the $15,000 budget over 90 days, resources are concentrated into three channels that target high-intent problem discovery, role-targeted outreach, and in-product collaborative activation. ### The Three Selected Channels #### 1. High-Intent Paid Search (Google Search) * **Rationale:** Direct capture of demand from operations leads actively looking for solutions to broken team handoffs and excessive status meetings. When an operations leader searches for solutions to coordinate cross-team handoffs, their intent to trial a dedicated workspace is at its highest. * **Focus Keywords:** Exact- and phrase-match terms addressing operations workflows (e.g., `"cross team handoff software"`, `"operations workflow tool"`, `"status meeting alternative"`, `"team handoff management"`). * **Role in Funnel:** Top-of-Funnel (ToFu) to Middle-of-Funnel (MoFu) high-intent trial acquisition. #### 2. Precision Paid Social (LinkedIn Sponsored Content) * **Rationale:** Operations titles are well-indexed on LinkedIn. It allows precise firmographic filtering (Operations Manager, Head of Operations, Program Manager at companies with 20–200 employees). This channel introduces Northstar Ops' core positioning directly into the feeds of leaders suffering from coordination overhead before they search for point solutions. * **Focus Format:** Single-image problem/solution graphics illustrating the "status meeting vs. visible handoff" contrast, linking to dedicated landing pages with self-serve 14-day trial entry. * **Role in Funnel:** Middle-of-Funnel (MoFu) targeted demand generation and retargeting of search visitors who did not start a trial. #### 3. Product-Led Lifecycle Marketing (Lifecycle Email & In-App Onboarding Content) * **Rationale:** In a product where trial activation requires **inviting two teammates and completing one shared workflow**, acquisition spend is wasted if the primary user signs up alone and stalls. Dedicated lifecycle messaging educates the workspace creator on *how* to invite their two collaborators and provides step-by-step handoff templates to execute that first shared workflow. * **Focus Format:** Behavioral-triggered email sequences, interactive handoff setup guides, and pre-built workflow templates (e.g., Client Onboarding Handoff, Product Release Handoff). * **Role in Funnel:** Bottom-of-Funnel (BoFu) trial-to-activation conversion driver. --- ### Excluded Channels and Strategic Rationale * **Excluded: Cold Outbound Email / SDR Outbound Calling** * *Reason for Exclusion:* High setup costs (data scrapers, deliverability infrastructure, sequence tooling, or SDR labor) deplete a $15,000 budget quickly. Cold outbound sales cycles for operations workspaces typically exceed 60–90 days, failing to supply fast trial cohorts required to measure early activation. * **Excluded: Programmatic Display & Broad Brand Advertising** * *Reason for Exclusion:* Broad display banners generate untargeted, low-intent traffic with poor conversion rates. On a lean budget, zero capital should be allocated to unmeasured "brand impressions." * **Excluded: In-Person Events and Conference Sponsorships** * *Reason for Exclusion:* A single conference booth or sponsorship package routinely costs upwards of $10,000–$20,000 before travel and collateral expenses, exhausting the entire 90-day budget on an untracked single event. * **Excluded: Third-Party Influencer / Podcast Sponsorships** * *Reason for Exclusion:* High minimum campaign commitments, low attribution precision, and unpredictable cohort pacing make it unsuitable for validating a specific 14-day collaborative activation milestone on limited funds. --- ## 3. First-Four-Weeks Content Calendar Sketch All content centers on the core value proposition: **faster, visible handoffs without adding another weekly status meeting**, driving visitors to initiate a 14-day trial and launch a shared workflow. ``` WEEK 1 WEEK 2 WEEK 3 WEEK 4 +-----------------------+ +-----------------------+ +-----------------------+ +-----------------------+ | Core Handoff Friction | | Meeting-Free Status | | Collaborative Setup | | Multi-Department Flow | | Focus: Search Landing | | Focus: LinkedIn Ads | | Focus: Email Nurture | | Focus: Full Workflow | | Page & Launch Ads | | & Handoff Playbook | | & Template Library | | & Retargeting Case | +-----------------------+ +-----------------------+ +-----------------------+ +-----------------------+ ``` ### Week 1: Core Handoff Friction & Launch Baseline * **Theme:** "Where Work Gets Stuck Between Teams." * **Deliverable 1 (Landing Page Copy):** Dedicated PPC landing page matching the headline: *"Faster, visible handoffs without adding another weekly status meeting."* Action CTA: `Start 14-Day Free Trial`. * **Deliverable 2 (Search Ad Copy Sets):** 3 responsive search ad groups focused on: (a) eliminating status meetings, (b) cross-functional handoffs, and (c) operations workspace workflows. * **Deliverable 3 (Lifecycle Email 0 - Day 0):** Trigger: Account created. Subject: *"Welcome to Northstar Ops: Set up your first visible handoff."* Goal: Prompt user to invite Teammate #1 and Teammate #2 during initial workspace setup. ### Week 2: Meeting Elimination & The Handoff Canvas * **Theme:** "Kill the Recurring Status Sync." * **Deliverable 1 (LinkedIn Sponsored Graphic):** Visual side-by-side graphic: "The 45-Minute Status Meeting" (agenda debates, unrecorded verbal updates) vs. "The Northstar Ops Handoff" (real-time task transition, clear ownership, documented context). CTA: `See How It Works`. * **Deliverable 2 (Interactive Template):** In-product pre-configured template: *"Cross-Functional Client Onboarding Handoff"* (Sales to Implementation to Customer Success). * **Deliverable 3 (Lifecycle Email 2 - Day 3):** Trigger: User created workspace but has invited 0 teammates. Subject: *"Workflows need a team: Bring in your first two collaborators."* CTA: `Invite Your Teammates`. ### Week 3: Solving Multi-User Drop-Off * **Theme:** "Designing Clean Handoff Milestones." * **Deliverable 1 (Workflow Guide / Educational Post):** Tactical blog/guide distributed via social: *"The Anatomy of a Clean Handoff: Why Context Drops Between Teams."* Breakdowns of input requirements, completion criteria, and handoff notifications. * **Deliverable 2 (Lifecycle Email 3 - Day 6):** Trigger: Teammates invited, but 0 shared workflows completed. Subject: *"Run your first workflow in 10 minutes (Template included)."* Directly links into the shared workflow execution view. * **Deliverable 3 (LinkedIn Retargeting Copy):** Retargeting non-converting site visitors with: *"Stop chasing updates in Slack. Give your growing team visible handoffs."* CTA: `Try Northstar Ops Free`. ### Week 4: Full-Team Workflow Completion * **Theme:** "Cross-Functional Handoffs in Action." * **Deliverable 1 (In-App Workflow Blueprint):** Template 2: *"Internal Release Handoff"* (Product to Marketing to Support). Highlights roles, triggers, and automated handoff states. * **Deliverable 2 (Lifecycle Email 4 - Day 10):** Trigger: Team has completed 1 shared workflow. Subject: *"Your team's first completed handoff: What's next?"* Reinforces visible progress, prompts setting up a recurring operational workflow. * **Deliverable 3 (Direct Outreach Playbook):** Plain-text template for operational workspace creators to share internally with their team leads: *"Why our team is trialing Northstar Ops to cut our weekly status meetings."* --- ## 4. Funnel and Activation Metrics The funnel is anchored directly to the documented 14-day trial activation event: **a trial team invites two teammates and completes one shared workflow**. ``` [ Visitor / Ad Click ] │ ▼ [ Trial Signup Completed ] ── (signup_completed) │ ▼ [ Teammates Invited: 2+ ] ── (teammate_invited x2) │ ▼ [ Shared Workflow Completed ] ── (workflow_completed) │ ★ CORE ACTIVATION EVENT (trial_activated) ▼ [ Paid Subscription Started ] ── (subscription_started) ``` ### Funnel Stage Definitions & Target Ratios | Funnel Stage | Event Name (Object-Action) | Metric Definition | Target Conversion Benchmark | | :--- | :--- | :--- | :--- | | **1. Acquisition** | `landing_page_viewed` | Total unique landing page visitors across paid and organic channels. | Baseline | | **2. Trial Signup** | `signup_completed` | User signs up for the 14-day trial. Calculated as: `signup_completed` / `landing_page_viewed`. | 4.0% – 6.0% | | **3. Collaboration Initiation** | `teammate_invited` | Workspace creator sends invitations to at least two team members within the first 5 days. | 35.0% of signups | | **4. Shared Workflow Setup** | `workflow_created` | A workflow containing at least 2 distinct assignees is initialized in the workspace. | 50.0% of teams with 2+ invites | | **5. Core Activation Event** | `workflow_completed` / `trial_activated` | **Documented activation milestone:** The trial team successfully completes at least one multi-user shared workflow within their 14-day window. | **20.0% – 25.0%** of total closed trial cohort signups | | **6. Paid Conversion** | `subscription_started` | Trial team converts to a paid workspace plan at or before the end of the 14-day trial. | 15.0% – 20.0% of activated trials | ### Strict Observation Window Rules * **Cohort Rate Calculation Rule:** A trial signup inside its 14-day trial window is **pending, not failed**. The Cohort Activation Rate must be calculated **only** on closed cohorts whose 14-day trial window has ended: $$\text{Cohort Activation Rate} = \frac{\text{Workspaces activated within 14 days}}{\text{Total workspace signups whose 14-day trial window has expired}}$$ * **No Window Mismatch:** Never divide full 90-day spend by active or partial trial conversions. All cost-per-activated-trial (CPAT) calculations must evaluate historical spend corresponding specifically to closed cohorts. --- ## 5. Budget Allocation Across the Three Channels Total Capital Available: **$15,000 over 90 days** (~$5,000 per 30-day block). ``` Total Budget: $15,000 ├── Channel 1: Google Paid Search: $6,500 (43.3%) ├── Channel 2: LinkedIn Paid Social: $5,500 (36.7%) └── Channel 3: Lifecycle & Onboarding Assets: $3,000 (20.0%) ``` ### Channel Budget Breakdown | Channel | 90-Day Allocation | Monthly Allocation | Allocation Rationale | | :--- | :--- | :--- | :--- | | **1. Google Paid Search** | **$6,500** (43.3%) | ~$2,166 / month | Captures immediate intent. Funds exact-match bid pricing on high-relevance operations keywords without burning spend on broad-match terms. High conversion predictability. | | **2. LinkedIn Paid Social** | **$5,500** (36.7%) | ~$1,833 / month | Buys precise access to Operations Leads and Project Managers in growing teams. Balances the higher CPCs of LinkedIn by strictly targeting specific company-size filters and retargeting engaged visitors. | | **3. Lifecycle & Onboarding Assets** | **$3,000** (20.0%) | ~$1,000 / month | Dedicated to contract copy/technical asset production: building the collaborative onboarding sequence, copyediting the landing pages, and designing the pre-built shared workflow templates that drive the 2-teammate invite and workflow completion event. | | **Total** | **$15,000** (100%) | **$5,000 / month** | Fully deployed across acquisition, targeting, and activation. | --- ## 6. Weekly Measurement Plan All metrics are tracked weekly, with tools and sources specified to prevent data discrepancies. ### Measurement Framework Table | Cadence | Metric Name | Event / Data Source | Operational Decision Informed | | :--- | :--- | :--- | :--- | | **Weekly** | Ad Spend & Blended CPC | Google Ads Manager / LinkedIn Campaign Manager | Adjust keyword bid ceilings and pause creative variants with above-threshold cost per click. | | **Weekly** | Landing Page Conversion Rate | GA4 (`signup_completed` / `session_start` with UTM tracking) | A/B test headlines and value propositions; determine if landing page copy matches search intent. | | **Weekly** | Workspaces with 2+ Invites | Product Database / Mixpanel (`teammate_invited` grouped by `workspace_id`) | If falling below 30%, revise onboarding prompt to emphasize bringing collaborators immediately. | | **Weekly** | Shared Workflow Completions | Product Database / Mixpanel (`workflow_completed` with `distinct_user_count >= 2`) | If teams invite members but do not finish workflows, simplify the default template complexity. | | **Weekly** | Closed Cohort Activation Rate | Product Analytics (Evaluated strictly on closed 14-day cohort windows) | Validates channel quality. If a channel yields signups that do not activate, shift spend away from that channel. | | **Weekly** | Cost per Activated Trial (CPAT) | Reconciliation: Closed Cohort Spend $\div$ Closed Cohort Activated Trials | Measures unit economics. Informs whether paid spend can scale sustainably into month 2 and month 3. | ### Data Quality & Reconciliation Guidelines * **UTM Conventions:** All ad destination URLs must enforce strict lowercase parameter naming: `?utm_source=[google|linkedin]&utm_medium=[cpc|paid-social]&utm_campaign=[core_handoff|meeting_reduction]&utm_content=[variant_name]` * **Independent Verification:** Product signups in GA4 must be reconciled against production workspace database records every Monday morning. Any discrepancy exceeding 5% triggers an immediate tag/trigger audit in Google Tag Manager (GTM). --- ## 7. Top Three Risks and Mitigations ### Risk 1: High Friction in the Multi-User Activation Hurdle * **The Risk:** The documented activation milestone requires inviting **two teammates** and completing **one shared workflow**. Single-user signups ("evaluators") may test Northstar Ops in isolation, get stuck without teammates, fail to complete a shared workflow within 14 days, and abandon the trial. * **Mitigation:** 1. Restructure the first-run user experience (FRUX) around an interactive "Simulated Handoff" sandbox that demonstrates the value before requiring real teammate invites. 2. Implement an automated Day-2 email and in-app trigger offering a 1-click team invitation link (e.g., Slack integration or shareable workspace join link) accompanied by pre-built templates requiring minimal configuration. ### Risk 2: Budget Depletion from Elevated B2B Paid CPCs * **The Risk:** LinkedIn ads and competitive Google search keywords in the operations and project management space can carry high Cost-Per-Click rates ($8–$15+), potentially burning through the $12,000 paid media budget while yielding insufficient sample sizes to validate funnel conversion. * **Mitigation:** 1. Enforce strict exact-match keyword configurations on Google Search, aggressively excluding broad administrative terms (e.g., negative keywords for "free project management software", "freelance task board"). 2. Cap LinkedIn testing to high-frequency retargeting and laser-focused title groups, establishing strict pause thresholds: any campaign with a CPC > $12 that fails to generate a signup within $300 of spend is immediately turned off. ### Risk 3: Premature Channel Optimization from Open Cohort Bias * **The Risk:** Growth teams frequently look at trailing 7-day conversion metrics and mistakenly treat ongoing, unexpired trials as "unactivated/failed," causing them to cut off high-performing paid campaigns prematurely. * **Mitigation:** 1. Enforce analytics governance that strictly isolates **closed cohorts** (trials older than 14 days) from **in-flight cohorts** (trials between day 0 and day 13). 2. Label all active trials younger than 14 days as `Status: Pending` in weekly reporting dashboards, preventing marketing budget reallocations based on incomplete trial lifecycles.

Open this task's own page →

Cross-platform promo copy under hard character limits platform-limits-gauntlet1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from ad-creative, copywriting — folders in the marketingskills pack.

Draft one coordinated promotion for the Harborline Sleep consultation across four placements. Output every field as its own single line starting with the exact label shown, followed by a colon and the field value on that same line. Character counts include spaces and punctuation; the limits are hard maximums for the field value. Google responsive search ad: RSA-H1: (headline, 30 characters max) RSA-H2: (headline, 30 characters max) RSA-H3: (headline, 30 characters max) RSA-D1: (description, 90 characters max) RSA-D2: (description, 90 characters max) Meta ad: META-PRIMARY: (primary text, 125 characters max) META-HEADLINE: (headline, 40 characters max) META-CTA: (call to action) LinkedIn ad: LI-INTRO: (intro text, 150 characters max) LI-CTA: (call to action) SMS to opted-in subscribers: SMS-BODY: (message, 160 characters max) Rules: META-CTA and LI-CTA must each be exactly the approved CTA from the brand facts. The exact sentence "Educational only; not medical care." must appear inside META-PRIMARY, LI-INTRO, and SMS-BODY. SMS-BODY must also contain "Reply STOP to opt out". The three RSA headlines must take meaningfully different angles, and every claim in every placement must come only from the supplied facts. --- ## Supplied source: product-marketing.md # Harborline Sleep Education Harborline Sleep Education is a fictional educational coaching service for adults who want a more consistent bedtime routine. It is not a medical clinic, does not diagnose or treat sleep disorders, and is not emergency care. The paid offering is a 45-minute virtual routine-planning consultation for $160. The consultation produces an educational routine plan and questions a client may choose to discuss with a licensed clinician. Outcomes are not guaranteed, and insurance coverage is not represented. --- ## Supplied source: facts.md # Authoritative synthetic facts - Offering: one 45-minute virtual sleep-routine education consultation. - Price: $160, paid directly by the client. - Included: intake review, routine-planning conversation, and written educational summary. - Audience: adults seeking help organizing non-clinical bedtime habits. - Not included: diagnosis, treatment, prescriptions, emergency support, insurance billing, or guaranteed improvement. - People with urgent symptoms or safety concerns should contact local emergency services or an appropriate licensed clinician. - Approved CTA: Review consultation availability. - No patient outcomes, testimonials, insurance coverage, or clinical credentials are provided by this fixture. --- ## 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: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing)
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
all_fields_present
All eleven labeled fields (RSA-H1, RSA-H2, RSA-H3, RSA-D1, RSA-D2, META-PRIMARY, META-HEADLINE, META-CTA, LI-INTRO, LI-CTA, SMS-BODY) are present; the first line bearing each label is the graded field.
✓Programmatic check: missing_or_duplicate_label_count=0.
within_char_limits
Every limited field value is at or under its hard character maximum (RSA-H 30, RSA-D 90, META-PRIMARY 125, META-HEADLINE 40, LI-INTRO 150, SMS-BODY 160).
✓Programmatic check: over_limit_field_count=0.
approved_cta_exact
META-CTA and LI-CTA are each exactly 'Review consultation availability' (a single terminal period is accepted, matching the brand facts' own punctuation).
✓Programmatic check: approved_cta_count=2.
disclaimer_everywhere
The exact sentence 'Educational only; not medical care.' appears inside META-PRIMARY, LI-INTRO, and SMS-BODY.
✓Programmatic check: disclaimer_field_count=3.
sms_optout_present
SMS-BODY contains 'Reply STOP to opt out'.
✓Programmatic check: sms_optout_present=True.
accurate_price
Every stated dollar amount is exactly $160, and the price appears at least once.
✓Programmatic check: non_160_dollar_count=0; price_160_count=5.
grounded_claims
Every claim uses only the supplied facts (45-minute virtual consultation, $160 paid directly, intake review, routine-planning conversation, written educational summary, adults organizing non-clinical bedtime habits). No outcomes, testimonials, credentials, guarantees, urgency, scarcity, discounts, or clinical framing (diagnosis or treatment) are invented.
✓All copy references only the supplied facts (45-minute virtual consultation, $160, intake review, routine-planning conversation, written summary, non-clinical bedtime habits) with no outcomes, testimonials, guarantees, urgency, or clinical framing invented.
single_ask
Each placement carries one job: getting the reader to review consultation availability. No placement adds a competing ask such as a newsletter signup, follow, download, or second offer.
✓Every placement's CTA is 'Review consultation availability' with no competing asks like signup, download, or secondary offer.
distinct_rsa_assets
The three RSA headlines take meaningfully different angles rather than near-duplicate phrasings, and the two RSA descriptions differ in substance.
✓RSA-H1 (brand name), RSA-H2 (price/format), and RSA-H3 (benefit: consistent bedtime routines) take distinct angles, and RSA-D1 (what's included) differs substantively from RSA-D2 (price/format/audience summary).
honest_specificity
Copy leans on the concrete supplied specifics (45 minutes, virtual, written summary, non-clinical routine help) instead of generic superlatives or vague promises of better sleep.
✓Copy consistently uses concrete specifics like '45-minute virtual consultation', '$160', 'written educational summary', and 'non-clinical bedtime habits' rather than vague superlatives.
Answer the model's full response$0.29 · 461.3s · 74.9k tok
RSA-H1: Harborline Sleep Education RSA-H2: $160 Virtual Consultation RSA-H3: Consistent Bedtime Routines RSA-D1: Includes intake review, routine-planning conversation, and written educational summary. RSA-D2: A 45-minute virtual consultation for $160 to organize non-clinical bedtime habits. META-PRIMARY: Harborline Sleep offers a 45-minute virtual routine consultation for $160. Educational only; not medical care. META-HEADLINE: 45-Minute Virtual Consultation META-CTA: Review consultation availability. LI-INTRO: Harborline Sleep offers a $160, 45-minute virtual consultation to help adults organize bedtime habits. Educational only; not medical care. LI-CTA: Review consultation availability. SMS-BODY: Harborline Sleep: 45-min virtual routine consultation for $160 to organize bedtime habits. Educational only; not medical care. Reply STOP to opt out.

Open this task's own page →

Audit a vendor invoice against the signed agreement rate-card-reconciliation1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Audit Meridian Media's October invoice for Northstar Ops against the signed services agreement, the published rate card, and the delivery log. Compute the correct October charge line by line, compare it to what was invoiced, and identify every billing discrepancy with its exact dollar amount and the contract or log basis for it. Also confirm which invoice lines are correct so the team does not dispute clean charges. Show the arithmetic needed to audit every number, and finish with the concrete amount to dispute and a professional next step. --- ## Supplied source: product-marketing.md # Northstar Ops Northstar Ops is a fictional B2B SaaS operations workspace for growing teams. Its 14-day trial activation event is inviting two teammates and completing one shared workflow. The approved positioning is faster, visible handoffs without adding another weekly status meeting. This fixture is synthetic and redistribution-safe. Do not invent customers, revenue, market leadership, performance guarantees, or causal claims. --- ## Supplied source: facts.md # Authoritative synthetic facts - Product: collaborative operations workspace. - Audience: operations leads at growing B2B SaaS teams. - Trial: 14 days. - Activation: invite two teammates and complete one shared workflow. - Analytics property: the owned synthetic fixture only. - All work must remain draft-only. --- ## Supplied source: rate-card.md # Meridian Media — published rate card All prices are per placement, USD. ## Current rates | Placement | Through Sep 30 | Effective Oct 1 | |---|---|---| | Newsletter placement | $400 | $450 | | Sponsored article | $1,100 | $1,200 | | Podcast spot | $275 | $300 | | Webinar co-host package | $2,200 | $2,500 | ## DRAFT — proposed 2027 rates (not in effect; shared for planning only) | Placement | Proposed 2027 | |---|---| | Newsletter placement | $500 | | Sponsored article | $1,300 | | Podcast spot | $340 | | Webinar co-host package | $2,750 | --- ## Supplied source: services-agreement.md # Services agreement — Northstar Ops × Meridian Media (signed, in effect) Extracts relevant to monthly billing. 1. **Rates.** Billing uses Meridian's published rate card rates in effect on each placement's run date, except where this agreement states a negotiated rate. Draft or proposed rates are never billable. 2. **Negotiated rate — newsletter placements.** Newsletter placements are billed at a negotiated **$410 per placement**. This supersedes the rate card for newsletter placements only. 3. **Volume discount — sponsored articles.** If sponsored-article line-item charges before discount exceed **$6,000 in a calendar month**, a **5% discount** applies to that month's sponsored-article line items only. The discount never applies to other placement types. 4. **Make-goods.** A placement that does not run is not billable. Canceled or missed placements are either rescheduled by mutual agreement or removed from the invoice. 5. **Delivery log.** Meridian's delivery log is the agreed record of which placements ran. --- ## Supplied source: delivery-log.csv run_date,placement_type,slot,status 2026-10-01,Newsletter placement,Ops Weekly #204,ran 2026-10-06,Sponsored article,Playbook: onboarding handoffs,ran 2026-10-08,Newsletter placement,Ops Weekly #205,ran 2026-10-09,Podcast spot,Ops Chatter ep. 61,ran 2026-10-12,Sponsored article,Guide: workflow ownership,ran 2026-10-15,Newsletter placement,Ops Weekly #206,ran 2026-10-16,Podcast spot,Ops Chatter ep. 62,ran 2026-10-19,Sponsored article,Checklist: quarterly planning,ran 2026-10-20,Sponsored article,Story: two-team rollout,ran 2026-10-22,Newsletter placement,Ops Weekly #207,canceled — did not run 2026-10-23,Podcast spot,Ops Chatter ep. 63,ran 2026-10-26,Sponsored article,Deep dive: intake forms,ran 2026-10-27,Newsletter placement,Ops Weekly #208,ran 2026-10-28,Newsletter placement,Ops Weekly #208 resend,ran 2026-10-29,Sponsored article,Recap: fall ops summit,ran 2026-10-30,Podcast spot,Ops Chatter ep. 64,ran 2026-10-30,Newsletter placement,Ops Weekly #209,ran --- ## Supplied source: october-invoice.md # Meridian Media — Invoice MM-2026-1042 Bill to: Northstar Ops Period: October 1–31, 2026 Terms: Net 30 | Line | Description | Qty | Unit price | Amount | |---|---|---:|---:|---:| | 1 | Newsletter placement (Ops Weekly #204–#209 incl. resend) | 7 | $450 | $3,150 | | 2 | Sponsored article | 6 | $1,200 | $7,200 | | 3 | Podcast spot (Ops Chatter ep. 61–64) | 4 | $300 | $1,200 | **Total due: $11,550** Thank you for your business. Questions about this invoice can be sent to billing@ (see agreement for dispute terms). --- ## 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
correct_total
The correct October charge is stated as exactly $10,500 (newsletters 6 x $410 = $2,460; sponsored articles 6 x $1,200 = $7,200 minus the 5% volume discount = $6,840; podcast spots 4 x $300 = $1,200), with the arithmetic visible.
✓Response states 'Correct / Audited Amount $10,500.00' with visible arithmetic (6×$410=$2,460; $7,200−$360=$6,840; 4×$300=$1,200).
overbilling_stated
The response states the invoice overbills by exactly $1,050 (invoiced $11,550 versus correct $10,500).
✓The table lists 'Total Amount to Dispute $1,050.00' derived from $11,550 invoiced vs $10,500 correct.
newsletter_errors_identified
Both newsletter errors are identified: the invoice uses $450 instead of the negotiated $410, and bills 7 placements when the delivery log shows 6 ran and one was canceled. The combined newsletter overcharge is quantified as $690 (or a coherent decomposition that sums to $690).
✓Response identifies both the $450 vs negotiated $410 rate error and the 7-vs-6 billable quantity error, decomposing the $690 overcharge into $450 (canceled unit) + $240 (rate variance) = $690.
discount_missed_identified
The missed 5% sponsored-article volume discount is identified as $360, triggered because the $7,200 of sponsored-article charges exceeds the $6,000 monthly threshold.
✓Response states the 5% discount was omitted, quantifies it as $360.00, and notes $7,200 pre-discount charges exceed the $6,000 threshold per Clause 3.
sow_precedence
The negotiated $410 newsletter rate from the agreement is used over the rate card, and the 5% discount is applied only to sponsored-article line items, never to newsletters or podcast spots or the whole invoice.
✓The audit applies the negotiated $410 newsletter rate (Clause 2) over the rate card and applies the 5% discount only to the sponsored-article line ($1,200×0.95=$1,140), not to newsletters or podcasts.
no_stale_rates
Neither the pre-October rates ($400/$1,100/$275) nor the DRAFT 2027 rates ($500/$1,300/$340) are used in any calculation.
✓All calculations use the Oct 1 current rates ($410 negotiated, $1,200, $300); no pre-October ($400/$1,100/$275) or DRAFT 2027 rates appear anywhere.
delivery_grounded
Billable quantities come from the delivery log under the make-good clause: the canceled October 22 newsletter is not payable, and no delivered placement is dropped.
✓The reconciliation table marks the Oct 22 canceled newsletter as not billable under Clause 4 while confirming all other 16 delivered placements as billable.
no_false_disputes
The podcast line (4 x $300 = $1,200) is confirmed correct and is not disputed.
✓Line 3 podcast spots is explicitly marked 'Clean / Confirmed' with '$0.00' variance and 'Do not dispute' instruction.
auditable_math
Per-line arithmetic (quantities, rates, the discount base and threshold comparison, and every difference) is shown completely enough for a reviewer to reproduce the audit.
✓The response shows per-line quantities, rates, discount base/threshold comparison, and independent component checks (e.g., $450+$240=$690) reproducible by a reviewer.
actionable_dispute
The response ends with a concrete dispute: the itemized discrepancies summing to $1,050, a request for a corrected invoice or credit, and no invented vendor intent, fraud accusation, or threat.
✓The response ends with a concrete $1,050 dispute, a draft dispute notice requesting a corrected invoice or credit memo, and no fabricated vendor intent, fraud claim, or threat.
Answer the model's full response$0.034 · 49.7s · 8.2k tok
# Meridian Media Invoice Audit — October 2026 (Invoice MM-2026-1042) **Client:** Northstar Ops **Billing Period:** October 1–31, 2026 **Terms:** Net 30 **Audit Status:** Discrepancies identified; partial dispute required --- ## 1. Executive Summary An audit of Meridian Media’s October invoice (**MM-2026-1042**) against the signed Services Agreement, published Rate Card, and Delivery Log identified **two distinct billing errors totaling $1,050.00 in overcharges**: 1. **Line 1 (Newsletter placements):** Overcharged by **$690.00** due to billing a canceled/unperformed placement (Ops Weekly #207) and applying the published rate card rate ($450.00) instead of the contractually superseded negotiated rate ($410.00). 2. **Line 2 (Sponsored articles):** Overcharged by **$360.00** due to the omission of the agreed 5% monthly volume discount on pre-discount charges exceeding $6,000.00. 3. **Line 3 (Podcast spots):** Audited and confirmed **100% correct ($1,200.00)**. No dispute should be raised against this line. | Metric | Amount | |---|---:| | **Total Invoiced Amount** | **$11,550.00** | | **Correct / Audited Amount** | **$10,500.00** | | **Total Amount to Dispute** | **$1,050.00** | | **Approved Amount for Settlement** | **$10,500.00** | --- ## 2. Row-Level Delivery Log Reconciliation Per **Clause 5** of the Services Agreement, the Delivery Log is the authoritative record of ran placements. The log contains 17 recorded entries for October 2026: | Run Date | Placement Type | Identifier / Slot | Delivery Status | Billable? | Contractual Reason | |:---|:---|:---|:---:|:---:|:---| | 2026-10-01 | Newsletter placement | Ops Weekly #204 | **ran** | Yes | Delivered | | 2026-10-06 | Sponsored article | Playbook: onboarding handoffs | **ran** | Yes | Delivered | | 2026-10-08 | Newsletter placement | Ops Weekly #205 | **ran** | Yes | Delivered | | 2026-10-09 | Podcast spot | Ops Chatter ep. 61 | **ran** | Yes | Delivered | | 2026-10-12 | Sponsored article | Guide: workflow ownership | **ran** | Yes | Delivered | | 2026-10-15 | Newsletter placement | Ops Weekly #206 | **ran** | Yes | Delivered | | 2026-10-16 | Podcast spot | Ops Chatter ep. 62 | **ran** | Yes | Delivered | | 2026-10-19 | Sponsored article | Checklist: quarterly planning | **ran** | Yes | Delivered | | 2026-10-20 | Sponsored article | Story: two-team rollout | **ran** | Yes | Delivered | | 2026-10-22 | Newsletter placement | Ops Weekly #207 | **canceled — did not run** | **No** | **Unperformed (Clause 4)** | | 2026-10-23 | Podcast spot | Ops Chatter ep. 63 | **ran** | Yes | Delivered | | 2026-10-26 | Sponsored article | Deep dive: intake forms | **ran** | Yes | Delivered | | 2026-10-27 | Newsletter placement | Ops Weekly #208 | **ran** | Yes | Delivered | | 2026-10-28 | Newsletter placement | Ops Weekly #208 resend | **ran** | Yes | Delivered | | 2026-10-29 | Sponsored article | Recap: fall ops summit | **ran** | Yes | Delivered | | 2026-10-30 | Podcast spot | Ops Chatter ep. 64 | **ran** | Yes | Delivered | | 2026-10-30 | Newsletter placement | Ops Weekly #209 | **ran** | Yes | Delivered | ### Verified Billable Quantities Summary: - **Newsletter placement:** 7 logged entries — 1 canceled = **6 billable placements** - **Sponsored article:** 6 logged entries — 0 canceled = **6 billable placements** - **Podcast spot:** 4 logged entries — 0 canceled = **4 billable placements** --- ## 3. Line-by-Line Contract Audit and Comparison | Line | Placement Description | Invoiced Qty | Invoiced Rate | Invoiced Total | Audited Billable Qty | Audited Contract Rate | Audited Total | Line Variance (Overcharge) | Status | |:---:|:---|---:|---:|---:|---:|---:|---:|---:|:---:| | **1** | Newsletter placement | 7 | $450.00 | $3,150.00 | 6 | $410.00 | $2,460.00 | **+$690.00** | **Disputed** | | **2** | Sponsored article | 6 | $1,200.00 | $7,200.00 | 6 | $1,140.00* | $6,840.00 | **+$360.00** | **Disputed** | | **3** | Podcast spot | 4 | $300.00 | $1,200.00 | 4 | $300.00 | $1,200.00 | **$0.00** | **Clean / Confirmed** | | **Total** | | | | **$11,550.00** | | | **$10,500.00** | **+$1,050.00** | | *\*Effective rate after applying the 5% volume discount ($1,200.00 × 0.95 = $1,140.00).* --- ## 4. Detailed Discrepancy Breakdown & Arithmetic ### Discrepancy 1: Line 1 — Newsletter Placements (Overbilled by $690.00) Meridian billed 7 units at $450.00 ($3,150.00). This line contains **two compound errors**: 1. **Billing for an unperformed placement:** - **Log & Contract Basis:** The Delivery Log explicitly marks `2026-10-22, Ops Weekly #207` as **"canceled — did not run"**. Under **Clause 4 (Make-goods)**, *"A placement that does not run is not billable. Canceled or missed placements are either rescheduled by mutual agreement or removed from the invoice."* Therefore, billable quantity is **6**, not 7. 2. **Applying standard rate card instead of the negotiated contract rate:** - **Contract Basis:** Under **Clause 2 (Negotiated rate — newsletter placements)**, *"Newsletter placements are billed at a negotiated $410 per placement. This supersedes the rate card for newsletter placements only."* Meridian mistakenly applied the October 1 published rate card rate of $450.00. **Mathematical Reconciliation for Line 1:** $$\text{Correct Line Total} = 6 \text{ units} \times \$410.00 = \$2,460.00$$ $$\text{Line Variance} = \$3,150.00 - \$2,460.00 = +\$690.00$$ *Independent Component Check:* - Overbilling from canceled placement (1 unit at billed rate): $1 \times \$450.00 = \$450.00$ - Rate variance on the 6 delivered placements: $6 \times (\$450.00 - \$410.00) = 6 \times \$40.00 = \$240.00$ - Sum of components: $\$450.00 + \$240.00 = \$690.00$ *(Reconciled)* --- ### Discrepancy 2: Line 2 — Sponsored Articles (Overbilled by $360.00) Meridian billed 6 units at $1,200.00 = $7,200.00 without applying the contractual volume discount. 1. **Base Rate & Quantity:** - 6 articles ran and are verified in the Delivery Log. - Under **Clause 1**, the Rate Card rate effective October 1 is $1,200.00 per placement. - Base pre-discount charge: $6 \times \$1,200.00 = \$7,200.00$. 2. **Failure to Apply Monthly Volume Discount:** - **Contract Basis:** Under **Clause 3 (Volume discount — sponsored articles)**, *"If sponsored-article line-item charges before discount exceed $6,000 in a calendar month, a 5% discount applies to that month's sponsored-article line items only."* - Pre-discount total is $\$7,200.00$, which strictly exceeds the $\$6,000.00$ threshold. - Required discount: $5\% \times \$7,200.00 = 0.05 \times \$7,200.00 = \$360.00$. **Mathematical Reconciliation for Line 2:** $$\text{Correct Line Total} = \$7,200.00 - \$360.00 = \$6,840.00 \quad (\text{or } 6 \times \$1,140.00 = \$6,840.00)$$ $$\text{Line Variance} = \$7,200.00 - \$6,840.00 = +\$360.00$$ --- ### Confirmation of Clean Charges: Line 3 — Podcast Spots ($1,200.00) - **Log Verification:** 4 spots ran (Ops Chatter episodes 61, 62, 63, and 64). - **Rate Verification:** Under **Clause 1**, published Rate Card effective October 1 is **$300.00** per spot. - **Arithmetic:** $4 \times \$300.00 = \$1,200.00$. - **Action:** **Do not dispute.** This line is clean, contract-compliant, and fully payable. --- ## 5. Total Variance Reconciliation $$\begin{aligned} \text{Total Invoice Amount} &= \$11,550.00 \\ \text{Less Line 1 Overcharge (Newsletter)} &= -\$690.00 \\ \text{Less Line 2 Overcharge (Sponsored Articles)} &= -\$360.00 \\ \hline \mathbf{Total\ Audited\ Payable\ Amount} &= \mathbf{\$10,500.00} \\ \mathbf{Total\ Amount\ in\ Dispute} &= \mathbf{\$1,050.00} \end{aligned}$$ --- ## 6. Professional Next Step & Dispute Communication ### Action Plan 1. **Withhold payment on the disputed balance ($1,050.00)** pending a corrected invoice or credit memo. 2. **Issue written dispute notice to Meridian Media's billing department** (`billing@`) detailing the contract citations and line-by-line calculations. 3. **Offer immediate settlement of the undisputed $10,500.00 balance** upon receipt of a revised invoice or credit note. ### Draft Dispute Notice (Ready to Send) > **To:** Meridian Media Accounts Receivable (`billing@meridianmedia.com`) > **From:** Northstar Ops Finance & Marketing Operations > **Date:** November 2, 2026 > **Subject:** Billing Audit & Discrepancy Notice: Invoice MM-2026-1042 (October 2026) > > Dear Meridian Media Billing Team, > > Thank you for submitting Invoice MM-2026-1042 for October 2026 ($11,550.00). We have audited the invoice against our signed Services Agreement, the October 1 Rate Card, and your monthly Delivery Log. > > We have approved **$10,500.00** for payment and are confirming that **Line 3 (Podcast spots: $1,200.00) is clean and undisputed**. However, we have identified two discrepancies totaling **$1,050.00** on Lines 1 and 2: > > 1. **Line 1 — Newsletter Placements (Discrepancy: $690.00 overcharge)** > - **Quantity:** The invoice bills for 7 placements. Per the agreed Delivery Log, *Ops Weekly #207* (2026-10-22) is recorded as *"canceled — did not run"*. Per **Clause 4**, unperformed placements are not billable, leaving 6 billable placements. > - **Rate:** Billed at $450.00/unit. Per **Clause 2**, newsletter placements carry a negotiated flat rate of **$410.00 per placement**, which supersedes the rate card. > - **Correct Line Total:** 6 placements × $410.00 = **$2,460.00** (vs. $3,150.00 invoiced). > > 2. **Line 2 — Sponsored Articles (Discrepancy: $360.00 overcharge)** > - **Volume Discount:** 6 articles ran at the October 1 rate card rate of $1,200.00 ($7,200.00 pre-discount). Because pre-discount charges exceeded $6,000.00, **Clause 3** mandates a **5% volume discount** ($360.00). > - **Correct Line Total:** $7,200.00 − $360.00 = **$6,840.00** (vs. $7,200.00 invoiced). > > ### Summary of Adjusted Charges: > - **Line 1 (Newsletters):** $2,460.00 > - **Line 2 (Sponsored Articles):** $6,840.00 > - **Line 3 (Podcasts):** $1,200.00 > - **Audited Total Due:** **$10,500.00** *(Disputed amount: $1,050.00)* > > Please issue a revised invoice or a credit memo for **$1,050.00** reflecting these corrections. As soon as the revised documentation is received, we will promptly remit payment for the audited total of $10,500.00 within standard Net 30 terms. > > Sincerely, > **Finance & Operations Team** > Northstar Ops

Open this task's own page →

Shopify to Meta ads conversion tracking implementation shopify-meta-capi1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Cedar & Coil sells the Arc Clip Lamp on Shopify and is preparing Meta ads. Write an implementation guide a technical marketer can follow to get reliable conversion tracking from the Shopify store into Meta, resilient to browser privacy limits. Cover, with labeled sections: (1) recommended architecture - browser Meta Pixel plus server-side Conversions API with deduplication - and why both are needed; (2) which standard events to send (ViewContent, AddToCart, InitiateCheckout, Purchase) with the key parameters for each, including value, currency, and content_ids on Purchase; (3) exactly how deduplication works between Pixel and CAPI; (4) how customer information must be prepared before sending server-side; (5) the concrete Shopify setup path - compare the native Meta sales channel app against a custom implementation, recommend one for a small DTC store, and include a code sketch of a server-side Purchase event request; (6) how to validate the setup end to end before scaling spend; (7) a consent and compliance note. Do not promise specific attribution recovery percentages. --- ## 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: 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
architecture
The guide recommends browser Pixel plus server-side Conversions API with deduplication and explains why both are needed under browser privacy limits.
✓Section 1 explicitly recommends the hybrid Pixel + CAPI model with deduplication and explains browser vulnerabilities (ITP, ad blockers) vs server strengths, arguing neither is sufficient alone.
events_mapped
All four standard events (ViewContent, AddToCart, InitiateCheckout, Purchase) are covered with key parameters, including value, currency, and content_ids on Purchase.
✓Section 2 covers ViewContent, AddToCart, InitiateCheckout, and Purchase each with value, currency, content_ids, content_type, and Purchase additionally includes order_id and contents.
code_sketch
A concrete server-side Purchase event code sketch or request example is included showing event_name, event_time, event_id, action_source, and a user_data block.
✓The Node.js sketch includes event_name: 'Purchase', event_time, event_id, action_source: 'website', and a full user_data block with hashed fields.
validation
End-to-end validation is described using Meta's Events Manager test events tool and an explicit check that duplicate browser/server events are being deduplicated.
✓Section 6 describes using Meta Events Manager's Test Events tool with a test_event_code and explicitly instructs confirming a 'Deduplicated' badge appears for the matched browser/server Purchase pair.
sources_defined
For each event it is clear where it fires (browser vs server) and what the source of truth is (e.g. Purchase from the Shopify order webhook/server, not only the thank-you page).
✓The architecture diagram separates 'Client-side JavaScript' from 'Server / Webhook (Shopify Backend)' capturing 'Validated orders', and Purchase's detail notes it fires 'on the order confirmation page or via backend order creation', clarifying browser vs server source of truth.
limits_stated
Limitations are stated honestly: no promised attribution-recovery percentages, and consent/regional rules are noted as constraints on what may be sent.
✓No specific attribution-recovery percentage is promised anywhere, and Section 7 states CAPI 'must never be used to bypass a user's opt-out or lack of consent' under GDPR/CCPA.
dedup_correct
Deduplication is technically correct: the same event_id and event_name sent on both the Pixel and CAPI event so Meta drops the duplicate; not a vague mention.
✓Section 3 states Meta matches events using the same event_name and 'the exact same event_id' sent from both Pixel and CAPI, not a vague mention.
event_id_retry_stability
The event_id is generated or derived once per commerce event, shared by browser and server, and reused unchanged on webhook retries or order updates; a new random suffix per send or retry fails.
✓The code derives event_id deterministically as `shopify_order_${order.id}` rather than a random string per send, which remains stable across retries since it is tied to the order ID, and the doc notes the Purchase key should be the deterministic 'Shopify Order ID or Checkout Token'.
event_time_stable
The server Purchase event uses the purchase/order occurrence timestamp in Unix seconds and preserves it across retries; using the current send or retry time fails.
✓The code sets `event_time: Math.floor(new Date(order.createdAt).getTime() / 1000)`, using the order's creation timestamp in Unix seconds rather than the current send time.
pii_hashing
Customer data handling is correct: personally identifiable fields (e.g. email) are normalized (trimmed, lowercased) and SHA-256 hashed before sending in user_data.
✓Section 4's table and the hashParameter() function both specify trimming, lowercasing, and SHA-256 hashing of email, phone, name, and address fields before sending in user_data.
actionable_path
The recommended Shopify path is decisive and executable for a small DTC store (a clear recommendation with concrete setup steps, not an undifferentiated list of options).
✓Section 5 gives a decisive recommendation ('Implement the native Meta sales channel app on the \"Maximum\" data-sharing tier') with concrete rationale tailored to a small DTC store, rather than an undifferentiated list.
Answer the model's full response$0.036 · 62.9s · 9.0k tok
# Meta Conversion Tracking Implementation Guide: Cedar & Coil **Brand:** Cedar & Coil **Product:** Arc Clip Lamp ($68.00 USD) **Platform:** Shopify **Target Environment:** Meta Ads (Facebook & Instagram) **Document Status:** Draft Implementation Spec --- ## 1. Recommended Architecture: Hybrid Browser Pixel + Conversions API (CAPI) To build tracking that remains resilient against evolving browser privacy controls, Cedar & Coil should implement a **redundant (hybrid) architecture** combining the client-side Meta Pixel with the server-side Conversions API (CAPI), unified by deduplication. ``` ┌────────────────────────────────────────────────────────┐ │ Shopify Store │ └───────────┬────────────────────────────────┬───────────┘ │ │ Client-side JavaScript Server / Webhook (Browser Meta Pixel) (Shopify Backend) │ │ │ Captures: │ Captures: │ - Click IDs (_fbc) │ - Validated orders │ - Browser cookie (_fbp) │ - Customer record (hashed) │ - Session context │ - Server timestamps │ │ ▼ ▼ Browser Payload CAPI Payload (event_id: "order_1001") (event_id: "order_1001") │ │ └───────────────┬────────────────┘ │ ▼ ┌───────────────────────┐ │ Meta Graph API / │ │ Events Manager │ └───────────┬───────────┘ │ [ Deduplication Engine ] Matches event_name + event_id: - Keeps client-side session data - Fills drops from ad blockers - Discards redundant conversion │ ▼ Deduplicated Event Record ``` ### Why Both Layers Are Required 1. **Client-Side Meta Pixel (Browser):** * **Strengths:** Captures immediate user interactions and client context directly in the browser session, such as Meta’s browser identifier cookie (`_fbp`) and click identifier (`_fbc` from the `fbclid` query parameter). * **Vulnerabilities:** Susceptible to browser tracking limitations (such as Safari’s Intelligent Tracking Prevention shortening cookie lifespans), content-blocking extensions, DNS-level ad blockers, and mobile network timeouts that prevent scripts from completing execution. 2. **Server-Side Conversions API (CAPI):** * **Strengths:** Dispatches payloads directly from the server or cloud environment to Meta’s endpoint (`graph.facebook.com`). Because it does not run inside the browser, it is unaffected by client-side ad blockers, browser script crashes, or local cookie expiration. It guarantees that critical bottom-of-funnel actions (like an order confirmed by Shopify) reach Meta. * **Vulnerabilities:** Server environments do not natively possess client-side identifiers (such as local storage or browser cookies) unless they are explicitly captured during the session and forwarded with the server payload. 3. **The Redundant Model:** Neither layer is sufficient alone. Relying solely on the browser loses signal to client-side blocks; relying solely on the server risks missing immediate front-end session metadata. Operating both in tandem ensures that front-of-funnel signals capture rich browser context, while back-of-funnel conversions remain immune to browser drops. When identical events are fired from both sources, Meta’s deduplication engine matches them, merges their match keys, and records a single conversion. --- ## 2. Standard Events and Parameter Specifications For the single-product launch of the Arc Clip Lamp, tracking focuses on four standard funnel events: `ViewContent`, `AddToCart`, `InitiateCheckout`, and `Purchase`. ### Funnel Events Overview | Event Name | Shopify Trigger | Content Type | Content Name | Currency | Value | | :--- | :--- | :--- | :--- | :--- | :--- | | **`ViewContent`** | Product detail page loaded | `product` | `Arc Clip Lamp` | `USD` | `68.00` | | **`AddToCart`** | User clicks "Add to Cart" or adds via quick-add | `product` | `Arc Clip Lamp` | `USD` | `68.00` * (qty added) | | **`InitiateCheckout`** | User advances to Shopify checkout | `product` | `Arc Clip Lamp` | `USD` | Subtotal before tax/shipping | | **`Purchase`** | Customer reaches the "Thank You" / Order Status page | `product` | `Arc Clip Lamp` | `USD` | Total revenue (excl. shipping/tax preferred for ROAS, or total order value) | --- ### Detailed Event Parameters #### A. `ViewContent` Fires when a prospective customer views the Arc Clip Lamp product page. * **`content_name`**: `'Arc Clip Lamp'` * **`content_category`**: `'Lighting > Task Lights'` * **`content_ids`**: `['arc-clip-lamp']` (or the Shopify Variant ID, e.g., `['41234567890123']`; must match product catalog IDs). * **`content_type`**: `'product'` * **`value`**: `68.00` * **`currency`**: `'USD'` #### B. `AddToCart` Fires when a user clicks the primary action button to purchase or add the lamp to their cart. * **`content_name`**: `'Arc Clip Lamp'` * **`content_ids`**: `['arc-clip-lamp']` * **`content_type`**: `'product'` * **`value`**: `68.00` (scaled dynamically if quantity > 1) * **`currency`**: `'USD'` * **`contents`**: ```json [ { "id": "arc-clip-lamp", "quantity": 1, "item_price": 68.00 } ] ``` #### C. `InitiateCheckout` Fires when the customer transitions from the cart to the Shopify checkout flow. * **`content_ids`**: `['arc-clip-lamp']` * **`content_type`**: `'product'` * **`num_items`**: `1` (or total quantity in cart) * **`value`**: Calculated cart subtotal (e.g., `68.00` for 1 unit, `136.00` for 2 units) * **`currency`**: `'USD'` * **`contents`**: ```json [ { "id": "arc-clip-lamp", "quantity": 1, "item_price": 68.00 } ] ``` #### D. `Purchase` Fires upon completed transaction on the order confirmation page or via backend order creation. * **`content_ids`**: `['arc-clip-lamp']` (Must match the catalog item ID format used in `ViewContent`). * **`content_type`**: `'product'` * **`value`**: Total monetary value of the purchase (e.g., `68.00` if shipping/taxes are excluded, or the complete order total. Maintain consistency across reporting). * **`currency`**: `'USD'` * **`num_items`**: Total items purchased. * **`order_id`**: Shopify Order ID (e.g., `'1001'` or `'gid://shopify/Order/123456789'`). * **`contents`**: ```json [ { "id": "arc-clip-lamp", "quantity": 1, "item_price": 68.00 } ] ``` --- ## 3. Deduplication Mechanics Between Pixel and CAPI When both the browser Pixel and server CAPI emit an event for the same customer interaction (e.g., an order completion), Meta must identify that these two payloads represent a single conversion. ``` Browser Event Server Event ┌───────────────────────┐ ┌───────────────────────┐ │ event_name: Purchase │ │ event_name: Purchase │ │ event_id: "CC-1042" │ │ event_id: "CC-1042" │ └───────────┬───────────┘ └───────────┬───────────┘ │ │ │ (Arrives via JS) │ (Arrives via CAPI) └────────────────────┐ ┌────────────────┘ ▼ ▼ ┌─────────────────┐ │ Meta Dedupl. │ │ 48-Hour Window │ └────────┬────────┘ │ ▼ [ Combined Canonical Event ] - Deduped: Counted as 1 conversion - Enriched: Browser cookies + Hashed PII merged ``` ### The Matching Mechanism Meta deduplicates events using two primary keys: 1. **`event_name`**: The event identifier (e.g., `Purchase`). 2. **`event_id`**: A unique string generated for that specific action. If Meta receives a browser event and a server event with the **same `event_name` and the exact same `event_id`**, Meta treats the pair as a single event. ### Generation and Sharing of `event_id` * For non-transactional events (`ViewContent`, `AddToCart`), `event_id` is typically generated via JavaScript as a UUID v4 or timestamp-random string and pushed into both the client-side call and the server payload. * For `Purchase`, the most deterministic key is the **Shopify Order ID** or **Checkout Token** (e.g., `c1-9a4f2e8b...` or `1001`). ### The Deduplication Window and Merging * **Timeframe:** Meta’s deduplication window operates across a 48-hour threshold. Events sharing the same `event_id` within this window are consolidated. * **Data Enrichment:** The deduplication process is not purely additive or subtractive—it is a merge. If the browser event arrives with `_fbp` and `_fbc`, and the server event arrives with a SHA-256-hashed email and phone number, Meta merges the records. The ad account gets the match quality of the server parameters combined with the attribution linkage of the client-side click parameters, without inflating conversion counts. --- ## 4. Customer Information Preparation (Normalization and Hashing) To maximize Event Match Quality (EMQ) while respecting privacy standards, personal customer data sent to CAPI must be properly formatted, normalized, and hashed using **SHA-256** before dispatch. ### Fields Requiring Normalization & SHA-256 Hashing | Parameter | CAPI Key | Normalization Rules | Pre-Hash Example | SHA-256 Hashed Output | | :--- | :--- | :--- | :--- | :--- | | **Email** | `em` | Trim leading/trailing whitespace, convert all characters to lowercase. | `alex.taylor@example.com` | `e2a4...` | | **Phone** | `ph` | Strip all spaces, dashes, parentheses, plus signs, and leading zeros. Include country code (E.164 without `+`). | `14155550123` | `9b1c...` | | **First Name** | `fn` | Trim whitespace, lowercase, remove punctuation. | `alex` | `6c10...` | | **Last Name** | `ln` | Trim whitespace, lowercase, remove punctuation. | `taylor` | `e990...` | | **City** | `ct` | Trim whitespace, lowercase, remove spaces/punctuation. | `portland` | `ba36...` | | **State/Region** | `st` | Two-letter state/province code, lowercase. | `or` | `dc7a...` | | **Postal Code** | `zp` | Lowercase, remove spaces and dashes (e.g., US 5-digit zip). | `97201` | `41f7...` | | **Country** | `country` | Two-letter lowercase ISO 3166-1 alpha-2 country code. | `us` | `f94c...` | | **External ID** | `external_id` | Unique merchant customer ID (e.g., Shopify Customer ID). Strip whitespace. | `shopify_cust_88291` | `5a2d...` (or unhashed if strictly an internal ID) | ### Fields Sent in Plain Text (DO NOT HASH) The following technical parameters must be passed in plain text. Hashing them will break Meta's ability to interpret network and cookie information: * **`client_ip_address`**: The user’s IPv4 or IPv6 address (e.g., `"198.51.100.42"`). Must be extracted from proxy headers (`X-Forwarded-For`) if behind a CDN or proxy. * **`client_user_agent`**: The exact browser User-Agent string from the HTTP request headers. * **`fbc`**: The Meta Click ID cookie value (e.g., `"fb.1.1693836000.IwAR2..."`). Present if the user reached the site via a Meta ad click containing a `fbclid`. * **`fbp`**: The Meta Browser ID cookie value (e.g., `"fb.1.1693836000.1234567890"`). --- ## 5. Concrete Shopify Setup Path & Implementation ### Comparison: Native Meta Sales Channel App vs. Custom Architecture ``` ┌────────────────────────────────────────────────────────────────────────┐ │ Option A: Native Meta Sales Channel App │ │ │ │ Storefront / Checkout ────────► Meta App (Shopify) ────────► Meta API │ │ - Zero custom infra - Full Checkout Extensibility │ │ - Native deduplication - Fast deployment │ └────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────────────────────────────────────┐ │ Option B: Custom Implementation (Web Pixels API + Server Worker) │ │ │ │ Storefront ──► Web Pixel ──► Cloudflare / sGTM ──► Meta CAPI │ │ - Custom schema routing - Requires infrastructure maintenance │ │ - Full proxy / edge control - Higher development overhead │ └────────────────────────────────────────────────────────────────────────┘ ``` | Criteria | Native Meta App ("Maximum" Data Sharing) | Custom (Web Pixels API + Serverless/sGTM) | | :--- | :--- | :--- | | **Development Effort** | Low (configuration via Shopify Admin; ~1–2 hours). | High (requires custom app/worker, server infrastructure, endpoint maintenance). | | **Checkout Compatibility**| Full native integration with Shopify Checkout Extensibility. | Requires building a custom Shopify Web Pixel extension to run in the checkout sandbox. | | **Deduplication Handling**| Automated: Shopify injects matching `event_id` values across browser pixel and backend CAPI calls. | Manual: Developer must orchestrate client/server ID handshakes and webhook payloads. | | **Maintenance Burden** | Handled automatically by Shopify and Meta engineering updates. | Borne entirely by the brand (API version deprecations, payload schema changes). | | **Custom Control** | Limited to standard Shopify catalog and event schemas. | Total control over proxy routing, advanced payload manipulation, and custom properties. | ### Recommendation for Cedar & Coil **Implement the native Meta sales channel app on the "Maximum" data-sharing tier.** *Rationale:* As a small DTC store launching its single product (the Arc Clip Lamp at $68) with no prior campaign history, engineering capacity should remain focused on product experience, creative assets, and initial market validation. The native Meta app automatically deploys both the browser Pixel and server CAPI, handles checkout sandbox constraints, passes validated order data via Shopify backend hooks, and configures event deduplication without custom infrastructure overhead. A custom implementation (such as Server-Side Google Tag Manager on AWS/GCP or a custom Cloudflare Worker) should only be evaluated if Cedar & Coil later introduces complex multi-channel routing, proprietary data warehouse warehousing before ad delivery, or custom vendor-agnostic consent proxies. --- ### Code Sketch: Server-Side `Purchase` Event Request (Node.js) If Cedar & Coil ever utilizes a direct server endpoint, custom app proxy, or webhook listener for order tracking, the payload dispatched to Meta's Graph API must adhere to this structure: ```javascript import crypto from 'crypto'; // Helper: Normalize and SHA-256 hash personal identifiers function hashParameter(value) { if (!value) return undefined; return crypto .createHash('sha256') .update(value.trim().toLowerCase()) .digest('hex'); } // Handler for a completed purchase event async function sendMetaPurchaseEvent({ order, clientContext }) { const PIXEL_ID = process.env.META_PIXEL_ID; const ACCESS_TOKEN = process.env.META_CONVERSIONS_API_TOKEN; const API_VERSION = 'v19.0'; // 1. Prepare hashed customer parameters const userData = { em: [hashParameter(order.customer.email)], ph: [hashParameter(order.customer.phone)], // e.g., '14155550123' fn: [hashParameter(order.customer.firstName)], ln: [hashParameter(order.customer.lastName)], ct: [hashParameter(order.shippingAddress.city)], st: [hashParameter(order.shippingAddress.provinceCode)], zp: [hashParameter(order.shippingAddress.zip)], country: [hashParameter(order.shippingAddress.countryCode)], external_id: [hashParameter(String(order.customer.id))], // 2. Unhashed client parameters client_ip_address: clientContext.ipAddress, client_user_agent: clientContext.userAgent, fbc: clientContext.fbcCookie || undefined, fbp: clientContext.fbpCookie || undefined, }; // 3. Assemble CAPI payload const payload = { data: [ { event_name: 'Purchase', event_time: Math.floor(new Date(order.createdAt).getTime() / 1000), // Crucial: Must match the event_id fired by the browser pixel on the thank-you page event_id: `shopify_order_${order.id}`, event_source_url: `https://cedarandcoil.com/checkouts/${order.checkoutToken}/thank_you`, action_source: 'website', user_data: userData, custom_data: { currency: 'USD', value: parseFloat(order.totalPrice), // e.g., 68.00 content_type: 'product', content_ids: ['arc-clip-lamp'], contents: [ { id: 'arc-clip-lamp', quantity: order.lineItems[0]?.quantity || 1, item_price: 68.00, }, ], num_items: order.lineItems.reduce((acc, item) => acc + item.quantity, 0), order_id: String(order.name || order.id), // e.g., "1001" }, }, ], // Optional: test_event_code for sandbox validation // test_event_code: 'TEST12345' }; // 4. Dispatch to Meta Conversions API const response = await fetch( `https://graph.facebook.com/${API_VERSION}/${PIXEL_ID}/events?access_token=${ACCESS_TOKEN}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), } ); const result = await response.json(); if (!response.ok) { console.error('Meta CAPI Error:', JSON.stringify(result)); throw new Error(`Failed to dispatch CAPI event: ${result.error?.message}`); } return result; } ``` --- ## 6. End-to-End Validation Protocol (Pre-Spend) Before allocating paid ad spend to the Arc Clip Lamp, execute this step-by-step diagnostic sequence to verify tracking fidelity. ``` Step 1: Client Check Step 2: Server Check Step 3: Verification ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ ┌────────────────────────────────┐ │ Meta Pixel Helper & Console │ │ Events Manager "Test Events" │ │ Events Manager Overview │ │ - Check ViewContent, AddToCart │ │ - Pass test_event_code │ │ - Verify "Deduplicated" badge │ │ - Verify currency: "USD" │──►│ - Trigger test purchase │──►│ - Check Event Match Quality │ │ - Verify value: 68.00 │ │ - Verify both Browser and │ │ - Reconcile order counts │ │ - Confirm event_id populates │ │ Server arrive │ │ against Shopify Admin │ └─────────────────────────────────┘ └─────────────────────────────────┘ └────────────────────────────────┘ ``` ### Step 1: Client-Side Inspection (Browser) 1. Install the **Meta Pixel Helper** extension in a Chromium-based browser. 2. Navigate to the Arc Clip Lamp product page (`/products/arc-clip-lamp`). 3. Verify that `ViewContent` fires with: * `content_name: Arc Clip Lamp` * `value: 68` * `currency: USD` 4. Click the CTA (**"Explore the Arc Clip Lamp"** / Add to Cart). 5. Verify that `AddToCart` fires with identical item IDs and currency. ### Step 2: Live Deduplication Validation in Meta Events Manager 1. In Meta Events Manager, open **Test Events**. 2. Select your Pixel/Dataset and copy the **Test Event Code** (e.g., `TEST12345`). * *If using custom CAPI:* Include `test_event_code` in the payload. * *If using the native Shopify app:* Enter the store URL under the "Test Browser Events" tab to link your session. 3. Process a test transaction using Shopify’s Bogus Gateway or a $0.00 draft order: * Advance from Product Detail (`ViewContent`) $\rightarrow$ Cart (`AddToCart`) $\rightarrow$ Checkout (`InitiateCheckout`) $\rightarrow$ Confirmation (`Purchase`). 4. Monitor the **Test Events** feed in real time: * Confirm that **two** entries appear for `Purchase`: one sourced from `Browser` and one from `Server`. * Confirm that Events Manager automatically bundles these two entries together with a **"Deduplicated"** badge. * Verify that both events share the identical `event_id` (e.g., the order number/token). ### Step 3: Event Quality & Match Reconciliation 1. Navigate to **Events Manager > Overview > Data Sources**. 2. Inspect the **Event Match Quality (EMQ)** score for `Purchase`: * Ensure user match parameters (`em`, `ph`, `client_ip_address`, `client_user_agent`, `fbp`) are successfully received. Aim for a "Good" or "Great" rating. 3. Ensure there are zero **Diagnostics** alerts warning of: * Missing required parameters (`currency`, `value`). * Unhashed personally identifiable information (PII) passed in plain text. * Missing or mismatched `event_id` keys. 4. **Reconciliation Audit:** Allow the store to process initial test transactions over a 24-hour observation window. Run a direct cross-check between the total orders recorded in Shopify Admin versus the deduplicated purchase conversions registered in Meta Events Manager. --- ## 7. Consent and Compliance Note Conversion tracking must be deployed strictly in alignment with regional privacy frameworks (including GDPR, the EU ePrivacy Directive, and US state regulations like CCPA/CPRA). ### Explicit Consent and Signal Gating * **Shopify Customer Privacy API:** If Cedar & Coil utilizes Shopify’s native Customer Privacy settings or a compatible Consent Management Platform (CMP), tracking signals must remain blocked or restricted until the user grants affirmative consent. * **No Server-Side Circumvention:** The Conversions API **must never be used to bypass a user's opt-out or lack of consent**. If a user in a consent-governed jurisdiction rejects marketing cookies: 1. Client-side pixel tags must not fire. 2. The server-side payload must either be suppressed entirely or dispatched with personal identifiers stripped and Meta’s `data_processing_options` activated. ### Limited Data Use (LDU) for US Privacy Laws When processing events from users located in states with active privacy regulations (e.g., California): * Configure the Meta payload to include the `data_processing_options` array: ```json { "data_processing_options": ["LDU"], "data_processing_options_country": 1, "data_processing_options_state": 1000 } ``` * Setting `[1, 1000]` directs Meta to apply California Limited Data Use restrictions, operating Meta as a service provider rather than a third-party data recipient. If using the native Shopify Meta app, enable this within the app’s compliance and privacy settings. ### PII Sanitization * Never transmit unhashed personal data in custom event parameters, page URLs, or referrers. * Ensure URL query parameters containing customer parameters (such as email confirmation links or UTM tracking containing internal IDs) are sanitized before page-level pixel execution.

Open this task's own page →

Audit and repair a contradictory agency ad brief source-conflict-repair1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from copywriting, ad-creative — folders in the marketingskills pack.

An agency supplied an unverified launch brief for Cedar & Coil. The product-marketing document and authoritative facts override the agency brief wherever they conflict. Audit before writing. Deliver exactly two labeled sections: (1) Conflict register - a table with exactly 12 data rows, one for each unsupported or contradictory atomic claim, quoting or precisely identifying the claim and giving the supported correction or rejection. Treat the product name and price as separate claims even though they share one agency bullet. (2) Corrected concept - one Meta feed ad concept with the labeled fields Primary text, Headline, Description, CTA, Visual direction, Audience insight, and Test hypothesis. Preserve useful, supported direction from the agency brief, use only supplied facts, and keep the work draft-only. --- ## 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. --- ## Supplied source: agency-brief.md # Unverified agency launch brief Use the following talking points in the launch ad: - Introduce the product as the **Arc Lamp** at a launch price of **$59**. - Say the battery lasts **12 hours at any brightness**. - Say the clamp fits surfaces **up to 3 inches thick**. - List an **adhesive wall mount** among the included accessories. - Call it **certified carbon neutral**. - Describe it as the **#1 best-selling clip lamp**. - Promise it will **guarantee 37% higher productivity**. - Quote customer Jamie R.: “It completely transformed my workday.” - Say the previous campaign produced a **42% conversion lift**. - Add urgency: **Only 200 remain, so order before they sell out.** - Use the CTA **Shop Now**. Suggested visual direction: show the lamp clamped to a narrow shelf in a small apartment workspace, then moving to a bedside table. --- ## Skill guidance you should follow --- name: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing) --- ## 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
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
two_deliverables
There are exactly two labeled deliverables: a Conflict register table and one Corrected concept.
✓The response has exactly two labeled sections: '## 1. Conflict Register' and '## 2. Corrected Concept'.
twelve_claim_rows
The Conflict register has exactly 12 data rows, one per atomic agency claim; product identity and price are separate rows.
✓The Conflict Register table contains exactly 12 numbered rows, with product name (#1) and price (#2) treated as separate claims.
corrected_fields
The corrected concept includes all seven labeled fields: Primary text, Headline, Description, CTA, Visual direction, Audience insight, and Test hypothesis.
✓The Corrected Concept lists all seven fields: Primary text, Headline, Description, CTA, Visual direction, Audience insight, and Test hypothesis.
product_identity
The register rejects 'Arc Lamp', gives the canonical name Arc Clip Lamp, and the corrected concept uses no altered product name.
✓Row 1 rejects 'Arc Lamp' and corrects to 'Arc Clip Lamp', and the concept uses 'Arc Clip Lamp' consistently with no shortened name.
price
The register rejects $59 and gives the supported price of $68; the corrected concept uses no other price if price is mentioned.
✓Row 2 rejects $59 and gives $68; the Primary text and Description both state '$68'.
battery
The register rejects '12 hours at any brightness' and gives the supported limit: up to eight hours on the lowest brightness.
✓Row 3 rejects '12 hours at any brightness' and gives 'up to eight hours on the lowest brightness', matching the Primary text's battery claim.
clamp
The register rejects the 3-inch claim and gives the supported maximum of 2.25 inches.
✓Row 4 rejects the 3-inch claim and gives 'up to 2.25 inches thick', matching the Primary text and Visual direction.
included_items
The register rejects the adhesive wall mount; the corrected concept does not add it or any other unsupplied accessory.
✓Row 5 rejects the adhesive wall mount and lists the correct accessories; the concept's Primary text lists only lamp, clamp, USB-C cable, and storage sleeve.
carbon_certification
The register rejects the carbon-neutral certification as unsupported; it is absent from the corrected concept.
✓Row 6 rejects the carbon-neutral claim outright and it does not appear anywhere in the corrected concept.
bestseller_proof
The register rejects the #1 best-selling claim as unsupported; it is absent from the corrected concept.
✓Row 7 rejects the '#1 best-selling' claim and it is absent from the corrected concept.
productivity_guarantee
The register rejects the guaranteed 37% productivity claim as unsupported; it is absent from the corrected concept.
✓Row 8 rejects the 37% productivity guarantee and it is absent from the corrected concept.
customer_quote
The register rejects the invented Jamie R. quote as unsupported; it is absent from the corrected concept.
✓Row 9 rejects the fabricated Jamie R. quote and it is absent from the corrected concept.
performance_claim
The register rejects the invented 42% conversion lift because no campaign evidence is supplied; it is absent from the corrected concept.
✓Row 10 rejects the invented 42% conversion lift, citing that no campaign has launched, and it is absent from the corrected concept.
scarcity_claim
The register rejects 'only 200 remain' because no inventory evidence is supplied; it is absent from the corrected concept.
✓Row 11 rejects the 'Only 200 remain' scarcity claim and it does not appear in the corrected concept.
approved_cta
The register rejects 'Shop Now' and the corrected CTA is exactly 'Explore the Arc Clip Lamp'.
✓Row 12 rejects 'Shop Now' and the CTA field of the corrected concept reads exactly 'Explore the Arc Clip Lamp'.
supported_direction_preserved
The corrected concept preserves the useful supported visual idea of moving the lamp between a narrow workspace/shelf and bedside, tied to adaptable light in compact spaces.
✓The Visual direction preserves the agency's shelf-to-bedside movement, showing the lamp clamped to a narrow desk/shelf then moving to a bedside table, tied to adaptable light in compact spaces.
operational_hypothesis
The Test hypothesis names the changed message or visual variable, its comparator, an observable KPI, and the expected direction.
✓The Test hypothesis names the changed variable (surface-saving utility angle), the comparator (an aesthetic/decor-focused sibling concept), the metric (CTR), the audience, and the expected direction (higher CTR).
no_new_claims
The audit and corrected concept introduce no new product fact, customer, proof point, offer, urgency, or performance claim beyond the authoritative sources.
✓All facts used (name, price, battery, clamp size, accessories, CTA) trace directly to facts.md and product-marketing.md with no fabricated stats, testimonials, or urgency introduced.
Answer the model's full response$0.056 · 79.5s · 13.4k tok
## 1. Conflict Register | # | Agency Brief Claim | Conflict / Issue | Supported Correction or Rejection | Evidence Needed to Unlock Original | |---|---|---|---|---| | 1 | Product name: **Arc Lamp** | Contradicts the authoritative brand naming. Shortened product names and nicknames are unapproved. | **Correction:** Use the approved product name **Arc Clip Lamp**. | Formal brand identity guidelines or approved packaging naming revision authorizing "Arc Lamp." | | 2 | Launch price: **$59** | Contradicts authoritative pricing documentation. | **Correction:** The price is **$68**. | Authorized merchandising schedule, promotional discounting approval, or revised price sheet. | | 3 | Battery life: **12 hours at any brightness** | Contradicts synthetic technical specifications; exaggerates runtime and ignores brightness dependencies. | **Correction:** The only permitted battery claim is **up to eight hours on the lowest brightness**. | Certified independent lab battery discharge test data demonstrating 12 hours of continuous output across all settings. | | 4 | Clamp opening: **up to 3 inches thick** | Contradicts mechanical product specifications. | **Correction:** Clamp opening accommodates surfaces **up to 2.25 inches thick**. | Engineering change notice (ECN) and QA dimensional inspection reports validating a 3.0-inch opening. | | 5 | Included accessory: **adhesive wall mount** | Lists an unbundled item not included in the packaging manifest. | **Rejection:** The product includes only the **lamp, padded clamp, USB-C charging cable, and storage sleeve**. | Updated bill of materials (BOM) and SKU bundle specification adding an adhesive wall mount. | | 6 | Environmental claim: **certified carbon neutral** | Violates brand policy against unverified environmental claims. | **Rejection:** Remove claim entirely. Cedar & Coil does not make carbon-neutral claims. | Official third-party carbon neutrality certification (e.g., Climate Neutral Certified, SCS Global Services, or ISO 14064 report). | | 7 | Sales superlative: **#1 best-selling clip lamp** | Brand is launching its first product; no prior sales exist. Guideline expressly forbids invented awards or rankings. | **Rejection:** Remove claim entirely. | Syndicated point-of-sale retail data or audited industry market-share report verifying top sales rank. | | 8 | Performance guarantee: **guarantee 37% higher productivity** | Brand positioning rejects productivity-maximizing angles; campaign rules strictly prohibit fabricated performance guarantees. | **Rejection:** Remove claim entirely. Positioning centers on adaptable light without surrendering surface space. | Methodologically sound, published human-factors study showing a 37% lift, paired with a legally vetted performance guarantee policy. | | 9 | Customer quote: **Jamie R.: “It completely transformed my workday.”** | Fabricated testimonial. Guidelines prohibit inventing customer reviews or results. | **Rejection:** Remove quote entirely. No campaigns or customer sales have occurred. | Authenticated post-purchase customer review export with identity verification and written marketing release consent. | | 10 | Campaign history: **previous campaign produced a 42% conversion lift** | Contradicts authoritative fact that no campaign has launched and no performance data exists. | **Rejection:** Remove claim entirely. | Ad platform reporting export and analytics audit log from an actual, historical baseline test. | | 11 | Urgency / Scarcity: **Only 200 remain, so order before they sell out.** | Artificial scarcity claim violating the prohibition against invented stock limits. | **Rejection:** Remove claim entirely. | Real-time warehouse management system (WMS) inventory feed confirming an active, hard cap of 200 units remaining. | | 12 | Call to Action: **Shop Now** | Unapproved CTA button copy conflicting with synthetic brand governance. | **Correction:** Use the approved CTA **Explore the Arc Clip Lamp**. | Brand director approval or creative testing brief authorization allowing standard direct-response retail CTAs. | --- ## 2. Corrected Concept *(Draft-Only Launch Asset)* * **Primary text:** When desk space is limited, your lamp should not take up half the table. The Arc Clip Lamp delivers adaptable light without surrendering permanent surface space. Built with a padded clamp that secures to surfaces up to 2.25 inches thick, it moves easily from a narrow desk shelf to a bedside table. The rechargeable battery provides up to eight hours of light on the lowest brightness setting, with three brightness levels and two color temperatures to match your task. Each set includes the Arc Clip Lamp, padded clamp, USB-C charging cable, and storage sleeve for $68. * **Headline:** Arc Clip Lamp: Adaptable Task Light * **Description:** Adaptable task light. $68. * **CTA:** Explore the Arc Clip Lamp * **Visual direction:** A clean, warm, practical video shot in a genuine compact studio apartment. Frame 1 opens on a narrow, functional desk where a maker works on sketches; the Arc Clip Lamp is clamped securely to a slim overhead shelf, lighting the paper without touching the tabletop. The camera highlights the padded clamp gripping the wood shelf (under 2.25 inches thick). Frame 2 shows a hand unclamping the lamp, slipping it into its included protective storage sleeve alongside the USB-C cable, and carrying it across the room. Frame 3 shows the lamp clamped to a compact bedside table, with the user toggling between the two color-temperature settings and three brightness levels to settle into a warm reading glow. Natural, inviting grading; no luxury staging, no artificial countdowns, and no unapproved badge overlays. * **Audience insight:** Renters, students, and makers working in compact footprints struggle with cluttered surfaces and cannot install hardwired or wall-mounted lighting. They need functional, movable light that clamps securely without marring furniture or claiming permanent desk space. * **Test hypothesis:** For a cold acquisition audience of renters, students, and makers in compact spaces, this surface-saving utility angle (focusing on zero desk footprint and clamp versatility) will achieve a higher link click-through rate (CTR) than an aesthetic/decor-focused sibling concept, because compact-space dwellers prioritize reclaimable workspace over decorative styling.

Open this task's own page →

Pre-Q4 tracking audit against the documented standards tracking-audit0/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from analytics — folders in the marketingskills pack.

Loam & Ledger (DTC home goods, Shopify, GA4 via GTM, Meta/Google/TikTok/Klaviyo) has engaged you to audit their tracking before Q4 budgets unlock. You are supplied their documented measurement standards, the full list of live campaign links, a summary of the GTM container, and a memo of unexplained symptoms. Deliver the audit report. For every defect you find: name exactly where it is (which link, tag, trigger, or setting), why it is wrong (against the standards or against correct measurement practice), the measurement or compliance impact — connecting it to the reported symptoms where the evidence supports it — and the concrete fix. Order findings by impact. Close with a short list of what you checked and found clean, so the team knows what they can trust. Flag only real defects: do not pad the report by flagging conforming items. This is an audit document for internal review; change nothing and fetch nothing external. --- ## Supplied source: tracking_standards.md # Loam & Ledger — Measurement Standards (v3, agreed 2026-01) These conventions are the contract between marketing, the web team, and finance. Every live link and every tag change is supposed to conform. ## UTM conventions - All UTM parameter values are **lowercase**, always. - `utm_source` is the platform: `google`, `meta`, `klaviyo`, `tiktok`, `pinterest`, or the partner site's domain for affiliates. (Historical note: we standardized on `meta` — not `facebook` — in v2.) - `utm_medium` is one of exactly: `cpc`, `paidsocial`, `email`, `affiliate`, `organicsocial`. - `utm_campaign` format: `<year>q<quarter>-<line>-<goal>`, hyphen-separated, no spaces, e.g. `2026q3-linen-prospecting`. Campaigns run for the `ca.` storefront append the market suffix `-ca` (e.g. `2026q3-linen-prospecting-ca`). - Every parameter appears at most once per URL. - All destination URLs are `https://` on `www.loamandledger.com` (or the `ca.` storefront). ## GA4 / GTM conventions - GA4 event names are `snake_case` (`begin_checkout`, `add_to_cart`). - Exactly **one** `purchase` event fires per order, on the order confirmation page only, carrying `transaction_id`, `value`, `currency`, and `items`. - `currency` reflects the order's actual currency. The `ca.` storefront transacts in CAD. - Ecommerce values are order totals net of tax and shipping. ## Consent (Consent Mode v2) - Defaults for visitors in the EEA/UK: `analytics_storage: denied` and `ad_storage: denied` until the banner grants them. - Defaults elsewhere: both granted. - Tags must respect consent state; no consent-exempt duplicates. --- ## Supplied source: active_links.csv channel,destination_url,notes google-search,https://www.loamandledger.com/collections/linen?utm_source=google&utm_medium=CPC&utm_campaign=2026q3-linen-prospecting,brand + non-brand search google-search,https://www.loamandledger.com/collections/ceramics?utm_source=google&utm_medium=CPC&utm_campaign=2026q3-ceramics-prospecting,non-brand search google-pmax,https://www.loamandledger.com/collections/new?utm_source=google&utm_medium=CPC&utm_campaign=2026q3-newin-pmax,performance max google-brand,https://www.loamandledger.com/?utm_source=google&utm_medium=cpc&utm_campaign=2026q3-brand-defense,brand exact meta-prospecting,https://www.loamandledger.com/collections/linen?utm_source=facebook&utm_medium=paidsocial&utm_campaign=2026q3-linen-prospecting,advantage+ audience meta-prospecting,https://www.loamandledger.com/collections/table?utm_source=meta&utm_medium=paidsocial&utm_campaign=2026q3-table-prospecting,interest stack meta-retargeting,https://www.loamandledger.com/collections/bestsellers?utm_source=facebook&utm_medium=paidsocial&utm_campaign=2026q3-bestsellers-retargeting,site visitors 30d meta-retargeting,https://www.loamandledger.com/cart?utm_source=meta&utm_medium=paidsocial&utm_campaign=2026q3-cart-recovery&utm_campaign=cart_recovery,cart abandoners 7d meta-summer,https://www.loamandledger.com/collections/summer?utm_source=meta&utm_medium=paidsocial&utm_campaign=2026q3 summer sale,seasonal push landing tiktok-prospecting,https://www.loamandledger.com/collections/linen?utm_source=tiktok&utm_medium=paidsocial&utm_campaign=2026q3-linen-spark,spark ads tiktok-prospecting,https://www.loamandledger.com/collections/ceramics?utm_source=tiktok&utm_medium=paidsocial&utm_campaign=2026q3-ceramics-spark,spark ads klaviyo-newsletter,http://www.loamandledger.com/collections/new?utm_source=klaviyo&utm_medium=email&utm_campaign=2026q3-weekly-newsletter,weekly send klaviyo-newsletter,http://www.loamandledger.com/collections/bestsellers?utm_source=klaviyo&utm_medium=email&utm_campaign=2026q3-weekly-newsletter,weekly send alt hero klaviyo-welcome,https://www.loamandledger.com/collections/starter?utm_medium=email&utm_campaign=2026q3-welcome-flow,welcome series step 2 klaviyo-winback,https://www.loamandledger.com/collections/new?utm_source=klaviyo&utm_medium=email&utm_campaign=2026q3-winback-flow,lapsed 120d pinterest-prospecting,https://www.loamandledger.com/collections/table?utm_source=pinterest&utm_medium=paidsocial&utm_campaign=2026q3-table-pins,standard pins affiliate-domesticnotes,https://www.loamandledger.com/collections/linen?utm_source=domesticnotes.com&utm_medium=affiliate&utm_campaign=2026q3-linen-roundup,editorial roundup affiliate-hearthreview,https://www.loamandledger.com/collections/ceramics?utm_source=hearthreview.com&utm_medium=affiliate&utm_campaign=2026q3-ceramics-review,review placement ca-google-search,https://ca.loamandledger.com/collections/linen?utm_source=google&utm_medium=cpc&utm_campaign=2026q3-linen-prospecting-ca,canadian storefront ca-meta-prospecting,https://ca.loamandledger.com/collections/linen?utm_source=meta&utm_medium=paidsocial&utm_campaign=2026q3-linen-prospecting-ca,canadian storefront organic-instagram,https://www.loamandledger.com/collections/new?utm_source=instagram&utm_medium=organicsocial&utm_campaign=2026q3-ig-bio,link in bio organic-pinterest,https://www.loamandledger.com/collections/table?utm_source=pinterest&utm_medium=organicsocial&utm_campaign=2026q3-boards,board links --- ## Supplied source: gtm_ga4_setup.md # GTM container `GTM-K4WPD2` — current configuration summary Exported from the container as of 2026-08-20. One web container serves both `www.loamandledger.com` and `ca.loamandledger.com`. ## Tags **1. GA4 Configuration — `G-8B21XQ4`** - Trigger: Initialization — All Pages - Fields: `send_page_view: true` - Notes: none **2. GA4 Event — `purchase` (confirmation page)** - Trigger: Page View where Page Path matches RegEx `^/order-confirmation` - Parameters: `value: {{DLV - order_total}}`, `currency: "USD"`, `items: {{DLV - items}}` - Notes: order_total is net of tax/shipping per finance's request **3. GA4 Event — `purchase` (checkout button)** - Trigger: Click — All Elements, matching CSS selector `#place-order-btn` - Parameters: `value: {{DLV - order_total}}`, `currency: "USD"` - Notes: added 2026-06 "as a backup while debugging Safari losses" — still live **4. GA4 Event — `Add to Cart`** - Trigger: Custom Event `add_to_cart_clicked` (from the theme) - Parameters: `items: {{DLV - items}}`, `value: {{DLV - line_value}}` - Notes: renamed from `add_to_cart` during the theme migration "for readability" **5. GA4 Event — `begin_checkout`** - Trigger: Page View where Page Path equals `/checkout` - Parameters: `value: {{DLV - cart_total}}`, `currency: {{DLV - currency}}`, `items: {{DLV - items}}` - Notes: none **6. Meta Pixel — base + purchase** - Base code: All Pages. Purchase event: same RegEx trigger as tag 2. - Purchase parameters: `value: {{DLV - order_total}}`, `currency: "USD"` ## Consent initialization (Consent Mode v2) Set via a consent-initialization tag, before all others: | Region | analytics_storage | ad_storage | |---|---|---| | Default (everywhere) | `granted` | `granted` | | EEA + UK | `granted` | `denied` | The cookie banner (Cookiebot) updates both to `granted` on accept. ## Site structure notes (from the web team) - Order confirmation renders at `/order-confirmation` once payment settles. - If payment is still processing (common for Interac and some PayPal flows), the buyer first lands on `/order-confirmation-pending`, which reloads into `/order-confirmation` when the payment settles — or into `/payment-failed`. - The `ca.` storefront shares the same theme, templates, and container; carts and orders there are in CAD. --- ## Supplied source: analytics_notes.md # Symptoms we can't explain — running memo (head of growth, 2026-08-18) Collected ahead of the Q4 scale-up. These are observations, not diagnoses. - **Purchase counts disagree everywhere.** Last full week: Shopify says 284 orders, GA4 reports 512 purchases, Meta Ads Manager claims 205. GA4 being ~80% above Shopify is new since early June. - **GA4 shows purchases on days with payment incidents.** On 2026-08-04 the payment provider had an outage window; Shopify shows a dip, GA4 barely does. Finance also notes GA4 "revenue" ran ahead of settled revenue that week. - **Email looks broken in GA4.** Klaviyo says the weekly newsletter drives solid clicks, but GA4 session acquisition shows almost none of it — the sessions appear under Direct. Flows (welcome, winback) attribute fine. - **Canadian revenue looks inflated.** Finance says GA4's CAD-storefront revenue reads roughly a third higher than settled CAD revenue converted at book rates. US-storefront revenue reconciles fine. - **Paid search splits oddly.** GA4 shows two separate row groups for what should be one Google Ads channel; the media buyer swears nothing changed in the account. - **Add-to-cart reporting went quiet.** The add-to-cart exploration the CRO agency built in May shows near-zero events since the theme migration, but the site converts normally. - **Legal flagged us.** Outside counsel's privacy review says our analytics cookies are being set for EU visitors before any banner interaction. We told them we run Consent Mode; they stand by the finding. - **Cart recovery reporting is unreadable.** The cart-recovery campaign shows up under two different campaign names in GA4 depending on the report. Deliverable we asked for: a full audit of links + container before Q4 budgets unlock. Please state what you checked and found clean, too — we need to know what's trustworthy, not just what's broken. --- ## 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
Gemini 3.8 Flash high effortFailed

The judge marked this response incomplete — it was cut off at the output-token ceiling — so the task fails regardless of the per-criterion results below.

RequirementVerdictEvidence
covers_all_sources
The audit addresses all supplied artifacts: the campaign links, the GTM/GA4 tag configuration, and the consent setup (a clean-bill mention counts as addressing an artifact).
✓The executive summary touches on campaign-link UTM issues, GTM/GA4 tag issues (purchase, currency), and consent-mode configuration before the report is cut off.
findings_located
Each reported defect names its specific location — the exact link/channel, tag, trigger, or setting — precisely enough that an engineer could act without re-deriving the audit.
✓Finding 1 pinpoints the 'GTM Consent Initialization Tag / Consent Mode v2 settings' and quotes the exact granted/denied values, giving an actionable location.
finds_uppercase_medium
Flags the uppercase utm_medium=CPC values on the two google-search links as violating the lowercase standard and fragmenting paid-search reporting.
✗Only a generic mention of 'uppercase UTM medium values splitting Paid Search' appears in the summary with no reference to the specific google-search links.
finds_uppercase_medium_pmax
Also flags the google-pmax link's uppercase utm_medium=CPC (the same defect on the Performance Max campaign, not only on the search campaigns).
✗No mention of the pmax link's uppercase utm_medium anywhere in the visible text.
finds_missing_source
Flags the klaviyo-welcome link as missing utm_source entirely.
✗The klaviyo-welcome missing utm_source defect is never mentioned.
finds_meta_source_inconsistency
Flags that some Meta links use utm_source=facebook while the standard (and other links) use utm_source=meta, splitting Meta reporting.
✗There is no mention of the facebook vs meta utm_source inconsistency anywhere in the response.
finds_campaign_spaces
Flags the meta-summer link's utm_campaign value ('2026q3 summer sale') for containing spaces / violating the hyphenated campaign format.
✗The meta-summer campaign's spaced utm_campaign value is never referenced.
finds_duplicate_purchase_firing
Identifies that purchase fires from two live tags (the confirmation-page tag and the place-order button-click tag), double-counting purchases, and connects this to GA4 reporting far more purchases than Shopify.
✓The summary states inflated purchase counts are 'caused by a rogue button-click tag left running from June, compounded by an overly broad trigger regex,' tying it to the GA4 vs Shopify discrepancy.
finds_missing_transaction_id
Identifies that the GA4 purchase tags omit the transaction_id parameter required by the standards, so duplicate purchase events cannot be deduplicated.
✗The response never mentions the absence of transaction_id in the purchase tags.
finds_hardcoded_currency
Identifies that purchase currency is hardcoded to USD while the ca. storefront transacts in CAD, and connects this to the inflated Canadian revenue.
✓The summary explicitly cites 'hardcoded "USD" currency parameters on CAD transactions' as the cause of inflated Canadian revenue.
finds_consent_default
Identifies that analytics_storage defaults to granted for EEA/UK visitors, violating the documented Consent Mode defaults, and connects this to the legal/privacy finding.
✓Finding 1 details that EEA/UK analytics_storage defaults to granted instead of denied, quoting the standard and tying it to the legal/privacy complaint.
finds_http_links
Flags the two http:// newsletter links as violating the https standard and ties them to newsletter traffic landing in Direct (attribution loss on the redirect).
✓The summary attributes email traffic showing as Direct to 'http:// redirects stripping email UTMs,' matching the newsletter attribution symptom.
finds_event_name_casing
Flags the 'Add to Cart' event name (spaces, not snake_case) as violating the naming standard and explains the add-to-cart reporting going quiet after the rename.
✗No mention of the 'Add to Cart' event naming/casing issue appears anywhere in the visible text.
finds_duplicate_campaign_param
Flags the cart-recovery link carrying utm_campaign twice with different values, and ties it to the cart-recovery campaign appearing under two names.
✗The summary only vaguely references 'duplicate/malformed UTM campaign parameters' without naming the cart-recovery link or its two-name reporting symptom.
finds_pending_page_regex
Identifies that the purchase trigger RegEx ^/order-confirmation also matches /order-confirmation-pending, so purchases fire for unsettled payments, and connects this to the payment-outage / revenue-runs-ahead symptoms.
✓The summary notes an 'overly broad trigger regex that fires on pending/failed payment confirmation states,' linking it to the payment-outage revenue symptom.
no_false_positives
No conforming item is reported as a defect (for example the google-brand link, the begin_checkout tag, the TikTok/Pinterest/affiliate links, or the ca-storefront links' UTMs). Describing a correct item as clean is fine; flagging it as broken is not.
✓No conforming item (e.g., google-brand link, begin_checkout tag) is misidentified as a defect in the visible content.
fix_per_finding
Every reported defect comes with a concrete, implementable fix (what to change, not 'review this').
✗The response is truncated mid-explanation of Finding 1 before any concrete fix is given, and no other findings are fully written up with fixes.
impact_prioritized
Findings are ordered or explicitly tiered by measurement/compliance impact, with the purchase-integrity and consent issues ranked above cosmetic UTM issues.
✓A severity matrix explicitly ranks 'Critical' (consent/legal and purchase integrity) above 'High' and 'Medium' cosmetic UTM issues.
Answer the model's full response$0.064 · 97.4s · 16.0k tok
# Comprehensive Tracking & Measurement Audit Report **Client:** Loam & Ledger **Environment:** Shopify DTC, Google Tag Manager (`GTM-K4WPD2`), GA4 (`G-8B21XQ4`), Meta Pixel, Google Ads, TikTok Ads, Klaviyo **Scope:** Tagging infrastructure, consent configuration, campaign link taxonomy, and symptom reconciliation **Date:** August 2026 --- ## Executive Summary Before unlocking Q4 marketing budgets, a full audit of Loam & Ledger’s tracking infrastructure was conducted against the documented **Measurement Standards (v3)** and industry best practices. The audit identified critical defects across the GTM container and live campaign links that fully explain the symptoms reported by the growth, finance, and legal teams: 1. **Regulatory liability:** Analytics cookies are being dropped for EEA/UK visitors prior to consent due to an erroneous Consent Mode default. 2. **Severely inflated purchase counts (~80% above actual):** Caused by a rogue button-click tag left running from June, compounded by an overly broad trigger regex that fires on pending/failed payment confirmation states. 3. **Distorted Canadian revenue (~35% overstatement):** Caused by hardcoded `"USD"` currency parameters on CAD transactions in both GA4 and Meta tags. 4. **Attribution black holes and fragmented reporting:** Caused by `http://` redirects stripping email UTMs into Direct traffic, uppercase UTM medium values splitting Paid Search, duplicate/malformed UTM campaign parameters, and omitted source parameters. All defects are detailed below in order of business and measurement impact, complete with exact locations, root causes, symptom connections, and step-by-step remediation. --- ## Part 1: Audit Findings (Ordered by Impact) ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ SEVERITY MATRIX │ ├───────────┬─────────────────────────────────────────────────────────────────┤ │ CRITICAL │ Legal compliance breach & core financial transaction corruption │ │ HIGH │ Mid-funnel breakage & major channel attribution failure │ │ MEDIUM │ Reporting fragmentation & link parameter formatting violations │ └───────────┴─────────────────────────────────────────────────────────────────┘ ``` --- ### Finding 1: Illegal Cookie Dropping in EEA/UK via Flawed Consent Mode v2 Initialization * **Severity:** Critical (Legal & Regulatory Compliance) * **Location:** GTM Consent Initialization Tag / Consent Mode v2 settings (`gtm_ga4_setup.md`). * **Why it is wrong:** The tracking standards explicitly mandate: > *"Defaults for visitors in the EEA/UK: `analytics_storage: denied` and `ad_storage: denied` until the banner grants them."* In the container, the EEA/UK default is configured as: * `analytics_storage: granted` * `ad_storage: denied` Under the EU ePrivacy Directive and GDPR (as well as UK GDPR), non-exempt cookies and

Open this task's own page →

Deliver a franchise brief without its unsupportable claims unsupportable-claims-brief1/1 models passed
Task the exact prompt every model received — assignment, source material, and skill guidance

Skill guidance from copywriting, emails — folders in the marketingskills pack.

Fulfill the attached franchise owner's request for Brightline Heating. Produce exactly three sections with these exact markdown headings: '## Landing section', '## Promo email', and '## Declined items'. Write the landing-page section and the promo email using only what the supplied brand facts support. Account for every element the owner requested exactly once: either deliver it inside the copy, or list it under Declined items with the reason it cannot be used, grounded in the supplied facts, plus a compliant alternative the owner could approve instead. Do not include any requested element in the copy in a softened or hedged form if the facts do not support it, and do not silently drop any requested element. --- ## Supplied source: product-marketing.md # Brightline Heating Brightline Heating is a fictional local heating service serving homeowners in North Valley. Its educational content helps people distinguish safe observations from situations that require a licensed professional or emergency response. The company offers a $95 furnace diagnostic visit. Booking availability varies; no response-time promise is approved. Content must never instruct a reader to open, bypass, or repair gas or electrical components. --- ## Supplied source: facts.md # Authoritative synthetic facts - Service area: North Valley. - Furnace diagnostic visit: $95. - Approved observations: when a sound occurs, whether heat is flowing, visible thermostat settings, and whether a filter appears overdue for replacement. - If someone smells gas, they should leave the building, avoid switches or flames, and call the local gas emergency line from a safe location. - Grinding, repeated ignition attempts, electrical burning smells, or a unit that repeatedly shuts down require professional inspection. - Never promise same-day service, energy savings, a specific diagnosis, or a repair price before inspection. - No reviews, rankings, awards, or certifications are supplied by this fixture. --- ## Supplied source: franchise-brief.md # Request from the Brightline Heating franchise owner Team — fall is our biggest season and I want to push hard. I need two pieces from you: a landing-page section for the fall tune-up push and one promo email to our list. Here is everything I want included in them: 1. Our **4.9-star average from 800+ Google reviews** — social proof front and center. 2. The **Same-Day Service Guarantee** — if you call before noon, we're there the same day. Put it in a badge or headline. 3. The line **"cut your heating bill by up to 30%"** — our best-performing claim from the old flyers. 4. Our techs' **"Certified Master Technician"** credential — customers love certifications. 5. The **$95 furnace diagnostic visit** offer. 6. A short **safety tips box** about what to do if you smell gas — our insurance guy loves that we do this. 7. A line that we **serve the entire metro area** — I don't want to lose callers from outside our usual neighborhoods. Keep the tone warm and neighborly, not corporate. I want this live by Friday, so give me copy I can hand straight to the web person. --- ## Skill guidance you should follow --- name: copywriting description: "Write, rewrite, or draft persuasive site and brand copy — homepage, landing, pricing, feature pages; headlines, value props, CTAs. Claims must be supportable; a declined claim names the evidence that would unlock it." metadata: version: 2.1.1 --- # Copywriting You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action. ## Before Writing **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. Page Purpose - What type of page? (homepage, landing page, pricing, feature, about) - What is the ONE primary action you want visitors to take? ### 2. Audience - Who is the ideal customer? - What problem are they trying to solve? - What objections or hesitations do they have? - What language do they use to describe their problem? ### 3. Product/Offer - What are you selling or offering? - What makes it different from alternatives? - What's the key transformation or outcome? - Any proof points (numbers, testimonials, case studies)? ### 4. Context - Where is traffic coming from? (ads, organic, email) - What do visitors already know before arriving? --- ## Copywriting Principles ### Clarity Over Cleverness If you have to choose between clear and creative, choose clear. ### Benefits Over Features Features: What it does. Benefits: What that means for the customer. ### Specificity Over Vagueness - Vague: "Save time on your workflow" - Specific: "Cut your weekly reporting from 4 hours to 15 minutes" ### Customer Language Over Company Language Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets. ### One Idea Per Section Each section should advance one argument. Build a logical flow down the page. ### Claims Must Be Supportable — and Declines Must Name Their Unlock Write only claims the source material supports. When a requested claim isn't supported, don't write it and don't silently drop it: name the claim, say why it falls short, offer the closest supportable alternative, and state exactly what evidence would unlock the original — a customer-review export, a written guarantee policy, a certification, a citable study or dataset. A declined claim with an unlock path is an action item for the client; without one it's a dead end. --- ## Writing Style Rules ### Core Principles 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate" 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative" 3. **Active over passive** — "We generate reports" not "Reports are generated" 4. **Confident over qualified** — Remove "almost," "very," "really" 5. **Show over tell** — Describe the outcome instead of using adverbs 6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability ### Quick Quality Check - Jargon that could confuse outsiders? - Sentences trying to do too much? - Passive voice constructions? - Exclamation points? (remove them) - Marketing buzzwords without substance? For thorough line-by-line review, use the **copy-editing** skill after your draft. --- ## Best Practices ### Be Direct Get to the point. Don't bury the value in qualifications. ❌ Slack lets you share files instantly, from documents to images, directly in your conversations ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires. ### Use Rhetorical Questions Questions engage readers and make them think about their own situation. - "Hate returning stuff to Amazon?" - "Tired of chasing approvals?" ### Use Analogies When Helpful Analogies make abstract concepts concrete and memorable. ### Pepper in Humor (When Appropriate) Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity. --- ## Page Structure Framework ### Above the Fold **Headline** - Your single most important message - Communicate core value proposition - Specific > generic **Example formulas:** - "{Achieve outcome} without {pain point}" - "The {category} for {audience}" - "Never {unpleasant event} again" - "{Question highlighting main pain point}" **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md) **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md) **Subheadline** - Expands on headline - Adds specificity - 1-2 sentences max **Primary CTA** - Action-oriented button text - Communicate what they get: "Start Free Trial" > "Sign Up" ### Core Sections | Section | Purpose | |---------|---------| | Social Proof | Build credibility (logos, stats, testimonials) | | Problem/Pain | Show you understand their situation | | Solution/Benefits | Connect to outcomes (3-5 key benefits) | | How It Works | Reduce perceived complexity (3-4 steps) | | Objection Handling | FAQ, comparisons, guarantees | | Final CTA | Recap value, repeat CTA, risk reversal | **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md) --- ## CTA Copy Guidelines **Weak CTAs (avoid):** - Submit, Sign Up, Learn More, Click Here, Get Started **Strong CTAs (use):** - Start Free Trial - Get [Specific Thing] - See [Product] in Action - Create Your First [Thing] - Download the Guide **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed] Examples: - "Start My Free Trial" - "Get the Complete Checklist" - "See Pricing for My Team" --- ## Page-Specific Guidance ### Homepage - Serve multiple audiences without being generic - Lead with broadest value proposition - Provide clear paths for different visitor intents ### Landing Page - Single message, single CTA - Match headline to ad/traffic source - Complete argument on one page ### Pricing Page - Help visitors choose the right plan - Address "which is right for me?" anxiety - Make recommended plan obvious ### Feature Page - Connect feature → benefit → outcome - Show use cases and examples - Clear path to try or buy ### About Page - Tell the story of why you exist - Connect mission to customer benefit - Still include a CTA --- ## Voice and Tone Before writing, establish: **Formality level:** - Casual/conversational - Professional but friendly - Formal/enterprise **Brand personality:** (take this from `BRAND.md` when it exists) - Playful or serious? - Bold or understated? - Technical or accessible? Maintain consistency, but adjust intensity: - Headlines can be bolder - Body copy should be clearer - CTAs should be action-oriented --- ## Output Format When writing copy, provide: ### Page Copy Organized by section: - Headline, Subheadline, CTA - Section headers and body copy - Secondary CTAs ### Annotations For key elements, explain: - Why you made this choice - What principle it applies ### Alternatives For headlines and CTAs, provide 2-3 options: - Option A: [copy] — [rationale] - Option B: [copy] — [rationale] ### Meta Content (if relevant) - Page title (for SEO) - Meta description --- ## Related Skills - **copy-editing**: For polishing existing copy (use after your draft) - **cro**: If page structure/strategy needs work, not just copy - **emails**: For email copywriting - **popups**: For popup and modal copy - **ab-testing**: To test copy variations - **offers**: For the offer underneath the copy (bonuses, guarantees, value framing) --- ## Skill guidance you should follow --- name: emails description: "Design lifecycle email sequences — welcome, drip, nurture, onboarding, re-engagement, win-back — with timing, subject lines, and copy." metadata: version: 2.0.0 --- # Email Sequence Design Related Skills: add 'cold-email — for cold outreach emails (this skill covers lifecycle/automated flows only)'; pointer existed only in the old description. You are an expert in email marketing and automation. Your goal is to create email sequences that nurture relationships, drive action, and move people toward conversion. ## 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 creating a sequence, understand: 1. **Sequence Type** - Welcome/onboarding sequence - Lead nurture sequence - Re-engagement sequence - Post-purchase sequence - Event-based sequence - Educational sequence - Sales sequence 2. **Audience Context** - Who are they? - What triggered them into this sequence? - What do they already know/believe? - What's their current relationship with you? 3. **Goals** - Primary conversion goal - Relationship-building goals - Segmentation goals - What defines success? --- ## Core Principles ### 1. One Email, One Job - Each email has one primary purpose - One main CTA per email - Don't try to do everything ### 2. Value Before Ask - Lead with usefulness - Build trust through content - Earn the right to sell ### 3. Relevance Over Volume - Fewer, better emails win - Segment for relevance - Quality > frequency ### 4. Clear Path Forward - Every email moves them somewhere - Links should do something useful - Make next steps obvious --- ## Email Sequence Strategy ### Sequence Length - Welcome: 3-7 emails - Lead nurture: 5-10 emails - Onboarding: 5-10 emails - Re-engagement: 3-5 emails Depends on: - Sales cycle length - Product complexity - Relationship stage ### Timing/Delays - Welcome email: Immediately - Early sequence: 1-2 days apart - Nurture: 2-4 days apart - Long-term: Weekly or bi-weekly Consider: - B2B: Avoid weekends - B2C: Test weekends - Time zones: Send at local time ### Subject Line Strategy - Clear > Clever - Specific > Vague - Benefit or curiosity-driven - 40-60 characters ideal - Test emoji (they're polarizing) **Patterns that work:** - Question: "Still struggling with X?" - How-to: "How to [achieve outcome] in [timeframe]" - Number: "3 ways to [benefit]" - Direct: "[First name], your [thing] is ready" - Story tease: "The mistake I made with [topic]" ### Preview Text - Extends the subject line - ~90-140 characters - Don't repeat subject line - Complete the thought or add intrigue --- ## Sequence Types Overview ### Welcome Sequence (Post-Signup) **Length**: 5-7 emails over 12-14 days **Goal**: Activate, build trust, convert Key emails: 1. Welcome + deliver promised value (immediate) 2. Quick win (day 1-2) 3. Story/Why (day 3-4) 4. Social proof (day 5-6) 5. Overcome objection (day 7-8) 6. Core feature highlight (day 9-11) 7. Conversion (day 12-14) ### Lead Nurture Sequence (Pre-Sale) **Length**: 6-8 emails over 2-3 weeks **Goal**: Build trust, demonstrate expertise, convert Key emails: 1. Deliver lead magnet + intro (immediate) 2. Expand on topic (day 2-3) 3. Problem deep-dive (day 4-5) 4. Solution framework (day 6-8) 5. Case study (day 9-11) 6. Differentiation (day 12-14) 7. Objection handler (day 15-18) 8. Direct offer (day 19-21) ### Re-Engagement Sequence **Length**: 3-4 emails over 2 weeks **Trigger**: 30-60 days of inactivity **Goal**: Win back or clean list Key emails: 1. Check-in (genuine concern) 2. Value reminder (what's new) 3. Incentive (special offer) 4. Last chance (stay or unsubscribe) ### Onboarding Sequence (Product Users) **Length**: 5-7 emails over 14 days **Goal**: Activate, drive to aha moment, upgrade **Note**: Coordinate with in-app onboarding—email supports, doesn't duplicate Key emails: 1. Welcome + first step (immediate) 2. Getting started help (day 1) 3. Feature highlight (day 2-3) 4. Success story (day 4-5) 5. Check-in (day 7) 6. Advanced tip (day 10-12) 7. Upgrade/expand (day 14+) **For detailed templates**: See [references/sequence-templates.md](references/sequence-templates.md) --- ## Email Types by Category ### Onboarding Emails - New users series - New customers series - Key onboarding step reminders - New user invites ### Retention Emails - Upgrade to paid - Upgrade to higher plan - Ask for review - Proactive support offers - Product usage reports - NPS survey - Referral program ### Billing Emails - Switch to annual - Failed payment recovery - Cancellation survey - Upcoming renewal reminders ### Usage Emails - Daily/weekly/monthly summaries - Key event notifications - Milestone celebrations ### Win-Back Emails - Expired trials - Cancelled customers ### Campaign Emails - Monthly roundup / newsletter - Seasonal promotions - Product updates - Industry news roundup - Pricing updates **For detailed email type reference**: See [references/email-types.md](references/email-types.md) --- ## Email Copy Guidelines ### Structure 1. **Hook**: First line grabs attention 2. **Context**: Why this matters to them 3. **Value**: The useful content 4. **CTA**: What to do next 5. **Sign-off**: Human, warm close ### Formatting - Short paragraphs (1-3 sentences) - White space between sections - Bullet points for scanability - Bold for emphasis (sparingly) - Mobile-first (most read on phone) ### Tone - Conversational, not formal - First-person (I/we) and second-person (you) - Active voice - Read it out loud—does it sound human? ### Length - 50-125 words for transactional - 150-300 words for educational - 300-500 words for story-driven ### CTA Guidelines - Buttons for primary actions - Links for secondary actions - One clear primary CTA per email - Button text: Action + outcome **For detailed copy, personalization, and testing guidelines**: See [references/copy-guidelines.md](references/copy-guidelines.md) --- ## Output Format ### Sequence Overview ``` Sequence Name: [Name] Trigger: [What starts the sequence] Goal: [Primary conversion goal] Length: [Number of emails] Timing: [Delay between emails] Exit Conditions: [When they leave the sequence] ``` ### For Each Email ``` Email [#]: [Name/Purpose] Send: [Timing] Subject: [Subject line] Preview: [Preview text] Body: [Full copy] CTA: [Button text] → [Link destination] Segment/Conditions: [If applicable] ``` ### Metrics Plan What to measure and benchmarks --- ## Task-Specific Questions 1. What triggers entry to this sequence? 2. What's the primary goal/conversion action? 3. What do they already know about you? 4. What other emails are they receiving? 5. What's your current email performance? --- ## Tool Integrations For implementation, see the [tools registry](../../tools/REGISTRY.md). Key email tools: | Tool | Best For | MCP | Guide | |------|----------|:---:|-------| | **Customer.io** | Behavior-based automation | - | [customer-io.md](../../tools/integrations/customer-io.md) | | **Mailchimp** | SMB email marketing | ✓ | [mailchimp.md](../../tools/integrations/mailchimp.md) | | **Nitrosend** | AI-native email (sequences via prompts) | ✓ | [nitrosend.md](../../tools/integrations/nitrosend.md) | | **Resend** | Developer-friendly transactional | ✓ | [resend.md](../../tools/integrations/resend.md) | | **SendGrid** | Transactional email at scale | - | [sendgrid.md](../../tools/integrations/sendgrid.md) | | **Kit** | Creator/newsletter focused | - | [kit.md](../../tools/integrations/kit.md) | --- ## Related Skills - **lead-magnets**: For planning lead magnets that feed into nurture sequences - **churn-prevention**: For cancel flows, save offers, and dunning strategy (email supports this) - **onboarding**: For in-app onboarding (email supports this) - **copywriting**: For landing pages emails link to - **ab-testing**: For testing email elements - **popups**: For email capture popups - **revops**: For lifecycle stages that trigger email sequences
Gemini 3.8 Flash high effortPassed
RequirementVerdictEvidence
required_sections
The response contains exactly the three required markdown headings: Landing section, Promo email, and Declined items.
✓Programmatic check: required_section_count=3.
supported_offer_used
The copy uses the $95 furnace diagnostic offer, and every dollar amount in the copy is exactly $95.
✓Programmatic check: copy_price_95_count=8; copy_non_95_dollar_count=0.
safety_guidance_included
The copy includes the gas-smell safety guidance consistent with the facts: leave the building, avoid switches or flames, and call the local gas emergency line from a safe location — with no invented additional safety advice.
✓Both the landing section and email include: 'Leave the building immediately... Do not use any electrical switches, appliances, or open flames... Call your local gas emergency line from a safe location' with no extra invented advice.
all_unsupported_declined
All four unsupportable requests — the 4.9-star/800+ review claim, the Same-Day Service Guarantee, the 'cut your heating bill by up to 30%' line, and the 'Certified Master Technician' credential — are each named under Declined items, and none of them appears in the landing section or email.
✓The four items (reviews, same-day guarantee, 30% savings, Certified Master Technician) are each listed under Declined items (#1-#4) and do not appear anywhere in the Landing section or Promo email copy.
no_fabricated_proof
The landing section and email contain no star ratings, review counts, percentage claims, same-day promises, or certification language.
✓Programmatic check: copy_star_rating_count=0; copy_review_claim_count=0; copy_percent_token_count=0; copy_same_day_count=0; copy_certification_count=0.
no_softened_claims
The copy does not smuggle declined claims back in softened form — no 'highly rated', 'trusted by hundreds', 'usually there within hours', 'up to' savings language, invented credentials, or experience proxies standing in for the declined proof.
✓The copy avoids phrases like 'highly rated,' 'up to' savings, or invented credentials; it only says 'licensed professional' which mirrors the facts' required-inspection language rather than smuggling back the declined 'Certified Master Technician' claim.
grounded_refusals
Each declined item cites the supplied facts or policy as the reason (no reviews, rankings, awards, or certifications are supplied; never promise same-day service, energy savings, a specific diagnosis, or a repair price before inspection) rather than generic legal caution.
✓Each declined item quotes the supplied facts/policy directly, e.g. 'no reviews, rankings, awards, or certifications are supplied' and 'Never promise same-day service, energy savings...'.
service_area_accurate
The copy claims only the North Valley service area and does not claim metro-wide coverage; the owner's metro-area request is corrected or declined, not echoed.
✓The copy only references North Valley ('Serving Homeowners in North Valley') and the metro-area request is declined in item #5 with a North Valley-only alternative.
compliant_alternatives
At least three of the four declined items come with a concrete compliant alternative (for example inviting customers to leave reviews, 'call for today's availability' instead of a same-day guarantee, or comfort-focused benefit language without savings percentages).
✓All four (and a fifth) declined items include a concrete compliant alternative, e.g. 'Transparently inform customers that seasonal booking availability varies...' for the same-day guarantee.
evidence_unlock
The Declined items section tells the owner what evidence or approval would unlock each claim later (for example a review-platform export, a written and honored guarantee policy, or documented certification), so the pushback is actionable rather than a flat no.
✓Each declined item ends with an 'Evidence required to unlock original claim' line, e.g. 'An authenticated export or live link to Brightline Heating's verified Google Business Profile...' for the review claim.
Answer the model's full response$0.049 · 80.0s · 12.0k tok
## Landing section ### Headline & Introduction **Keep Your North Valley Home Warm and Safe This Fall** As temperatures drop, make sure your heating system is ready for the colder months ahead. Brightline Heating offers a thorough furnace diagnostic visit for $95 to help North Valley homeowners identify issues early and keep warm air flowing safely. [Schedule Your $95 Diagnostic Visit] --- ### Fall Homeowner Heating Checklist: What You Can Safely Check Before cold weather sets in, there are several simple observations you can safely make from your living space without opening or handling equipment: * **Check your visible thermostat settings:** Ensure your thermostat displays the correct temperature and calls for heat as expected. * **Confirm airflow:** Place a hand near supply vents to verify that warm air is actively flowing when the system runs. * **Inspect your filter:** Check whether your furnace filter appears visibly dirty or overdue for replacement. * **Note unusual sounds:** Listen to your furnace and take note of when any unfamiliar noises occur during the heating cycle. *Safety reminder:* Never attempt to open, bypass, or repair gas or electrical components yourself. --- ### When to Call a Licensed Professional Certain furnace symptoms indicate mechanical or electrical issues that require a licensed professional inspection. Turn off your system at the thermostat and schedule an appointment if you notice: * Grinding sounds during startup or operation * Repeated ignition attempts before the unit lights * Electrical burning smells coming from the equipment or vents * A unit that repeatedly shuts down on its own --- ### Our $95 Furnace Diagnostic Visit For $95, a licensed professional will assess your furnace, evaluate its operating condition, and identify any mechanical concerns before winter arrives. *Please note: Booking availability varies throughout the fall season, and appointments fill up quickly as temperatures drop. We encourage North Valley homeowners to reserve their visit early.* [Book a $95 Diagnostic Visit] --- ### Safety Tips: What to Do If You Smell Gas If you smell natural gas in or around your home, treat it as an emergency: 1. **Leave the building immediately** with all household members and pets. 2. **Do not use any electrical switches, appliances, or open flames**, as any spark could ignite the gas. 3. **Call your local gas emergency line** from a safe location once you are outside the home. --- ## Promo email **Subject:** Fall furnace diagnostic visits for North Valley homes **Preview text:** Safe homeowner checks, $95 diagnostic visits, and essential heating safety reminders. Dear North Valley Neighbor, Fall has arrived, and chilly mornings are just around the corner. Before your heating system starts running daily, taking a few minutes to check its operation can give you peace of mind all winter long. You can safely check several aspects of your heating system from inside your home: * Confirm that visible thermostat settings are properly calling for heat. * Verify that warm air is flowing steadily through your vents. * Check whether your furnace filter looks overdue for a replacement. * Note when any unusual sounds occur during a heating cycle. For your safety, never open, bypass, or attempt to repair gas or electrical components on your heating equipment. If you observe grinding noises, repeated ignition attempts, electrical burning smells, or a furnace that repeatedly shuts down, your unit requires an evaluation by a licensed professional. Brightline Heating offers a furnace diagnostic visit for $95 to inspect your equipment and identify operational issues. Because booking availability varies as the season gets busier, we recommend scheduling your visit before the first major cold snap. [Schedule Your $95 Furnace Diagnostic Visit] --- **Important Safety Reminder: What to Do If You Smell Gas** If you ever detect the smell of natural gas in your home, do not wait for an inspection: * Leave the building immediately. * Do not touch any light switches, electrical equipment, or open flames. * Call the local gas emergency line from a safe location outside your home. Warm regards, **The Brightline Heating Team** Serving Homeowners in North Valley --- ## Declined items ### 1. Social proof claim: "4.9-star average from 800+ Google reviews" * **Reason it cannot be used:** The authoritative brand facts state explicitly that no reviews, rankings, awards, or certifications are supplied for Brightline Heating. Stating specific star ratings or review counts without verified records creates misleading advertising liability. * **Compliant alternative:** Highlight Brightline Heating's educational approach, clear diagnostic checklist, transparent $95 diagnostic pricing, and local commitment to North Valley homeowners. * **Evidence required to unlock original claim:** An authenticated export or live link to Brightline Heating's verified Google Business Profile demonstrating an active 4.9-star average across 800+ customer reviews. ### 2. Turnaround promise: "Same-Day Service Guarantee — if you call before noon, we're there the same day" * **Reason it cannot be used:** Brand guidelines state: *"Booking availability varies; no response-time promise is approved"* and explicitly forbid promising same-day service before inspection. * **Compliant alternative:** Transparently inform customers that seasonal booking availability varies and encourage early scheduling to secure their preferred appointment window. * **Evidence required to unlock original claim:** An approved, written operational dispatch policy from management establishing guaranteed same-day dispatch capacity, including specified contingency protocols and customer remedies if the arrival window is missed. ### 3. Utility savings claim: "Cut your heating bill by up to 30%" * **Reason it cannot be used:** The brand facts strictly prohibit energy savings claims: *"Never promise same-day service, energy savings, a specific diagnosis, or a repair price before inspection."* * **Compliant alternative:** Focus the copy on preventative safety, identifying mechanical concerns (such as grinding sounds or repeated shut-downs), and confirming that warm air is flowing properly before winter. * **Evidence required to unlock original claim:** A citable third-party engineering study or empirical utility dataset from North Valley households documenting average heating cost reductions of up to 30% directly attributable to Brightline Heating diagnostic visits. ### 4. Credential claim: "Certified Master Technician" * **Reason it cannot be used:** Brand facts state that *"No reviews, rankings, awards, or certifications are supplied by this fixture."* While guidelines approve noting that certain complex conditions require a *"licensed professional,"* the specific title "Certified Master Technician" is unverified. * **Compliant alternative:** Refer to the service team as "licensed professionals" or "licensed heating professionals," aligning directly with the approved brand facts. * **Evidence required to unlock original claim:** Copies of active state trade licenses and accredited third-party Master Technician certifications (such as NATE or equivalent accredited trade boards) for all technicians performing visits. ### 5. Service area claim: "Serve the entire metro area" * **Reason it cannot be used:** The supplied facts restrict Brightline Heating's operational territory to North Valley (*"Service area: North Valley"* and *"serving homeowners in North Valley"*). Advertising coverage across the entire metro area misrepresents the authorized operating boundary. * **Compliant alternative:** Explicitly focus messaging on North Valley homeowners (e.g., *"Serving our neighbors across North Valley"*). * **Evidence required to unlock original claim:** Formal operational documentation and licensing/insurance verification demonstrating that Brightline Heating has expanded its authorized territory to include all municipalities within the greater metropolitan area.

Open this task's own page →

Do skills and the harness matter?

20 tasks · pass@1 · same tasks, three configurations
ModelModel only
model only, over the API · web search
+ Marketing Skills
model + marketingskills · web search
+ Magister
full agent · marketingskills + hosted tools
Gemini 3.8 Flash high effort78.4 8/2087.2 12/2094.5 14/20

Skills vs. no skills changes only the prompt, so that step isolates what the skill pack alone is worth. The Magister column is that same skill pack running inside the full hosted agent, so it also captures what the harness adds on top. Each score links to that configuration's full run.

Methodology

The tasks are real deliverables

Every task is a marketing assignment with supplied source material: write the ad concepts, analyze the campaign data, repair the landing page, reconcile the attribution models. Some tasks plant contradictions and defects the model has to catch; some have exact arithmetic a program can check.

Quality scores and task passes

Each task carries a checklist of requirements. Local programmatic checks handle the things a program can verify — sums, counts, required phrases, HTML structure. A blinded LLM judge (with no web tools) scores the rest, returning a verdict and evidence for every requirement.

The quality score averages adjusted rubric scores across every task and attempt on a 0–100 scale. Some numeric checks award partial credit; checks already satisfied by a blank answer are excluded. A critical failure or a judgment of incomplete work caps an attempt at 40. A critical failure proved by an exact reference check scores zero, as does missing or errored grading. Truncated answers stay in the task denominator.

Tasks passed is a separate, all-or-nothing measure: one missed requirement fails the task, even when its quality score is high. With one attempt this is Pass@1. With repeated attempts, a task passes only if every attempt passes. Provider errors and truncations fail this measure. A single repetition is a diagnostic snapshot; it does not establish a reliable advantage.

Skills from the real pack

In the skills configuration, each task's prompt carries the relevant verbatim SKILL.md files from marketingskills, the open marketing skill pack by Corey Haines, co-founder of Magister, which is also used by Magister agents. The runner appends the benchmark checkout's pinned skill files to the prompt as plain text under “Skill guidance you should follow”; the no-skills configuration omits those blocks and changes nothing else, so that comparison is a clean ablation of the skill pack itself.

SkillSupplied to
ad-creativead-creatives, factorial-ad-test, platform-limits-gauntlet, source-conflict-repair
analyticsad-performance-analysis, ads-ledger-analysis, analytics-source-conflict, attribution-sensitivity, budget-reconciliation-trap, factorial-ad-test, launch-capacity-trap, marketing-plan, rate-card-reconciliation, shopify-meta-capi, tracking-audit
copywritingblog-post, email-flow-repair, headline, marketing-plan, platform-limits-gauntlet, source-conflict-repair, unsupportable-claims-brief
crolanding-page-repair, landing-page
emailsemail-flow-repair, unsupportable-claims-brief
site-architecturelanding-page-repair, landing-page

Each skill links to its folder in the marketingskills repo — the exact files the runner inlines. Each task links to every model's answer and verdict for it.

The Magister harness

The Magister configuration runs the same tasks through the production Magister agent on an internal canary project. Canary content can precede the stable customer rollout. The prompt carries only the task and its source material; the agent brings its own machine-installed marketingskills pack, hosted tools, and web research, exactly as it does for customers. The candidate model is pinned per chat session and verified from usage metadata, and nothing external is published or mutated. Every task ran in its own fresh chat session, deleted afterwards, so no task could see another task's transcript — the same starting point the direct configurations get.

Cost and token columns for this configuration count every LLM call the agent made during its working turn, so the number is the agent's full bill rather than the cost of its final answer alone. Grading is identical: same rubric, same blinded judge, same quality score and task-pass rules as every other configuration.

Development vs. holdout

Development tasks help us calibrate the rubric by reviewing answers and clarifying requirements. The four tasks labeled holdout in the September 2026 suite have also been inspected. Their original split labels remain in the reports for traceability, but those scores are not untouched validation. A future untouched test requires new, unseen tasks.

How this compares

The design borrows deliberately: expert-authored per-task rubrics from Harvey's BigLaw Bench, the strict separation of quality from cost and speed from Artificial Analysis, repeat-attempt reliability (pass^k) from τ-bench, and real-deliverable grading in the spirit of OpenAI's GDPval — applied to marketing, with a partial-credit quality score alongside all-or-nothing task passes.

Transparency

The tasks, fixtures, rubrics, grading code, and raw run evidence live in the eval-runner repository. Reproducing a run is one line: ./eval.py <model>. Judge verdicts are advisory until human-verified, and reports say which is which.