---
name: consumer-traffic-sprint
description: Use when starting or operating any Consumer AI Factory project that needs qualified traffic. Creates a channel-specific posting/commenting cadence, guardrails, tracking links, review loop, and default distribution requirement before a project is considered alive.
version: 1.0.0
author: Mr Han
license: MIT
metadata:
  hermes:
    tags: [consumer-ai, distribution, traffic, reddit, growth, validation]
    related_skills: [consumer-ai-factory-distribution-learning, consumer-ai-factory-opportunity-evaluation, consumer-growth-model-and-loop-map, happycouple-reddit-research]
---

# Consumer Traffic Sprint

## Session-specific references

- `references/shared-testing-lab-accounts.md` — Antoine's correction that current multi-venture validation probes should use shared testing-lab accounts: Reddit `u/Dapper-Analysis-6212` and one shared TikTok lab account, with UTM attribution per venture instead of separate product-specific identities.
- `references/shared-testing-lab-reddit-dapper-oauth.md` — exact setup/verification flow for Dapper Reddit OAuth, including env/token paths, n8n callback redirect, helper script commands, and the rule to never post from substitute Reddit accounts when Dapper auth is missing.

## Session references

- `references/reddit-venture-oauth-setup.md` — dedicated Reddit account/OAuth setup for venture operation: use venture-specific Reddit apps/tokens, exact redirect URI matching, `/api/v1/me` username verification, and `invalid_redirect_uri` recovery.
- `references/shared-lab-reddit-oauth-dapper-2026-06-08.md` — shared testing-lab Reddit OAuth setup for `u/Dapper-Analysis-6212`, including the generic `reddit_oauth_flow.py` helper, exact n8n callback flow, client-ID/secret reversal pitfall, token verification, and cron-start check.
- `references/consumer-category-content-vs-founder-loop.md` — AgentAppStore-style directory/newsletter GTM correction: validate consumer demand with category/problem-native content first; keep founder notifications as a secondary data-quality/share loop only.
- `references/agentappstore-weekly-24h-signup-sprint.md` — 24h newsletter signup sprint pattern: verify live signup/baseline, prepare UTM-linked launch copy, verify outbound channel auth before promising autonomous posting, and run 2h subscriber monitoring. Includes the X fresh-account caveat: API posting may work while replies/quotes are blocked, so do not make comment bursts the core path until verified.
- `references/agentappstore-brand-led-distribution-2026-05-18.md` — brand/project-account-led launch pattern for cases where Antoine does not want distribution from his personal accounts: create brand identity kit, publish native credibility posts first, then seed communities/replies with cold-account guardrails.
- `references/newsletter-native-beehiiv-signup.md` — native first-party newsletter signup pattern backed by Beehiiv's server API: avoid embed/iframe UX regressions, add `/api/newsletter/subscribe`, test provider/env behavior locally and in production.
- `references/dopamen-youtube-channel-sourcing.md` — Dopamen clean-feed YouTube source discovery: promise filter, existing-feed exclusions, channel categories, verification workflow, and the 2026-05-22 20-channel shortlist.
- `references/emma-multichannel-traffic-sprint.md` — pattern for upgrading a useful-but-low-traffic research/community loop into a real multichannel traffic sprint: separate link-bearing loop, product/website naming, activation instrumentation, creator/short-form/directory expansion, and daily UTM/activation review.
- `references/moment-of-need-seo-instagram-acquisition.md` — pattern for intercepting acute user intent: moment-of-need mining, exact-intent SEO tool pages, named product/persona social accounts, creator comment-to-tool bridge, and activation-based measurement.
- `references/seo-page-discovery-and-verification.md` — operational checklist for checking whether venture SEO pages actually exist, are in the sitemap, are allowed by robots.txt, have valid metadata, and should be submitted in Search Console.
- `references/traffic-sprint-status-review.md` — operator checklist for answering “how is the sprint going?”: read sprint/log artifacts, check cron health, verify live surfaces, map intended analytics events to current product events, and separate shipped infrastructure from actual qualified traffic/activation.
- `references/happycouple-engagement-drop-audit-2026-06-05.md` — concrete Emma engagement-drop audit pattern: cron health can be green while traffic is weak; include current text-mode events, source/referrer breakdowns, repeated-failure/person grouping, Reddit link-filtering diagnosis, and live SEO surface checks.
- `references/shortform-script-to-video-mvp.md` — short-form execution pattern: when Antoine asks to generate TikToks/videos, do not stop at scripts if tooling is available; create MVP 1080x1920 MP4s with TTS, caption cards, ffmpeg, verification, and honest quality framing.
- `references/ai-ugc-generation-mvp.md` — AI-generated UGC pattern: when Antoine asks for UGC made with AI tools, produce synthetic/demo assets when possible, label them clearly, avoid fake-user/testimonial framing, and upgrade to photoreal avatar/video providers when configured.
- `references/ai-generated-static-ad-workflow.md` — static ad creative workflow correction: use AI image generation for polished ad visuals when configured, but render exact copy/CTA locally to avoid generated-text artifacts.
- `references/fal-video-model-sprint.md` — cheap high-quality FAL video-model workflow: Wan for low-cost B-roll exploration, Pika for polished silent B-roll, Veo Lite for short native-audio hooks, with secret-handling and queue/status pitfalls.
- `references/fal-video-ugc-workflow.md` — FAL/Veo-style AI UGC workflow from the HappyCouple session: quality-gated single-clip generation, queue polling, prompt rules for selfie creator clips, and QA before scaling.
- `references/meta-graph-paid-ad-launch.md` — Meta Graph API paid-ad launch pattern: create campaign/ad set/creative/ad when auth/payment are available, verify object statuses after publish, report IDs, never persist pasted access tokens, and verify that website-leads campaigns actually emit `Lead` rather than only `PageView`.
- `references/nextmove-meta-graph-launch-2026-07-09.md` — concrete NextMove successful launch after a fresh system-user token: token/object preflight, multipart image uploads, creative/ad creation, activation sequencing, `IN_PROCESS` status interpretation, compact reporting, and token-rotation note.
- `references/nextmove-meta-leads-preflight-2026-07-09.md` — concrete NextMove example where the pixel fired `PageView` but not `Lead`, so the launch was blocked until lead-event instrumentation/auth is available.
- `references/alma-small-budget-paid-ad-zero-cta-read.md` — Alma-style small paid-ad read: cheap/real landing visits with zero CTA clicks means creative curiosity exists but the landing/CTA path is not converting; inspect live creative/destination, verify CTA function, add a lower-friction micro-conversion, and do not scale into a broken/high-friction action.
- `references/alma-moment-of-need-distribution-sprint-2026-07-08.md` — Alma distribution sprint pattern after noisy/weak CTA attribution: distribute through concrete mom-overload panic moments, run scenario paid creatives, micro-mom creator “chaos demos,” approval-gated parent-group tester asks, and only later exact-intent SEO pages.
- `references/alma-nextmove-non-ad-early-users-2026-07-08.md` — non-ad early-user acquisition paths for Alma and NextMove: micro-mom chaos demos, parent-group tester asks, parenting newsletters, soccer recruiting profile teardowns, coach/consultant partner asks, and profile-clinic outreach.
- `references/direct-users-over-influencers-and-static-ad-mvp-2026-07-08.md` — Antoine correction: when he asks for users, do not drift into influencer sourcing; use direct moment-of-need/user acquisition surfaces. Also captures the live-site-to-static-ad MVP workflow used for NextMove.

