diff --git a/docs/marketing/data/growth-experiment-evidence.csv b/docs/marketing/data/growth-experiment-evidence.csv index a53cf91..cceb4ad 100644 --- a/docs/marketing/data/growth-experiment-evidence.csv +++ b/docs/marketing/data/growth-experiment-evidence.csv @@ -2,3 +2,4 @@ experiment_id,status,window_start,window_end,control_page_views,control_cta_clic 2026_q2_landing_page_intent_comparison,pending_evidence,,,,,,,,,,,pending,pending,insufficient_data,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_14_day_window 2026_q2_source_backed_assets_intent_validation,pending_evidence,,,,,,,,,,,pending,pending,insufficient_data,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_14_day_window_and_search_console_query_baseline_and_ai_answer_audit 2026_q2_readme_cards_intent_validation,pending_evidence,,,,,,,,,,,pending,pending,insufficient_data,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_14_day_window_and_search_console_query_baseline_and_ai_answer_audit +2026_q2_cold_start_materials_intent_validation,pending_evidence,,,,,,,,,,,pending,pending,insufficient_data,needs_14_days_of_ga4_page_view_cta_clicked_generation_started_generation_failed_search_console_query_baseline_and_ai_answer_audit_before_deciding diff --git a/docs/marketing/data/growth-experiment-registry.csv b/docs/marketing/data/growth-experiment-registry.csv index e0af15f..79dc9a0 100644 --- a/docs/marketing/data/growth-experiment-registry.csv +++ b/docs/marketing/data/growth-experiment-registry.csv @@ -2,3 +2,4 @@ experiment_id,status,lifecycle_stage,target_user,control_path,variant_path,prima 2026_q2_landing_page_intent_comparison,active,validation,ai_project_builder,/product/github-repo-to-launch-package,/use-cases/ai-project-launch,generate_launch_card,cta_clicked_per_page_view,generation_failed_per_generation_started,higher_cta_rate_with_no_significant_guardrail_regression,14_days,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed 2026_q2_source_backed_assets_intent_validation,active,validation,product_marketer,/product/github-repo-to-launch-package,/product/source-backed-launch-assets,generate_launch_card,cta_clicked_per_page_view,generation_failed_per_generation_started,higher_cta_rate_with_no_significant_guardrail_regression,14_days,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit 2026_q2_readme_cards_intent_validation,active,validation,design_lead,/product/github-repo-to-launch-package,/product/readme-marketing-cards,generate_launch_card,cta_clicked_per_page_view,generation_failed_per_generation_started,higher_cta_rate_with_no_significant_guardrail_regression,14_days,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit +2026_q2_cold_start_materials_intent_validation,active,validation,ai_project_builder,/product/github-repo-to-launch-package,/product/cold-start-launch-materials,generate_launch_card,cta_clicked_per_page_view,generation_failed_per_generation_started,higher_cta_rate_with_no_significant_guardrail_regression,14_days,ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit diff --git a/docs/marketing/data/search-ai-baseline-prompts.csv b/docs/marketing/data/search-ai-baseline-prompts.csv index 0e8286c..bc62558 100644 --- a/docs/marketing/data/search-ai-baseline-prompts.csv +++ b/docs/marketing/data/search-ai-baseline-prompts.csv @@ -3,3 +3,5 @@ source_backed_assets_control,2026_q2_source_backed_assets_intent_validation,cont source_backed_assets_variant,2026_q2_source_backed_assets_intent_validation,variant,/product/source-backed-launch-assets,product_marketer,source backed launch assets,source_backed_launch_assets,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|source-backed|launch assets|README|social|deck|outreach,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,check whether source-backed asset intent is visible and accurately described readme_cards_control,2026_q2_readme_cards_intent_validation,control,/product/github-repo-to-launch-package,design_lead,GitHub repo to launch package,github_repo_to_launch_package,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|launch package|source-backed|README|social|deck|outreach,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,compare generic launch-package category demand against README card page demand readme_cards_variant,2026_q2_readme_cards_intent_validation,variant,/product/readme-marketing-cards,design_lead,README marketing cards,readme_marketing_cards,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|README|marketing cards|social preview|launch visuals|source-backed,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,check whether README marketing card intent is visible and accurately described +cold_start_materials_control,2026_q2_cold_start_materials_intent_validation,control,/product/github-repo-to-launch-package,ai_project_builder,GitHub repo to launch package,github_repo_to_launch_package,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|launch package|source-backed|README|social|deck|outreach,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,compare generic launch-package category demand against cold-start launch-materials demand +cold_start_materials_variant,2026_q2_cold_start_materials_intent_validation,variant,/product/cold-start-launch-materials,ai_project_builder,cold start launch materials,cold_start_launch_materials,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|cold-start|launch materials|README|social|deck|visual|outreach,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,check whether full launch-materials intent is visible and accurately described diff --git a/docs/marketing/data/semantic-link-inventory.csv b/docs/marketing/data/semantic-link-inventory.csv index 838629e..6488fbd 100644 --- a/docs/marketing/data/semantic-link-inventory.csv +++ b/docs/marketing/data/semantic-link-inventory.csv @@ -1,6 +1,7 @@ status,funnel_stage,buyer_stage,persona,intent_cluster,page_type,slug,canonical_url,primary_keyword,primary_cta,utm_source,utm_medium,utm_campaign,utm_content,crm_campaign,distributed_url published,top,consideration,open_source_maintainer,github_repo_to_launch_package,product,github-repo-to-launch-package,https://seekersai.com/product/github-repo-to-launch-package,github repo to launch package,generate_launch_card,google,organic,seo_foundation,product_category,2026_q2_seo_foundation,https://seekersai.com/product/github-repo-to-launch-package?utm_source=google&utm_medium=organic&utm_campaign=seo_foundation&utm_content=product_category published,top,consideration,product_marketer,source_backed_launch_assets,product,source-backed-launch-assets,https://seekersai.com/product/source-backed-launch-assets,source backed launch assets,generate_launch_card,perplexity,ai_search,ai_visibility,source_backed_assets,2026_q2_ai_visibility,https://seekersai.com/product/source-backed-launch-assets?utm_source=perplexity&utm_medium=ai_search&utm_campaign=ai_visibility&utm_content=source_backed_assets +published,top,consideration,ai_project_builder,cold_start_launch_materials,product,cold-start-launch-materials,https://seekersai.com/product/cold-start-launch-materials,cold start launch materials,generate_launch_card,google,organic,cold_start_materials,product_page,2026_q2_cold_start_materials,https://seekersai.com/product/cold-start-launch-materials?utm_source=google&utm_medium=organic&utm_campaign=cold_start_materials&utm_content=product_page published,top,consideration,design_lead,readme_marketing_cards,product,readme-marketing-cards,https://seekersai.com/product/readme-marketing-cards,readme marketing cards,generate_launch_card,google,organic,readme_assets,product_page,2026_q2_readme_assets,https://seekersai.com/product/readme-marketing-cards?utm_source=google&utm_medium=organic&utm_campaign=readme_assets&utm_content=product_page published,top,consideration,ai_project_builder,github_repo_visual_explainer,product,github-repo-visual-explainer,https://seekersai.com/product/github-repo-visual-explainer,github repo visual explainer,generate_launch_card,google,organic,visual_explainer,product_page,2026_q2_visual_explainer,https://seekersai.com/product/github-repo-visual-explainer?utm_source=google&utm_medium=organic&utm_campaign=visual_explainer&utm_content=product_page published,top,consideration,founder,github_repo_to_launch_deck,product,github-repo-to-launch-deck,https://seekersai.com/product/github-repo-to-launch-deck,github repository pitch deck generator,generate_launch_card,google,organic,launch_deck,product_page,2026_q2_launch_deck,https://seekersai.com/product/github-repo-to-launch-deck?utm_source=google&utm_medium=organic&utm_campaign=launch_deck&utm_content=product_page diff --git a/docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md b/docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md new file mode 100644 index 0000000..cb0d72e --- /dev/null +++ b/docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md @@ -0,0 +1,151 @@ +# Cold-Start Launch Materials Hub + +Date: 2026-06-02 + +## Growth Hypothesis + +If QuickFork publishes a product-led hub for `cold start launch materials`, AI project builders and maintainers will better understand the full product value unit: source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL. + +This is a landing-page and measurement slice. It does not validate demand until production behavior, Search Console data, AI-answer observations, and user feedback are collected. + +## Lifecycle Stage + +P1/P2: High-intent product page validation plus SEO/GEO foundation. + +The page connects Discovery and Validation work to the existing Activation surface: generate a free repo brief. + +## Target User + +- AI project builders preparing a first public launch. +- Open-source maintainers who need README and social-preview clarity. +- Indie technical founders who need launch materials before hiring marketing support. +- DevRel teams that repeatedly turn repositories into public examples, decks, and outreach. + +## Primary CTA + +Generate free repo brief. + +## Metrics + +Primary metric: + +- `cta_clicked_per_page_view` for `/product/cold-start-launch-materials`. + +Supporting metrics: + +- `page_view` with `intent_cluster=cold_start_launch_materials`. +- `generation_started` and `generation_failed` after the page visit. +- Artifact copy/download behavior after generation. +- Search Console impressions and clicks for `cold start launch materials`. +- AI-answer audit accuracy across ChatGPT search, Perplexity, Google AI Overview, Gemini, and Claude. + +Guardrail metrics: + +- `generation_failed_per_generation_started`. +- Unsupported-claim review flags. +- Browser analytics containing raw README text, raw artifact body, email, token, secret, API key, private repo content, or unsupported proof. + +## Changed Surfaces + +- `/product/cold-start-launch-materials` +- `src/marketing/link-catalog.ts` +- `src/marketing/page-content.ts` +- `docs/marketing/data/semantic-link-inventory.csv` +- `public/sitemap.xml` +- `public/llms.txt` +- `docs/marketing/data/growth-experiment-registry.csv` +- `docs/marketing/data/growth-experiment-evidence.csv` +- `docs/marketing/data/search-ai-baseline-prompts.csv` +- `src/marketing/growth-experiments.ts` +- `src/marketing/growth-experiment-report.ts` +- `src/marketing/search-ai-baseline.ts` +- `src/App.test.tsx` +- `src/seo/semantic-links.test.ts` +- `src/seo/public-growth.test.ts` +- `src/marketing/growth-experiments.test.ts` +- `src/marketing/growth-experiment-report.test.ts` +- `src/marketing/search-ai-baseline.test.ts` + +## Research Inputs + +- `.agents/product-marketing.md`: QuickFork is a source-backed repository-to-launch asset workflow, not a generic AI landing-page generator. +- `docs/marketing/research/2026-06-01-cold-start-launch-demand-analysis.md`: the product value unit should be a launch package, not a single generated page. +- `docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md`: P1 needs high-intent landing pages and P2 needs free repo launch brief activation. +- GitHub README docs: the README is a key repository explanation surface. +- GitHub social preview docs: repository sharing creates a real visual launch surface. +- Open Source Guides finding users: user discovery and feedback shape open-source launch messaging. +- Product Hunt launch guide: launch preparation includes concise story, media, maker context, and launch-day copy. + +## Claim Boundary + +Safe claims: + +- QuickFork starts from one public GitHub repository URL. +- QuickFork can describe a source-backed launch materials workflow for README, social, deck, visual, and outreach drafts. +- QuickFork requires human review before public publishing. +- Search and AI-answer visibility are pending measurement. + +Unsafe claims: + +- Validated demand for the new page. +- Exact public pricing. +- Business, search, launch, or adoption outcomes. +- Fully automated publishing or human-free claim approval. + +## Experiment Contract + +Experiment ID: + +- `2026_q2_cold_start_materials_intent_validation` + +Control: + +- `/product/github-repo-to-launch-package` + +Variant: + +- `/product/cold-start-launch-materials` + +Decision rule: + +- Higher `cta_clicked_per_page_view` with no significant guardrail regression after a minimum 14-day window. + +Required evidence: + +- GA4 page views and CTA clicks. +- Generation starts and failures. +- Search Console query baseline. +- AI-answer audit. + +Current decision: + +- `insufficient_data`. + +## Search And AI Baseline Rows + +- `cold_start_materials_control`: query `GitHub repo to launch package`, route `/product/github-repo-to-launch-package`. +- `cold_start_materials_variant`: query `cold start launch materials`, route `/product/cold-start-launch-materials`. + +Surfaces: + +- Google Search Console. +- ChatGPT search. +- Perplexity. +- Google AI Overview. +- Gemini. +- Claude. + +## Validation Status + +Hypothesis only. + +The route, SEO/GEO assets, and measurement contracts make the growth idea testable. They do not prove that users want this exact page, that the route ranks, or that AI answer systems cite it. + +## Next Validation Step + +After production deploy: + +1. Smoke-check `/product/cold-start-launch-materials`, `sitemap.xml`, and `llms.txt`. +2. Start the 14-day experiment window. +3. Run the Search Console and AI-answer baseline prompts. +4. Compare page CTA and generation behavior against `/product/github-repo-to-launch-package`. diff --git a/docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md b/docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md index 2357852..2d939a4 100644 --- a/docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md +++ b/docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md @@ -238,6 +238,65 @@ Growth and retention: Continue from artifact export tracking into paid-intent CTA tests after users copy or download README, social, deck, outreach, or visual prompt artifacts. +## 2026-06-02 Cold Start Launch Materials Hub Slice + +Hypothesis: + +- If QuickFork publishes a product-led hub for `cold start launch materials`, AI project builders and maintainers will better understand the full value unit: source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL. + +Lifecycle stage: + +- Discovery to Validation, with SEO/GEO foundation. + +Target user: + +- AI project builders, open-source maintainers, indie technical founders, and DevRel teams preparing first public launches. + +Changed surface: + +- Added `/product/cold-start-launch-materials` as a published product route. +- Added route narrative, definition, target user, evidence boundary, benefits, workflow, FAQs, source notes, metadata, and schema. +- Added the page to semantic link inventory, sitemap, `llms.txt`, and public-growth tests. +- Added `2026_q2_cold_start_materials_intent_validation` to the experiment registry and evidence report. +- Added Search Console and AI-answer baseline rows for `GitHub repo to launch package` and `cold start launch materials`. +- Added implementation plan at `docs/superpowers/plans/2026-06-02-cold-start-launch-materials-hub.md`. +- Added research handoff at `docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md`. + +Primary CTA: + +- Generate free repo brief. + +Primary metric: + +- `cta_clicked_per_page_view` for `/product/cold-start-launch-materials`. + +Guardrail: + +- `generation_failed_per_generation_started`. +- No browser analytics payload should include raw README text, raw artifact body, email, token, secret, API key, private repo content, or unsupported proof. + +Evidence gap: + +- The route and contracts are testable but demand remains unvalidated until a 14-day production window, Search Console baseline, AI-answer audit, and qualitative feedback exist. + +Evidence observed: + +- RED tests failed first because the route, catalog entry, public assets, experiment row, and baseline rows were missing. +- `npm test -- src/App.test.tsx src/seo/semantic-links.test.ts`: 2 files passed, 37 tests passed. +- `npm test -- src/seo/public-growth.test.ts`: 1 file passed, 6 tests passed. +- `npm test -- src/marketing/growth-experiments.test.ts src/marketing/search-ai-baseline.test.ts src/marketing/growth-experiment-report.test.ts`: 3 files passed, 20 tests passed. +- `npm test`: 24 files passed, 158 tests passed. +- `npm run build`: TypeScript and Vite production build passed. +- `git diff --check`: no whitespace errors. + +Decision: + +- Treat this as a hypothesis and measurement setup. Do not promote it as validated demand or AI-search visibility until production evidence exists. + +Next action: + +- Run full verification, ship through PR/CI/Vercel, smoke-check production, then begin the 14-day comparison against `/product/github-repo-to-launch-package`. + ## 2026-06-02 Evaluation Slice Hypothesis: diff --git a/docs/superpowers/plans/2026-06-02-cold-start-launch-materials-hub.md b/docs/superpowers/plans/2026-06-02-cold-start-launch-materials-hub.md new file mode 100644 index 0000000..0357d3c --- /dev/null +++ b/docs/superpowers/plans/2026-06-02-cold-start-launch-materials-hub.md @@ -0,0 +1,365 @@ +# Cold Start Launch Materials Hub Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Publish and measure a product-led `/product/cold-start-launch-materials` hub that explains QuickFork's full value unit: README, social, deck, visual, and outreach launch materials generated from one public GitHub repository URL. + +**Architecture:** Follow the existing catalog-backed marketing route pattern. Add one published `MarketingLink`, one route narrative, SEO/GEO public assets, experiment/search baseline rows, and growth documentation without changing generator behavior. + +**Tech Stack:** React, TypeScript, Vite, Vitest, static public crawler assets, CSV-backed marketing evidence docs. + +--- + +## File Structure + +- Modify `src/marketing/link-catalog.ts`: add the product route contract for `cold_start_launch_materials`. +- Modify `src/marketing/page-content.ts`: add the page narrative with definition, target user, workflow, FAQs, source notes, and claim boundary. +- Modify `src/App.test.tsx`: add a route rendering and metadata regression test. +- Modify `src/seo/semantic-links.test.ts`: lock catalog contract for the new route. +- Modify `src/seo/public-growth.test.ts`: lock sitemap and `llms.txt` entries. +- Modify `src/marketing/growth-experiments.ts` and `src/marketing/growth-experiments.test.ts`: add active validation experiment against `/product/github-repo-to-launch-package`. +- Modify `src/marketing/search-ai-baseline.ts`, `src/marketing/search-ai-baseline.test.ts`, and `docs/marketing/data/search-ai-baseline-prompts.csv`: add Search Console and AI-answer prompt coverage for the new route. +- Modify `docs/marketing/data/growth-experiment-registry.csv` and `docs/marketing/data/growth-experiment-evidence.csv`: add evidence rows for the new experiment. +- Modify `public/sitemap.xml`, `public/llms.txt`, and `src/seo/seo-assets.ts`: publish the route to crawler/AI surfaces. +- Create `docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md`: record hypothesis, lifecycle stage, target user, CTA, metrics, guardrails, evidence boundary, and deployment evidence placeholders. +- Modify `docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md`: append this P1/P2 hub slice and next validation action. +- Update Obsidian strategy mirror after repo changes: `/Users/moose/Documents/Moose's Birth ID/QuickFork/SEO Growth/2026-06-01 QuickFork Cold Start Launch Growth Iteration.md`. + +## Task 1: RED Tests For The New Product Hub + +**Files:** +- Modify: `src/App.test.tsx` +- Modify: `src/seo/semantic-links.test.ts` +- Modify: `src/seo/public-growth.test.ts` +- Modify: `src/marketing/growth-experiments.test.ts` +- Modify: `src/marketing/search-ai-baseline.test.ts` + +- [ ] **Step 1: Add a failing App route test** + +Add a Vitest case that visits `/product/cold-start-launch-materials?utm_source=google`, renders the product page, and expects: + +```ts +expect( + screen.getByRole("heading", { + name: /Cold Start Launch Materials From A GitHub Repo/i, + }), +).toBeInTheDocument(); +expect(screen.getAllByText(/README, social, deck, visual, and outreach/i).length).toBeGreaterThan(0); +expect(screen.getAllByText(/AI project builders, open-source maintainers/i).length).toBeGreaterThan(0); +expect(screen.getByText(/Turn one repo into a launch-materials brief/i)).toBeInTheDocument(); +expect(screen.getByText(/Package four launch channels together/i)).toBeInTheDocument(); +expect(screen.getByText(/What are cold-start launch materials/i)).toBeInTheDocument(); +expect(screen.getByRole("link", { name: /Product Hunt launch guide/i })).toHaveAttribute( + "href", + expect.stringContaining("producthunt.com"), +); +expect(screen.getByText("Last updated: June 2, 2026")).toBeInTheDocument(); +expect(document.title).toBe("Cold Start Launch Materials | QuickFork"); +expect(document.querySelector('meta[name="description"]')).toHaveAttribute( + "content", + "QuickFork maps cold start launch materials demand into source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL.", +); +expect(document.querySelector('link[rel="canonical"]')).toHaveAttribute( + "href", + "https://seekersai.com/product/cold-start-launch-materials", +); +expect(window.dataLayer).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + event: "page_view", + page_path: "/product/cold-start-launch-materials", + page_type: "product", + buyer_stage: "consideration", + intent_cluster: "cold_start_launch_materials", + utm_source: "google", + }), + ]), +); +expect(document.body.textContent).not.toMatch( + /\b(guaranteed|rankings|revenue|customers|viral|fully autonomous)\b/i, +); +expect(JSON.stringify(window.dataLayer)).not.toMatch(/email|token|secret|api_key|raw|readme/i); +``` + +- [ ] **Step 2: Add failing catalog/SEO tests** + +Assert `getMarketingLinkByPath("/product/cold-start-launch-materials")` returns: + +```ts +expect.objectContaining({ + intentCluster: "cold_start_launch_materials", + primaryKeyword: "cold start launch materials", + primaryCta: "generate_launch_card", +}) +``` + +Assert `getMarketingPageDescription(link!)` contains: + +```ts +"README, social, deck, visual, and outreach drafts" +``` + +Assert `public/sitemap.xml`, `public/llms.txt`, and `src/seo/seo-assets.ts` contain the new URL and description. + +- [ ] **Step 3: Add failing experiment/search baseline tests** + +Add expectations that: + +```ts +getGrowthExperimentById("2026_q2_cold_start_materials_intent_validation") +``` + +exists with control `/product/github-repo-to-launch-package`, variant `/product/cold-start-launch-materials`, target user `ai_project_builder`, active status, and evidence requiring GA4, Search Console, and AI-answer audit. + +Add expectations that `getSearchAiBaselineRowsForExperiment("2026_q2_cold_start_materials_intent_validation")` returns control and variant rows for: + +```ts +"GitHub repo to launch package" +"cold start launch materials" +``` + +- [ ] **Step 4: Run focused tests and verify RED** + +Run: + +```bash +npm test -- src/App.test.tsx src/seo/semantic-links.test.ts src/seo/public-growth.test.ts src/marketing/growth-experiments.test.ts src/marketing/search-ai-baseline.test.ts +``` + +Expected: fail because `cold_start_launch_materials` route, experiment, and baseline rows are not implemented. + +## Task 2: GREEN Product Route And Narrative + +**Files:** +- Modify: `src/marketing/link-catalog.ts` +- Modify: `src/marketing/page-content.ts` + +- [ ] **Step 1: Add catalog link** + +Add a published product link near the other top-funnel product routes: + +```ts +{ + status: "published", + funnelStage: "top", + buyerStage: "consideration", + persona: "ai_project_builder", + intentCluster: "cold_start_launch_materials", + pageType: "product", + slug: "cold-start-launch-materials", + canonicalUrl: "https://seekersai.com/product/cold-start-launch-materials", + primaryKeyword: "cold start launch materials", + primaryCta: "generate_launch_card", + crmCampaign: "2026_q2_cold_start_materials", + utm: { + source: "google", + medium: "organic", + campaign: "cold_start_materials", + content: "product_page", + }, +} +``` + +- [ ] **Step 2: Add route narrative** + +Add `cold_start_launch_materials` to `pageNarratives` with: + +- 40-60 word definition block. +- Target user: AI project builders, open-source maintainers, indie technical founders, and DevRel teams. +- Job-to-be-done: generate launch materials across README, social, deck, visual, and outreach surfaces from the same repo evidence. +- Evidence boundary: repository metadata, README, linked docs, official assets, generated quality reports, and explicit user input only. +- Benefits titled exactly: + - `Turn one repo into a launch-materials brief` + - `Package four launch channels together` + - `Make the project understandable before the code` + - `Route launch urgency into activation` +- Workflow titled exactly: + - `Capture repository evidence` + - `Build the launch-materials map` + - `Draft channel-specific assets` + - `Review, export, and measure` +- FAQs including: + - `What are cold-start launch materials?` + - `Why generate launch materials from a GitHub repository?` + - `Which launch channels should QuickFork cover first?` + - `Does QuickFork guarantee launch results?` +- Source notes for GitHub README docs, GitHub social preview docs, Open Source Guides finding users, and Product Hunt launch guide. +- `lastUpdated: "June 2, 2026"`. + +- [ ] **Step 3: Run focused route/catalog tests** + +Run: + +```bash +npm test -- src/App.test.tsx src/seo/semantic-links.test.ts +``` + +Expected: route/catalog assertions pass except public asset and experiment tests, if run separately. + +## Task 3: GREEN SEO/GEO Public Assets + +**Files:** +- Modify: `public/sitemap.xml` +- Modify: `public/llms.txt` +- Modify: `src/seo/seo-assets.ts` + +- [ ] **Step 1: Add sitemap URL** + +Add: + +```xml + + https://seekersai.com/product/cold-start-launch-materials + 2026-06-02 + weekly + 0.8 + +``` + +- [ ] **Step 2: Add llms entry** + +Add: + +```md +- Cold Start Launch Materials | QuickFork: https://seekersai.com/product/cold-start-launch-materials - Product, Consideration. QuickFork maps cold start launch materials demand into source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL. +``` + +- [ ] **Step 3: Add generated SEO asset text** + +Keep `src/seo/seo-assets.ts` aligned with `public/llms.txt`. + +- [ ] **Step 4: Run public-growth tests** + +Run: + +```bash +npm test -- src/seo/public-growth.test.ts +``` + +Expected: public SEO/GEO asset tests pass. + +## Task 4: GREEN Experiment And AI-Search Baseline Contract + +**Files:** +- Modify: `src/marketing/growth-experiments.ts` +- Modify: `docs/marketing/data/growth-experiment-registry.csv` +- Modify: `docs/marketing/data/growth-experiment-evidence.csv` +- Modify: `src/marketing/search-ai-baseline.ts` +- Modify: `docs/marketing/data/search-ai-baseline-prompts.csv` + +- [ ] **Step 1: Add active growth experiment** + +Add: + +```ts +{ + id: "2026_q2_cold_start_materials_intent_validation", + status: "active", + lifecycleStage: "validation", + targetUser: "ai_project_builder", + controlPath: "/product/github-repo-to-launch-package", + variantPath: "/product/cold-start-launch-materials", + primaryCta: "generate_launch_card", + primaryMetric: "cta_clicked_per_page_view", + guardrailMetric: "generation_failed_per_generation_started", + decisionRule: "higher_cta_rate_with_no_significant_guardrail_regression", + minimumWindow: "14_days", + evidenceRequired: + "ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit", +} +``` + +- [ ] **Step 2: Add registry/evidence CSV rows** + +Add a registry row matching the experiment and an evidence row with status `pending`, no claimed result, and the evidence note: + +```csv +Needs 14 days of GA4 page_view, cta_clicked, generation_started, generation_failed, Search Console query baseline, and AI-answer audit before deciding. +``` + +- [ ] **Step 3: Add Search/AI baseline rows** + +Add `cold_start_materials_control` and `cold_start_materials_variant` rows to both TypeScript and CSV with surfaces: + +```txt +google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude +``` + +and forbidden claims: + +```txt +pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation +``` + +- [ ] **Step 4: Run experiment/baseline tests** + +Run: + +```bash +npm test -- src/marketing/growth-experiments.test.ts src/marketing/search-ai-baseline.test.ts src/marketing/growth-experiment-report.test.ts +``` + +Expected: all experiment/report/baseline tests pass. + +## Task 5: Docs, Obsidian, Verification, And Shipping + +**Files:** +- Create: `docs/marketing/research/2026-06-02-cold-start-launch-materials-hub.md` +- Modify: `docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md` +- Modify: `/Users/moose/Documents/Moose's Birth ID/QuickFork/SEO Growth/2026-06-01 QuickFork Cold Start Launch Growth Iteration.md` + +- [ ] **Step 1: Add research handoff doc** + +Document hypothesis, lifecycle stage, target user, CTA, metrics, guardrails, evidence boundary, research inputs, changed surfaces, validation status, and next validation step. Mark demand as hypothesis only. + +- [ ] **Step 2: Append lifecycle plan entry** + +Add a `2026-06-02 Cold Start Launch Materials Hub Slice` section with target user, primary CTA, metrics, guardrails, evidence gap, and next validation step. + +- [ ] **Step 3: Update Obsidian mirror** + +Add date, branch, hypothesis, lifecycle stage, target user, changed surface, metric, guardrail, evidence observed, decision, and next action. Do not store secrets or raw analytics. + +- [ ] **Step 4: Run full verification** + +Run: + +```bash +npm test +npm run build +git diff --check +``` + +Expected: tests pass, build passes, no whitespace errors. + +- [ ] **Step 5: Commit and push** + +Run: + +```bash +git status -sb +git add AGENTS.md .agents docs public src +git diff --cached --check +git commit -m "feat: add cold-start launch materials hub" +git push -u origin feature/cold-start-launch-materials-hub +``` + +Expected: only this growth slice is staged and pushed. + +- [ ] **Step 6: PR, CI, merge, production smoke** + +Open PR with a body listing product route, SEO/GEO assets, experiment baseline, docs, and tests. After checks pass, merge into `main`, delete the remote branch, watch main CI/CD, and smoke-check: + +```bash +curl -L -s -o /dev/null -w '%{http_code}\n' https://seekersai.com/product/cold-start-launch-materials +curl -L -s https://seekersai.com/sitemap.xml | rg 'https://seekersai.com/product/cold-start-launch-materials' +curl -L -s https://seekersai.com/llms.txt | rg 'Cold Start Launch Materials' +``` + +Expected: route returns 200 and both public discovery files include the new page. + +## Self-Review + +- Spec coverage: The plan covers the product hub, target user demand framing, SEO/GEO discoverability, experiment priority, lifecycle documentation, Obsidian mirror, and PR/deployment verification. +- Placeholder scan: No TBD/TODO/later placeholders remain. +- Type consistency: `cold_start_launch_materials`, `/product/cold-start-launch-materials`, and `2026_q2_cold_start_materials_intent_validation` are used consistently across route, experiment, baseline, docs, and public assets. diff --git a/public/llms.txt b/public/llms.txt index f86b4ee..2bff008 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -31,6 +31,7 @@ QuickFork should use repository evidence, official project assets, README conten - GitHub Repo To Launch Package | QuickFork: https://seekersai.com/product/github-repo-to-launch-package - Product, Consideration. QuickFork maps github repo to launch package demand into source-backed README, social, deck, outreach, and visual explainer assets for cold-start technical launches. - Source Backed Launch Assets | QuickFork: https://seekersai.com/product/source-backed-launch-assets - Product, Consideration. QuickFork maps source backed launch assets demand into reviewable README, social, deck, outreach, and visual materials generated from repository evidence, source maps, and human-approved claims. +- Cold Start Launch Materials | QuickFork: https://seekersai.com/product/cold-start-launch-materials - Product, Consideration. QuickFork maps cold start launch materials demand into source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL. - README Marketing Cards | QuickFork: https://seekersai.com/product/readme-marketing-cards - Product, Consideration. QuickFork maps readme marketing cards demand into README-first hero cards, GitHub social preview direction, and launch visuals grounded in repository evidence and human review. - GitHub Repo Visual Explainer | QuickFork: https://seekersai.com/product/github-repo-visual-explainer - Product, Consideration. QuickFork maps github repo visual explainer demand into source-backed story maps, README hero cards, GitHub social previews, and deck-ready visual launch assets for technical repositories. - GitHub Repository Pitch Deck Generator | QuickFork: https://seekersai.com/product/github-repo-to-launch-deck - Product, Consideration. QuickFork maps github repository pitch deck generator demand into a deck-ready launch brief, slide outline, Product Hunt story, and outreach narrative from repository evidence. diff --git a/public/sitemap.xml b/public/sitemap.xml index 66457c1..6012526 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -18,6 +18,12 @@ monthly 0.8 + + https://seekersai.com/product/cold-start-launch-materials + 2026-06-02 + monthly + 0.8 + https://seekersai.com/product/readme-marketing-cards 2026-06-02 diff --git a/src/App.test.tsx b/src/App.test.tsx index c3aa2dd..5b148f5 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -299,6 +299,61 @@ describe("App", () => { ); }); + it("renders cold-start launch materials as the full product value-unit route", () => { + window.dataLayer = []; + window.history.replaceState({}, "", "/product/cold-start-launch-materials?utm_source=google"); + + render(); + + expect( + screen.getByRole("heading", { + name: /Cold Start Launch Materials From A GitHub Repo/i, + }), + ).toBeInTheDocument(); + expect(screen.getAllByText(/README, social, deck, visual, and outreach/i).length).toBeGreaterThan(0); + expect(screen.getAllByText(/AI project builders, open-source maintainers/i).length).toBeGreaterThan(0); + expect(screen.getByText(/Turn one repo into a launch-materials brief/i)).toBeInTheDocument(); + expect(screen.getByText(/Package four launch channels together/i)).toBeInTheDocument(); + expect(screen.getByText(/What are cold-start launch materials/i)).toBeInTheDocument(); + expect(screen.getByRole("link", { name: /Product Hunt launch guide/i })).toHaveAttribute( + "href", + expect.stringContaining("producthunt.com"), + ); + expect(screen.getByText("Last updated: June 2, 2026")).toBeInTheDocument(); + const primaryCta = screen + .getAllByRole("link", { name: /generate free repo brief/i }) + .find((link) => link.classList.contains("primaryButton")); + expect(primaryCta).toHaveAttribute("href", "/#hero"); + expect(document.title).toBe("Cold Start Launch Materials | QuickFork"); + expect(document.querySelector('meta[name="description"]')).toHaveAttribute( + "content", + "QuickFork maps cold start launch materials demand into source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL.", + ); + expect(document.querySelector('link[rel="canonical"]')).toHaveAttribute( + "href", + "https://seekersai.com/product/cold-start-launch-materials", + ); + const schema = JSON.parse(document.querySelector('script[data-quickfork-marketing-schema]')?.textContent ?? "{}"); + expect(schema["@type"]).toBe("FAQPage"); + expect(schema.mainEntity[0].name).toContain("What are cold-start launch materials"); + expect(window.dataLayer).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + event: "page_view", + page_path: "/product/cold-start-launch-materials", + page_type: "product", + buyer_stage: "consideration", + intent_cluster: "cold_start_launch_materials", + utm_source: "google", + }), + ]), + ); + expect(document.body.textContent).not.toMatch( + /\b(guaranteed|rankings|revenue|customers|viral|fully autonomous)\b/i, + ); + expect(JSON.stringify(window.dataLayer)).not.toMatch(/email|token|secret|api_key|raw|readme/i); + }, 10000); + it("renders source-backed launch assets as a high-intent product route", () => { window.dataLayer = []; window.history.replaceState({}, "", "/product/source-backed-launch-assets?utm_source=perplexity"); diff --git a/src/marketing/growth-experiment-report.ts b/src/marketing/growth-experiment-report.ts index 6bdfffd..f47d3fe 100644 --- a/src/marketing/growth-experiment-report.ts +++ b/src/marketing/growth-experiment-report.ts @@ -80,6 +80,25 @@ export const growthExperimentEvidence: readonly GrowthExperimentEvidence[] = [ nextEvidenceNeeded: "ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_14_day_window_and_search_console_query_baseline_and_ai_answer_audit", }, + { + experimentId: "2026_q2_cold_start_materials_intent_validation", + status: "pending_evidence", + windowStart: "", + windowEnd: "", + controlPageViews: undefined, + controlCtaClicks: undefined, + variantPageViews: undefined, + variantCtaClicks: undefined, + controlGenerationStarts: undefined, + controlGenerationFailures: undefined, + variantGenerationStarts: undefined, + variantGenerationFailures: undefined, + searchConsoleStatus: "pending", + aiVisibilityStatus: "pending", + decision: "insufficient_data", + nextEvidenceNeeded: + "needs_14_days_of_ga4_page_view_cta_clicked_generation_started_generation_failed_search_console_query_baseline_and_ai_answer_audit_before_deciding", + }, ]; export function getGrowthExperimentEvidenceById(experimentId: string) { diff --git a/src/marketing/growth-experiments.test.ts b/src/marketing/growth-experiments.test.ts index efab38c..55aa802 100644 --- a/src/marketing/growth-experiments.test.ts +++ b/src/marketing/growth-experiments.test.ts @@ -83,6 +83,24 @@ describe("growth experiment registry", () => { ); }); + it("adds the cold-start launch materials hub to page intent validation", () => { + expect(getGrowthExperimentById("2026_q2_cold_start_materials_intent_validation")).toEqual( + expect.objectContaining({ + status: "active", + lifecycleStage: "validation", + targetUser: "ai_project_builder", + controlPath: "/product/github-repo-to-launch-package", + variantPath: "/product/cold-start-launch-materials", + primaryCta: "generate_launch_card", + primaryMetric: "cta_clicked_per_page_view", + guardrailMetric: "generation_failed_per_generation_started", + minimumWindow: "14_days", + evidenceRequired: + "ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit", + }), + ); + }); + it("mirrors the editable CSV registry", () => { const { headers, rows } = parseRegistry(); diff --git a/src/marketing/growth-experiments.ts b/src/marketing/growth-experiments.ts index 2085ca3..fd1c0f7 100644 --- a/src/marketing/growth-experiments.ts +++ b/src/marketing/growth-experiments.ts @@ -66,6 +66,21 @@ export const growthExperimentRegistry: readonly GrowthExperiment[] = [ evidenceRequired: "ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit", }, + { + id: "2026_q2_cold_start_materials_intent_validation", + status: "active", + lifecycleStage: "validation", + targetUser: "ai_project_builder", + controlPath: "/product/github-repo-to-launch-package", + variantPath: "/product/cold-start-launch-materials", + primaryCta: "generate_launch_card", + primaryMetric: "cta_clicked_per_page_view", + guardrailMetric: "generation_failed_per_generation_started", + decisionRule: "higher_cta_rate_with_no_significant_guardrail_regression", + minimumWindow: "14_days", + evidenceRequired: + "ga4_page_view_and_cta_clicked_and_generation_started_and_generation_failed_and_search_console_query_baseline_and_ai_answer_audit", + }, ]; export function getGrowthExperimentById(id: string) { diff --git a/src/marketing/link-catalog.ts b/src/marketing/link-catalog.ts index b488d07..5043154 100644 --- a/src/marketing/link-catalog.ts +++ b/src/marketing/link-catalog.ts @@ -101,6 +101,25 @@ export const marketingLinks: readonly MarketingLink[] = [ content: "source_backed_assets", }, }, + { + status: "published", + funnelStage: "top", + buyerStage: "consideration", + persona: "ai_project_builder", + intentCluster: "cold_start_launch_materials", + pageType: "product", + slug: "cold-start-launch-materials", + canonicalUrl: "https://seekersai.com/product/cold-start-launch-materials", + primaryKeyword: "cold start launch materials", + primaryCta: "generate_launch_card", + crmCampaign: "2026_q2_cold_start_materials", + utm: { + source: "google", + medium: "organic", + campaign: "cold_start_materials", + content: "product_page", + }, + }, { status: "published", funnelStage: "top", diff --git a/src/marketing/page-content.ts b/src/marketing/page-content.ts index ed46dba..7cf4527 100644 --- a/src/marketing/page-content.ts +++ b/src/marketing/page-content.ts @@ -239,6 +239,97 @@ const pageNarratives: Partial> = { ], lastUpdated: "June 2, 2026", }, + cold_start_launch_materials: { + definition: + "Cold-start launch materials are source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL. QuickFork uses repository evidence as the source boundary so AI builders can explain a project before mature adoption proof exists.", + targetUser: + "AI project builders, open-source maintainers, indie technical founders, and DevRel teams preparing a first public launch.", + jobToBeDone: + "When a working repository is ready to share, help the builder generate launch materials across README, social, deck, visual, and outreach surfaces from the same source-backed project brief.", + evidenceBoundary: + "Launch material claims should come from repository metadata, README content, linked docs, official identity assets, generated quality reports, or explicit user input. Outcome claims, public pricing, and publishing decisions still need human review and measured evidence.", + benefits: [ + { + title: "Turn one repo into a launch-materials brief", + body: "Use README evidence, repo metadata, topics, official links, and explicit notes to create the factual base before drafting public-facing assets.", + }, + { + title: "Package four launch channels together", + body: "Keep README updates, social posts, deck structure, and product outreach aligned while preserving a visual explainer direction for the same project story.", + }, + { + title: "Make the project understandable before the code", + body: "Translate workflow, audience, proof limits, and setup context into launch copy that helps strangers understand why the repo matters.", + }, + { + title: "Route launch urgency into activation", + body: "Move visitors from the product hub into the free repo brief, artifact export behavior, Search Console baselines, and AI-answer audits.", + }, + ], + workflow: [ + { + title: "Capture repository evidence", + body: "Start with one public GitHub URL and normalize README content, repo metadata, topics, official assets, links, and user-provided launch notes.", + }, + { + title: "Build the launch-materials map", + body: "Separate source-backed facts, audience hypotheses, workflow steps, channel needs, and unsupported claims before asking models to draft.", + }, + { + title: "Draft channel-specific assets", + body: "Generate README recommendations, social launch copy, deck outline, visual explainer prompt, and outreach draft from the same project brief.", + }, + { + title: "Review, export, and measure", + body: "Humans approve claims and visuals, then QuickFork measures CTA clicks, generation starts, artifact exports, and full-package requests.", + }, + ], + faqs: [ + { + question: "What are cold-start launch materials?", + answer: + "They are reviewable README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL before a project has mature public launch proof.", + }, + { + question: "Why generate launch materials from a GitHub repository?", + answer: + "The repository contains the strongest public evidence for a technical project: README language, metadata, topics, official links, implementation context, identity assets, and proof boundaries.", + }, + { + question: "Which launch channels should QuickFork cover first?", + answer: + "The first package should cover README improvements, GitHub/social preview copy, a deck-ready story outline, a visual explainer prompt, and product outreach drafts for human review.", + }, + { + question: "Does QuickFork promise launch results?", + answer: + "No. QuickFork creates source-backed launch drafts and measurement surfaces. Public outcomes still need analytics, interviews, and post-launch evidence before they can be treated as proven.", + }, + ], + sourceNotes: [ + { + label: "GitHub Docs About READMEs", + body: "GitHub treats the README as the primary repository explanation surface, so cold-start launch material should begin with README evidence.", + url: "https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes", + }, + { + label: "GitHub Docs social preview", + body: "GitHub documents repository social previews, making shared-link visuals a concrete part of repository launch packaging.", + url: "https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/customizing-your-repositorys-social-media-preview?apiVersion=2022-11-28", + }, + { + label: "Open Source Guides finding users", + body: "Open Source Guides frames user discovery and feedback as part of launch work, which should shape audience and outreach drafts.", + url: "https://opensource.guide/finding-users/", + }, + { + label: "Product Hunt launch guide", + body: "Product Hunt launch preparation makes tagline, media, maker context, and launch-day copy practical review surfaces for a launch package.", + url: "https://www.producthunt.com/launch/preparing-for-launch", + }, + ], + lastUpdated: "June 2, 2026", + }, readme_marketing_cards: { definition: "README marketing cards are README-first hero cards, GitHub social preview direction, and launch visuals grounded in repository evidence and human review. They help visitors understand what a technical project does before reading the full README, code, benchmark notes, or launch announcement.", @@ -1101,6 +1192,9 @@ export function getMarketingPageHeadline(link: MarketingLink) { if (link.intentCluster === "source_backed_launch_assets") { return "Source Backed Launch Assets for repository evidence-driven launches."; } + if (link.intentCluster === "cold_start_launch_materials") { + return "Cold Start Launch Materials From A GitHub Repo."; + } if (link.intentCluster === "readme_marketing_cards") { return "README Marketing Cards for source-backed repository visuals."; } @@ -1161,6 +1255,9 @@ export function getMarketingPageDescription(link: MarketingLink) { if (link.intentCluster === "source_backed_launch_assets") { return "QuickFork maps source backed launch assets demand into reviewable README, social, deck, outreach, and visual materials generated from repository evidence, source maps, and human-approved claims."; } + if (link.intentCluster === "cold_start_launch_materials") { + return "QuickFork maps cold start launch materials demand into source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL."; + } if (link.intentCluster === "readme_marketing_cards") { return "QuickFork maps readme marketing cards demand into README-first hero cards, GitHub social preview direction, and launch visuals grounded in repository evidence and human review."; } diff --git a/src/marketing/search-ai-baseline.test.ts b/src/marketing/search-ai-baseline.test.ts index 63a546f..33c64ec 100644 --- a/src/marketing/search-ai-baseline.test.ts +++ b/src/marketing/search-ai-baseline.test.ts @@ -102,6 +102,32 @@ describe("search and AI baseline contract", () => { } }); + it("covers the cold-start launch materials hub with control and variant prompts", () => { + const rows = getSearchAiBaselineRowsForExperiment("2026_q2_cold_start_materials_intent_validation"); + + expect(rows).toHaveLength(2); + expect(rows).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: "cold_start_materials_control", + routeRole: "control", + canonicalPath: "/product/github-repo-to-launch-package", + targetUser: "ai_project_builder", + query: "GitHub repo to launch package", + queryCluster: "github_repo_to_launch_package", + }), + expect.objectContaining({ + id: "cold_start_materials_variant", + routeRole: "variant", + canonicalPath: "/product/cold-start-launch-materials", + targetUser: "ai_project_builder", + query: "cold start launch materials", + queryCluster: "cold_start_launch_materials", + }), + ]), + ); + }); + it("renders a manual runbook without claiming visibility", () => { const runbook = renderSearchAiBaselineRunbook("2026_q2_source_backed_assets_intent_validation"); diff --git a/src/marketing/search-ai-baseline.ts b/src/marketing/search-ai-baseline.ts index 647bfd1..322afe5 100644 --- a/src/marketing/search-ai-baseline.ts +++ b/src/marketing/search-ai-baseline.ts @@ -104,6 +104,42 @@ export const searchAiBaselineRows: readonly SearchAiBaselineRow[] = [ forbiddenClaims: allForbiddenClaims, decisionUse: "check whether README marketing card intent is visible and accurately described", }, + { + id: "cold_start_materials_control", + experimentId: "2026_q2_cold_start_materials_intent_validation", + routeRole: "control", + canonicalPath: "/product/github-repo-to-launch-package", + targetUser: "ai_project_builder", + query: "GitHub repo to launch package", + queryCluster: "github_repo_to_launch_package", + surfaces: allSurfaces, + expectedTerms: ["QuickFork", "GitHub repository", "launch package", "source-backed", "README", "social", "deck", "outreach"], + forbiddenClaims: allForbiddenClaims, + decisionUse: "compare generic launch-package category demand against cold-start launch-materials demand", + }, + { + id: "cold_start_materials_variant", + experimentId: "2026_q2_cold_start_materials_intent_validation", + routeRole: "variant", + canonicalPath: "/product/cold-start-launch-materials", + targetUser: "ai_project_builder", + query: "cold start launch materials", + queryCluster: "cold_start_launch_materials", + surfaces: allSurfaces, + expectedTerms: [ + "QuickFork", + "GitHub repository", + "cold-start", + "launch materials", + "README", + "social", + "deck", + "visual", + "outreach", + ], + forbiddenClaims: allForbiddenClaims, + decisionUse: "check whether full launch-materials intent is visible and accurately described", + }, ]; export function getSearchAiBaselineRowsForExperiment(experimentId: string) { diff --git a/src/seo/public-growth.test.ts b/src/seo/public-growth.test.ts index 4a47972..1e420cf 100644 --- a/src/seo/public-growth.test.ts +++ b/src/seo/public-growth.test.ts @@ -32,6 +32,7 @@ describe("public growth infrastructure", () => { for (const link of sitemapMarketingLinks) { expect(sitemap).toContain(`${link.canonicalUrl}`); } + expect(sitemap).toContain("https://seekersai.com/product/cold-start-launch-materials"); expect(sitemap).toContain("https://seekersai.com/product/github-repo-visual-explainer"); expect(sitemap).toContain("https://seekersai.com/product/github-repo-to-launch-deck"); expect(sitemap).toContain("https://seekersai.com/product/github-repo-to-product-outreach"); @@ -55,6 +56,11 @@ describe("public growth infrastructure", () => { expect(llms).toContain( "reviewable README, social, deck, outreach, and visual materials generated from repository evidence", ); + expect(llms).toContain("https://seekersai.com/product/cold-start-launch-materials"); + expect(llms).toContain("Cold Start Launch Materials"); + expect(llms).toContain( + "source-backed README, social, deck, visual, and outreach drafts generated from one public GitHub repository URL", + ); expect(llms).toContain("https://seekersai.com/product/readme-marketing-cards"); expect(llms).toContain("README Marketing Cards"); expect(llms).toContain( diff --git a/src/seo/semantic-links.test.ts b/src/seo/semantic-links.test.ts index 9f4b890..8d492f9 100644 --- a/src/seo/semantic-links.test.ts +++ b/src/seo/semantic-links.test.ts @@ -218,6 +218,13 @@ describe("typed semantic marketing link catalog", () => { primaryKeyword: "source backed launch assets", }), ); + expect(getMarketingLinkByPath("/product/cold-start-launch-materials")).toEqual( + expect.objectContaining({ + intentCluster: "cold_start_launch_materials", + primaryKeyword: "cold start launch materials", + primaryCta: "generate_launch_card", + }), + ); expect(getMarketingLinkByPath("/product/readme-marketing-cards")).toEqual( expect.objectContaining({ intentCluster: "readme_marketing_cards", @@ -251,6 +258,16 @@ describe("typed semantic marketing link catalog", () => { expect(getMarketingPageDescription(link!)).not.toMatch(/guaranteed|rankings|revenue|customers|viral/i); }); + it("publishes a cold-start launch materials product hub contract", () => { + const link = getMarketingLinkByPath("/product/cold-start-launch-materials"); + + expect(link).toBeDefined(); + expect(getMarketingPageTitle(link!)).toContain("Cold Start Launch Materials"); + expect(getMarketingPageHeadline(link!)).toContain("Cold Start Launch Materials"); + expect(getMarketingPageDescription(link!)).toContain("README, social, deck, visual, and outreach drafts"); + expect(getMarketingPageDescription(link!)).not.toMatch(/guaranteed|rankings|revenue|customers|viral/i); + }); + it("publishes a README marketing cards product page contract", () => { const link = getMarketingLinkByPath("/product/readme-marketing-cards");