## Overview

Consumer projects do not become real until qualified users see them. This skill forces every new Consumer AI Factory project to launch with a traffic acquisition plan, not just a prototype.

The default unit is a **7-14 day traffic sprint** with explicit channel cadence, guardrails, tracking, daily review, and a decision memo. A project without a credible traffic path remains a prototype, not an active venture.

### Context-recall pitfall: "clipping" may mean paid campaign clipping

When Antoine says he wants to "get started with clipping," do **not** default to a generic short-form content plan. First check whether he is referring to the prior Dopamen idea: paid creator clipping campaigns that may earn payout while optionally testing Dopamen/Clean Feed acquisition. If Dopamen, campaign rewards, Content Rewards, Whop, or "clipping for money" are in scope, load `consumer-ai-factory-opportunity-evaluation` and its references `dopamen-campaign-clipping-rewards-scouting.md` and `dopamen-clipping-cta-distribution.md` before proposing a plan. The core distinction is: campaign payout clipping and Dopamen acquisition are related but separate jobs, and Dopamen CTAs are only safe when campaign rules explicitly allow them.

## When to Use

Use this skill:

- When creating any new consumer project or demand probe.
- When a venture has product work but weak/zero traffic.
- Before graduating a project from idea/prototype to active validation.
- When setting up Reddit/commenting/posting cadences.
- When traffic conclusions are vague because posting volume is not tracked.

Do not use this skill to force spammy automation. If the channel is sensitive, use draft-only, mod-approved, or no-link helpful participation.

## Progress/reset review rule

When Antoine says the factory is not making progress, traffic is low, or automations are creating fake confidence, treat it as an execution audit, not a pep-talk prompt.

Do this immediately:

1. Check live scheduler state before diagnosing: list jobs, last statuses, next runs, and whether script-only jobs are succeeding while agent-driven jobs are failing.
2. Separate **scheduled infrastructure** from **actual distribution reps**. A cron job that exists but errors is not a traffic loop.
3. Separate **research/no-link support comments** from **link-bearing or audience-moving traffic**. Helpful no-link comments can build trust, but they do not count as traffic unless they produce replies, visits, or activation.
4. Report the bottleneck plainly: e.g. broken agent runtime, stale command-center snapshot, zero link-bearing touches, zero qualified visits, weak activation, or too many active ventures.
5. Reset to one active venture plus at most one validation candidate. For Antoine’s current operating model, HappyCouple should usually own execution unless he explicitly changes focus.
6. Replace broad automation with one reliable daily command: what traffic was driven today, what users did, what was learned, and what product/factory artifact changed.

Pitfall: do not let dashboards, Obsidian notes, crons, or strategy docs substitute for shipped distribution reps. If a daily loop does not create user exposure, activation evidence, or a reusable operating mechanism, it is not progress.

## Default Factory Rule

Every new consumer project needs a distribution block at creation time:

```text
Target user
Primary pain phrase
Distribution identity / account posture
Primary acquisition channel
Secondary acquisition channel
Traffic cadence
Link policy
Tracking links / UTMs
Visibility verification method
Daily review owner
Kill / continue thresholds
```

Before recommending founder-led posting, verify whether Antoine allows personal-account distribution. If not, convert the plan into a brand/project-account launch: handles, bio, avatar/banner, pinned post, native credibility posts, then guarded replies/community seeding.

If this cannot be filled, do not overbuild the product.

## Low-traffic escalation rule

When a venture's current channel is producing research but little website traffic, use `references/emma-multichannel-traffic-sprint.md`: keep the safe learning loop, but add a separate link-bearing loop, explicit product/website mentions where allowed, non-Reddit expansion, and activation-event review. Do not report helpful community participation as a substitute for qualified visits.

### Explicit user push for more links

If Antoine explicitly says traffic is too low or asks to “post more with the link,” treat that as a workflow correction, not a vague preference. Act immediately by increasing the link-seeking surface and cadence, while preserving account/community safety:

- Post or queue a real link-bearing touch in a rules-safe context during the same session if one is available: beta/product-feedback communities, app/tool recommendation requests, self-promo/showcase threads, or explicit “any app/tool/resource?” asks.
- Do **not** satisfy this by adding more no-link support comments; report those separately as trust/research, not traffic.
- Prefer a fresh product-feedback angle over repeating the same generic promo post in the same subreddit.
- Use transparent founder/product disclosure and a UTM link to the product.
- After posting, verify auth user, OAuth/api existence, listing/user visibility when possible, removal category, and log the URL + UTM in the sprint artifact and distribution ledger.
- Increase scheduler cadence or repeat budget when the existing loop is too passive, but keep max-per-run caps and skip unsafe relationship-support contexts.
- Final report should clearly say what link was posted, where, verification status, and what cadence changed.

### Direct-users correction

If Antoine says he wants users, not influencers, treat that as a workflow correction. Do not answer with more creator lists or partnership ideas. Shift immediately to direct user acquisition surfaces: moment-of-need threads, community tester asks, paid scenario ads, exact-intent pages, and one-to-one replies/DMs where allowed. Creators may remain a route to users, but label them as secondary distribution, not the main target. See `references/direct-users-over-influencers-and-static-ad-mvp-2026-07-08.md`.

## Moment-of-Need Acquisition

When Antoine asks for smarter traffic or says a channel is not driving enough users, shift from generic channel posting to **intent interception**. Use `references/moment-of-need-seo-instagram-acquisition.md`.

Ask:

```text
Where is the user already typing the acute problem at the exact moment they need help?
```

For acute consumer AI products, create a three-part acquisition layer:

1. **Live moment miner:** fresh posts/comments/questions with exact pain phrases; native useful response first; link only when allowed.
2. **Exact-intent SEO:** reusable tool pages for `[situation] + what do I say/how do I respond/am I overreacting`; measure `first_context_submitted`, not visits.
3. **Named product social:** if the product has a memorable assistant/persona, launch the social account around that name while keeping the parent brand as trust wrapper. Example: `Emma by HappyCouple`, not generic relationship-advice posting.

Do not let research-only loops become a comfort zone. If traffic is too low, preserve safe learning loops but add link-bearing, SEO, creator, and social surfaces with UTMs and activation tracking.

## Cadence Tiers

### Tier 0 — Draft-only / account safety

Use when the account is fresh, rules are unclear, or the category is sensitive.

```text
Every 3-6h: find candidate threads/posts
Draft: 2 useful comments + 1 link-bearing opportunity
Do not post automatically
Send candidates to Antoine/chat for approval
```

### Tier 1 — Safe no-link participation

Use for new Reddit/community accounts and sensitive categories.

```text
Every 3h max:
- Up to 2 no-link useful comments
- No product mention by default
- No CTA unless directly asked for a tool/resource
- Verify public visibility
- Stop on filtering/removal/rate-limit/mod pushback
```

This is the default for new projects until the account/channel has trust.

### Tier 2 — Guarded mixed cadence

Use only when prior comments are publicly visible and channel rules permit founder participation.

```text
Every 3h:
- Up to 2 no-link comments
- Up to 1 link/post opportunity if safe

Link guardrail:
- If rules/context do not clearly allow it, skip the link
- Use transparent founder/product disclosure
- Use UTM link
- Verify public visibility
```

### Tier 3 — Approved traffic push

Use after mod approval, explicit self-promo thread, creator collaboration, or owned/paid channel.

```text
1-3 link-bearing posts/day per channel, depending on norms
Reply quickly
Track activation and comments
Write same-day learning memo
```

## Reddit Guardrails

For Reddit OAuth/API operation across venture accounts, use `references/reddit-venture-oauth-setup.md`. Core rule: each venture needs its own Reddit identity, developer app/client credentials, token path, and pre-action `/api/v1/me` username verification. If Reddit returns `invalid_redirect_uri parameter`, the authorization URL's redirect URI does not exactly match the URI configured on the Reddit app for that client ID; use the exact configured redirect URI (including trailing slash and hosted callbacks such as `https://oauth.n8n.cloud/oauth2/callback`) and regenerate the auth URL rather than guessing or reusing another venture's app.

For the shared testing-lab Reddit account `u/Dapper-Analysis-6212`, use `references/shared-lab-reddit-oauth-dapper-2026-06-08.md`. Core flow: save `reddit_dapper.env`, generate approval URL with the generic `scripts/factory/reddit_oauth_flow.py` helper, exchange the full callback URL, verify `/api/v1/me` is exactly Dapper, then check/trigger the shared lab cron. If Reddit says `invalid client id`, first check whether the client ID and secret were reversed; the client ID is the small value under the app name, while the secret is labeled `secret`.

For shared testing-lab Reddit loops and adjacent SEO cron audits, use `references/shared-testing-lab-reddit-and-seo-loop-audit.md`. Core rule: before telling Antoine that pages/posts are being pushed, inspect the automation state and separate existing active jobs from newly created jobs, paused/deprecated jobs, and auth/deploy blockers. Never post from a substitute Reddit account when the intended lab account token is missing; draft/log/report the blocker instead. Once OAuth is installed, verify the cron is enabled and manually run it when Antoine asks whether it has started.

For directory/newsletter surfaces like AgentAppStore, use `references/consumer-category-content-vs-founder-loop.md`: consumer-facing category/problem posts are the primary validation loop; founder notification is only a secondary data-quality/share-loop test and should not be treated as evidence of consumer demand.

- `references/shared-testing-lab-ugc-and-reddit-crons.md`: current early validation probes should publish from shared lab accounts — Reddit `u/Dapper-Analysis-6212` and TikTok `@chronically.onlin313` via Postiz — while keeping links, captions, UTMs, and ledger rows venture-specific.
- `references/tiktok-zero-view-autoposting-audit-2026-06-10.md`: audit/recovery pattern for TikTok lab accounts where Postiz publishes public videos but every post remains at 0 views; pause autoposting, verify profile/video state, treat it as account/distribution suppression before judging creative or product demand.

For support, mental health, relationship, ADHD, or personal-crisis spaces:

- Prefer no-link useful answers.
- Avoid product mentions unless asked or rules clearly allow.
- Avoid medical/legal/therapy claims.
- Do not post into abuse/self-harm/minor/legal/medical crisis threads except with safety-oriented, non-product guidance.
- Stop if comments are hidden from logged-out/public Reddit JSON.
- Do not spray links from fresh accounts.
- Avoid repeating near-identical comment templates.

## Paid ad launch and result-review gate

When Antoine asks to push a creative as an ad or start paid traffic, treat it as an execution task, not a strategy brainstorm. Still respect spend/payment gates.

When Antoine asks to check results for a paid campaign, first try native platform access/API for spend, impressions, CTR, CPM, CPC, delivery status, review status, and the actual live ad creative/copy. If the question involves ad/page fit, do **not** infer the ad from repo copy, memory, or campaign metrics alone: inspect the Meta/TikTok/etc. creative preview when authenticated, then compare the creative promise, landing-page first viewport, and CTA ask. If native access is blocked by login/session/token state, say plainly that the creative could not be inspected from the ad platform, then fall back to available product telemetry/repo/landing evidence and label the read as provisional.

If native access is blocked by login/session/token state, do **not** stop at the blocker: query product telemetry by the campaign UTM and report attributed landing/CTA behavior, clearly labeling native ad metrics or creative-level observations as unavailable. For PostHog-backed probes, use `posthog-venture-telemetry` reference `paid-ad-utm-readout-when-platform-access-blocked.md`.

Before interpreting a paid ad result, verify the actual live creative and live destination when access exists. Do not critique ad/page alignment from memory or a stale local repo copy. If Meta Ads is blocked by login/session state, say so and mark any alignment read as provisional. If Antoine corrects that the live hero contains an example/demo not visible locally, treat the live surface as authoritative and shift the diagnosis.

When Antoine asks to check results for a paid campaign, first try native platform access/API for spend, impressions, CTR, CPM, CPC, delivery status, and review status. If native access is blocked by login/session/token state, do **not** stop at the blocker: query product telemetry by the campaign UTM and report attributed landing/CTA behavior, clearly labeling native ad metrics as unavailable. For PostHog-backed probes, use `posthog-venture-telemetry` reference `paid-ad-utm-readout-when-platform-access-blocked.md`.

Paid-ad interpretation pitfall: do not claim ad/landing-page mismatch unless you have actually inspected the ad creative and the live destination page. If Meta/other native access is unavailable, say that plainly, then reason from the landing copy/assets and telemetry as a conditional read. When the ad and landing promise appear aligned but landing visits produce zero CTA clicks, shift the diagnosis toward CTA trust/friction, proof specificity, and whether the CTA action works, rather than repeating generic “message mismatch” advice.

Small-budget landing-visit read: if a first paid test gets real landing visits at plausible cost but zero primary CTA clicks (for example Alma-style SMS/assistant probes), do not call the ad itself a failure. Read it as: the creative can create curiosity, but the landing page is not converting that curiosity into the next action. The next useful actions are to inspect the live creative + destination, verify the CTA physically works, add a lower-friction micro-conversion if the primary action is high-trust/high-friction, strengthen first-viewport proof/example specificity, and only then decide whether to continue spend.

Broken activation path rule: if the paid destination’s primary action is temporarily nonfunctional or gated (for example SMS awaiting provider verification), do not scale paid traffic or creator distribution into that dead end. Either pause/cap spend, add a working micro-conversion, or use the period for qualitative validation only. Treat paid visits to a broken CTA as top-of-funnel curiosity data, not product demand data.

1. First verify ad-platform access in the active browser/API session and whether the ad account has a payment method. For Meta, open Ads Manager and confirm the session is logged in before promising launch.
2. If authenticated, create the campaign/ad set/ad with explicit objective, budget, destination URL, UTM, creative, primary text, headline, CTA, and publish status. Report campaign/ad IDs.
3. For Meta Graph API launches, use `references/meta-graph-paid-ad-launch.md`: never persist pasted access tokens, create the objects directly when auth/payment are available, then query campaign/ad set/ad statuses and report IDs plus `status` / `effective_status`. Treat ad `IN_PROCESS` with active configured status as Meta review/processing, not a failed launch.
4. If blocked by login, payment, or account selection, do not claim the ad is live. Prepare the complete launch spec instead: platform, campaign name, daily budget, objective, URL with UTMs, creative path/dimensions, copy, headline, description, CTA, target audience assumptions, and the exact auth step Antoine must complete.
5. Public-facing ad copy must pass the `avoid-ai-writing` skill before launch. Keep paid validation copy plain and concrete; avoid inflated AI/productivity language.
6. For a first static-image probe, default to a small traffic/landing-page campaign with a daily budget cap unless Antoine requests conversion optimization and pixel events are verified.

## Setup Workflow

1. **Define the sprint.**
   - Venture name.
   - Target user.
   - Pain phrase.
   - Activation event.
   - Traffic target for 7-14 days.

2. **Choose channels.**
   - Maximum 3 active channels.
   - Prefer one primary channel with daily cadence.
   - Include channel-model-fit rationale.
   - Decide whether the sprint is personal-founder-led, brand/project-led, or partner/creator-led. If personal accounts are disallowed, create the brand account kit before posting copy.

3. **Set cadence.**
   - Pick Tier 0, 1, 2, or 3.
   - Document max posts/comments per run.
   - Document link policy.

4. **Prepare assets and conversion capture.**
   - UTM links.
   - Comment/post templates.
   - Disclosure line.
   - No-go claims.
   - Safety routing language.
   - If the sprint drives to a newsletter/waitlist, verify the signup UX and backend capture before sending traffic. Prefer a native first-party form with a server-side provider API proxy over brittle third-party embed scripts; see `references/newsletter-native-beehiiv-signup.md`.

5. **Schedule or operate.**
   - Use Hermes cron only when real posting is acceptable.
   - Otherwise use draft-only cadence.
   - Deliver results to Telegram/origin.
   - After creating/recreating scheduled jobs, immediately list the scheduler and report the actual live job names, IDs, cadence, and next run. Do not assume a documented cadence is active until the scheduler confirms it.
   - Cron prompt pitfall: do not embed shell examples that include `curl` plus secret-bearing auth headers (for example Supabase/Reddit tokens). Hermes cron scans assembled prompts and will block these as possible exfiltration. Put credentialed API calls in helper scripts/tools, and keep the cron prompt at the task level.

6. **Verify each run.**
   - Public visibility.
   - Removal/filtering status.
   - Replies/upvotes/comments.
   - Traffic and activation events.

7. **Log learnings.**
   - Update distribution experiment ledger.
   - Update project GTM note.
   - Promote reusable lessons into factory learning log.

## Minimum Metrics

Track per project:

```text
touches_attempted
publicly_visible_touches
link_touches
qualified_visits
activation_starts
activation_completions
comments/replies
creator/mod responses
filtering/removal events
```

## Generic Reddit Miner Pattern

When a Reddit loop is getting engagement for one venture, extract the reusable layer as a venture-configured **miner + approval queue**, not as another hard-coded posting script.

Use `references/generic-reddit-miner-v1.md` for the detailed pattern. At minimum:

1. Keep the generic v1 additive: mine, score, and write draft queues; do not replace live guarded posting cron jobs.
2. Put venture-specific choices in config: account, subreddits, pain phrases, no-link subreddits, skip phrases, caps, and pause statuses.
3. Read the distribution experiment ledger before recommending action; `paused_visibility_review` means keep mining but mark candidates `research_only`.
4. Preserve the current Reddit posture: useful no-link comments first, link-bearing only when clearly allowed, and no auto-posting until visibility/account trust is proven.
5. Unit-test config defaults, scoring, safety filters, pause behavior, and queue rendering before using generated queues operationally.

## Traffic Sprint Status Review

When Antoine asks “how is the traffic sprint going?” or asks for a venture/campaign status read, use `references/traffic-sprint-status-review.md`. The critical pattern is to triangulate sprint artifacts, cron health, public URL verification, and product analytics before giving judgment. Separate shipped infrastructure from actual qualified traffic. If intended analytics events are absent, check current equivalent product events before declaring zero activation.

## Engagement Audit Workflow

When Antoine asks whether Reddit/community distribution is working, do an engagement audit instead of relying on raw posting counts.

Use `references/reddit-engagement-audit.md` for the detailed pattern. If the concern is weak on-platform engagement across multiple products or loops that are running but not earning replies/upvotes, also use `references/reddit-platform-engagement-quality-gate.md`.

At minimum:

1. Pull authenticated account history for each project account.
2. Compute comments, posts, total score, replies, post-thread comments, and removed/spam flags.
3. Cross-check public visibility from logs or logged-out/public checks when possible.
4. Compare against product analytics: Reddit-attributed visits and activation events.
5. Rank subreddits/channels by useful signal, not volume alone.
6. Update the distribution experiment ledger and regenerate command-center status when applicable.

Interpretation rule: a high-fit no-link answer with replies in a target community usually beats a link post that gets filtered, ignored, or only attracts maker feedback.

Quality gate: score-1 comments with no replies are not engagement. If most recent comments across a venture account sit at score <= 1 and generate no replies, report the loop as research/noise rather than distribution, even if the comments are visible and cron jobs are healthy. When this pattern appears across multiple products, audit account histories side-by-side before blaming one product’s positioning.

## Progress-photo / fitness waitlist outreach pattern

For early traffic to a body-photo fitness demand probe, lead with the user pain and tester ask rather than generic AI-fitness positioning:

```text
I’m testing a private progress-photo coach.

The idea: instead of just weighing yourself, you upload consistent weekly gym progress photos and get body-neutral notes on what changed + what to adjust next.

Looking for 20 early testers — especially people doing a bulk, cut, recomp, or trying to grow a specific area.

Would you use this?
[link]
```

If Antoine removes a trust/safety sentence from outreach copy, return the revised copy directly and do not re-argue the deleted line. Keep stronger privacy/body-neutral trust language on the landing page itself where it supports conversion, but keep social posts concise when he asks.

Default first validation stack for this class is **Reddit + Instagram Reels + TikTok**, not Reddit-only and not SEO-first:

- Reddit: highest-intent written feedback and first qualified waitlist conversions; use the transparent “20 early testers” frame in communities where links/feedback requests are allowed.
- Instagram Reels: visual pain and aspiration testing with progress-photo/scale-not-moving hooks; use simple image/video posts before polished ads.
- TikTok: fast hook testing for broad consumer pull; reuse the strongest IG hooks and iterate quickly.

Use X/Threads/founder-feedback only as a low-effort fourth bucket for qualitative objections. Do not start SEO for this kind of product until the landing page has early conversion signal from qualified social/community traffic. SEO pages can come later for terms like progress photos vs scale, how to take gym progress photos, body recomposition photo tracking, etc.

## Decision Rules

After 7-14 days:

- **Continue:** qualified traffic appears and activation is nonzero.
- **Iterate:** traffic appears but activation is weak.
- **Change channel:** effort is visible but traffic is too low.
- **Pause:** filtering/mod risk is high.
- **Kill/park:** no qualified traffic path after credible channel tests.

Do not interpret product metrics if qualified traffic is near zero.

## Command Center Integration

For each new project, add a distribution experiment entry with:

```json
{
  "venture_id": "...",
  "status": "planned|running|paused|closed",
  "channel": "reddit|creator|seo|paid|...",
  "tactic": "...",
  "cadence": "...",
  "target": "...",
  "guardrails": ["..."],
  "latest_signal": "..."
}
```

The command center should surface projects with no traffic cadence as stale.

## AI UGC and generated ad execution rule

When Antoine asks for UGC but says to generate it with AI tools, use `references/ai-ugc-generation-mvp.md`. Do not answer only with creator sourcing advice. Make a small generated batch if available tooling permits, but label it as synthetic/demo UGC and do not imply real customer or creator endorsement. If photoreal avatar/video generation is gated by provider setup, produce a local MVP fallback when useful and state the exact upgrade path.

When Antoine asks to make a static ad creative and image generation is configured, use `references/ai-generated-static-ad-workflow.md`: inspect the live destination page, generate the polished visual/background with AI, then overlay exact copy and CTA locally. Do not default to a Pillow-only mockup for polished paid social ads. Do not rely on the image model for exact text; generated text often mangles spelling. If Antoine requests a copy change inside the image, update the local overlay unless the visual concept itself needs to change.

When Antoine asks for FAL, Veo, Pika, Wan, Kling, MiniMax/Hailuo, or “good quality video as cheap as possible,” also load `references/fal-video-model-sprint.md`. For AI UGC/talking-head/creator-selfie requests, also load `references/fal-video-ugc-workflow.md` before answering. First check whether a provider key/tooling is actually configured (for example `FAL_API_KEY`) and report that capability accurately; do not undersell the factory as unable to make realistic UGC if FAL/Veo-style generation is available. Default to a cost ladder: cheap silent B-roll exploration first, polished B-roll second, native-audio/talking-head hooks only where needed. For recurring UGC personas like Emma, use the reference-frame image-to-video workflow in that reference instead of repeated text-to-video. Do not spend premium video-model budget on complete 30s ads before compositing cheaper short clips with our own captions, text-message UI, voiceover, CTA cards, and UTMs.

## Verification Checklist

- [ ] New project has a traffic/distribution block.
- [ ] Cadence tier is explicit.
- [ ] Link policy is explicit.
- [ ] UTMs exist for link-bearing traffic.
- [ ] Public visibility check is defined.
- [ ] Daily/weekly review cadence exists.
- [ ] Guardrails prevent spam/account burning.
- [ ] Distribution experiment ledger updated.
- [ ] Product decisions are not made from zero-traffic data.
- [ ] If traffic points to a newsletter/waitlist, signup capture is verified end-to-end in production, not just visually.
- [ ] If SEO is part of the traffic plan, public `/sitemap.xml`, `/robots.txt`, representative SEO URLs, metadata, and Search Console submission status are checked; see `references/seo-page-discovery-and-verification.md`.
