Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/marketing/data/growth-experiment-evidence.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ experiment_id,status,window_start,window_end,control_page_views,control_cta_clic
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
2026_q2_launch_materials_map_intent_validation,pending_evidence,,,,,,,,,,,pending,pending,insufficient_data,needs_14_days_of_ga4_page_view_cta_clicked_generation_started_generation_failed_launch_materials_map_copied_search_console_query_baseline_and_ai_answer_audit_before_deciding
1 change: 1 addition & 0 deletions docs/marketing/data/growth-experiment-registry.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ experiment_id,status,lifecycle_stage,target_user,control_path,variant_path,prima
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
2026_q2_launch_materials_map_intent_validation,active,validation,ai_project_builder,/product/cold-start-launch-materials,/product/github-repo-launch-materials-map,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_and_launch_materials_map_copied
2 changes: 2 additions & 0 deletions docs/marketing/data/search-ai-baseline-prompts.csv
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ readme_cards_control,2026_q2_readme_cards_intent_validation,control,/product/git
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
launch_materials_map_control,2026_q2_launch_materials_map_intent_validation,control,/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,compare full launch-materials category demand against channel-map planning demand
launch_materials_map_variant,2026_q2_launch_materials_map_intent_validation,variant,/product/github-repo-launch-materials-map,ai_project_builder,GitHub repo launch materials map,github_repo_launch_materials_map,google_search_console|chatgpt_search|perplexity|google_ai_overview|gemini|claude,QuickFork|GitHub repository|launch materials map|channel plan|README|social|deck|visual|outreach,pricing|rankings|revenue|customer_count|conversion_lift|product_hunt_outcome|guaranteed_launch|validated_ai_citation,check whether AI answers explain the source-backed channel map without inventing proof
25 changes: 25 additions & 0 deletions docs/marketing/research/2026-06-03-launch-materials-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,28 @@ Guardrails:
## Next Validation Step

Run a 14-day comparison against `/product/github-repo-to-launch-package` and `/product/cold-start-launch-materials`. Prioritize this slice only if visitors who see or copy the map show stronger generation completion, artifact export, or full-package request behavior.

## 2026-06-03 Validation Contract Update

The launch materials map now has a formal validation contract:

- Experiment id: `2026_q2_launch_materials_map_intent_validation`.
- Control route: `/product/cold-start-launch-materials`.
- Variant route: `/product/github-repo-launch-materials-map`.
- Primary metric: `cta_clicked_per_page_view`.
- Guardrail metric: `generation_failed_per_generation_started`.
- Required activation evidence: `launch_materials_map_copied`.
- Required discovery evidence: Search Console query baseline and AI-answer audit.

This contract compares the broader cold-start launch materials category against the narrower channel-map planning job. It does not validate demand by itself.

Additional verification:

- RED registry test failed first because the launch materials map experiment did not exist.
- RED evidence test failed first because no pending evidence row existed.
- RED Search/AI test failed first because no control or variant prompt rows existed.
- GREEN focused registry, evidence, and Search/AI baseline tests passed after adding the contract rows.
- Related verification passed: `npm test -- src/marketing/growth-experiments.test.ts src/marketing/growth-experiment-report.test.ts src/marketing/search-ai-baseline.test.ts` returned 3 files passed and 23 tests passed.
- Full verification passed: `npm test` returned 24 files passed and 163 tests passed.
- Build verification passed: `npm run build` completed TypeScript build and Vite production build.
- Diff hygiene passed: `git diff --check` returned no whitespace errors.
64 changes: 64 additions & 0 deletions docs/plans/2026-06-01-quickfork-growth-lifecycle-prioritization.md
Original file line number Diff line number Diff line change
Expand Up @@ -1582,3 +1582,67 @@ Decision:
Next action:

- Run full verification, merge, production smoke, then compare `/product/github-repo-launch-materials-map` behavior against `/product/github-repo-to-launch-package` and `/product/cold-start-launch-materials` over a 14-day window.

## 2026-06-03 Launch Materials Map Validation Contract Slice

Hypothesis:

- If QuickFork compares the broad `/product/cold-start-launch-materials` route against the narrower `/product/github-repo-launch-materials-map` route, the team can learn whether AI project builders value source-backed channel planning enough to click the CTA, complete generation, copy the materials map, export artifacts, or request a reviewed launch package.

Lifecycle stage:

- Validation, with activation evidence required.

Target user:

- AI project builders preparing cold-start GitHub launches.
- Open-source maintainers and DevRel/product-marketing operators who need source-backed planning for README, social, deck, visual, and outreach materials.

Changed surface:

- `src/marketing/growth-experiments.ts`
- `src/marketing/growth-experiments.test.ts`
- `src/marketing/growth-experiment-report.ts`
- `src/marketing/growth-experiment-report.test.ts`
- `src/marketing/search-ai-baseline.ts`
- `src/marketing/search-ai-baseline.test.ts`
- `docs/marketing/data/growth-experiment-registry.csv`
- `docs/marketing/data/growth-experiment-evidence.csv`
- `docs/marketing/data/search-ai-baseline-prompts.csv`
- `docs/marketing/research/2026-06-03-launch-materials-map.md`
- `docs/superpowers/plans/2026-06-03-launch-materials-map-validation-contract.md`

Metric:

- Primary: `cta_clicked_per_page_view`.
- Guardrail: `generation_failed_per_generation_started`.
- Required activation signal: `launch_materials_map_copied`.
- Required discovery evidence: Search Console query baseline and AI-answer audit.

Guardrail:

- Do not treat a published page, prompt coverage, or a copied artifact as validated demand.
- Do not claim pricing, rankings, revenue, customer count, conversion lift, Product Hunt outcome, guaranteed launch results, or validated AI citation.
- Keep evidence rows free of email, raw repo text, tokens, secrets, raw artifact bodies, private notes, or unsupported proof.

Evidence observed:

- Baseline `npm test` passed before changes: 24 test files, 160 tests passed.
- RED registry test failed first because `2026_q2_launch_materials_map_intent_validation` did not exist.
- RED evidence test failed first because no pending evidence row existed for the launch materials map experiment.
- RED Search/AI test failed first because no control or variant baseline rows existed for the launch materials map experiment.
- GREEN focused registry verification passed: `npm test -- src/marketing/growth-experiments.test.ts -t "launch materials map|mirrors|references published|decision-ready"`.
- GREEN focused evidence verification passed: `npm test -- src/marketing/growth-experiment-report.test.ts -t "launch materials map|evidence row|mirrors|registry experiment|privacy-safe"`.
- GREEN focused Search/AI verification passed: `npm test -- src/marketing/search-ai-baseline.test.ts -t "launch materials map|covers every|mirrors|published|claim-safe"`.
- Related verification passed: `npm test -- src/marketing/growth-experiments.test.ts src/marketing/growth-experiment-report.test.ts src/marketing/search-ai-baseline.test.ts` returned 3 files passed and 23 tests passed.
- Full verification passed: `npm test` returned 24 files passed and 163 tests passed.
- Build verification passed: `npm run build` completed TypeScript build and Vite production build.
- Diff hygiene passed: `git diff --check` returned no whitespace errors.

Decision:

- Treat this as a P0 measurement contract for the launch materials map slice, not a demand result. The contract defines what evidence must be collected before deciding whether the channel-map product angle deserves more landing page, packaging, or paid-offer work.

Next action:

- Run full verification, merge, production smoke, then use `2026_q2_launch_materials_map_intent_validation` for 14 days of GA4, Search Console, and AI-answer evidence collection.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 2026-06-03 Launch Materials Map Validation Contract

## Objective

Add a measurement contract for the launch materials map product page and generated artifact. The contract should make `/product/github-repo-launch-materials-map` comparable against `/product/cold-start-launch-materials` and require activation, Search Console, and AI-answer evidence before QuickFork treats the page or feature as validated.

## Hypothesis

If QuickFork compares the broader cold-start launch materials route against the narrower launch materials map route, the team can learn whether builders value channel planning enough to copy the map, complete generations, export artifacts, or request a reviewed launch package.

## Lifecycle Stage

- Validation.
- Activation evidence is required through `launch_materials_map_copied`.

## Target User

- AI project builders preparing cold-start GitHub launches.
- Open-source maintainers and DevRel/product-marketing operators who need source-backed channel planning for README, social, deck, visual, and outreach materials.

## Implementation Scope

- Add `2026_q2_launch_materials_map_intent_validation` to the typed growth experiment registry.
- Mirror the experiment in `docs/marketing/data/growth-experiment-registry.csv`.
- Add a pending evidence row to `growthExperimentEvidence`.
- Mirror the evidence row in `docs/marketing/data/growth-experiment-evidence.csv`.
- Add Search/AI baseline rows for the control and variant routes.
- Mirror the baseline rows in `docs/marketing/data/search-ai-baseline-prompts.csv`.
- Update the launch materials map research note, lifecycle plan, and Obsidian strategy mirror.

## Metrics

- Primary comparison metric: `cta_clicked_per_page_view`.
- Guardrail metric: `generation_failed_per_generation_started`.
- Required activation evidence: `launch_materials_map_copied`.
- Required discovery evidence: Search Console query baseline and AI-answer audit.

## Guardrails

- Do not treat prompt coverage, a published page, or a copied artifact as validated demand.
- Do not claim pricing, rankings, revenue, customer count, conversion lift, Product Hunt outcome, guaranteed launch results, or validated AI citation.
- Keep evidence rows and analytics requirements free of email, raw repo text, tokens, secrets, raw artifact bodies, and private notes.

## Verification Notes

- Baseline `npm test` passed before changes: 24 test files, 160 tests.
- RED registry test failed first because `2026_q2_launch_materials_map_intent_validation` did not exist.
- RED evidence test failed first because no pending evidence row existed for the launch materials map experiment.
- RED Search/AI test failed first because no control or variant baseline rows existed for the launch materials map experiment.
- GREEN focused registry verification passed: `npm test -- src/marketing/growth-experiments.test.ts -t "launch materials map|mirrors|references published|decision-ready"`.
- GREEN focused evidence verification passed: `npm test -- src/marketing/growth-experiment-report.test.ts -t "launch materials map|evidence row|mirrors|registry experiment|privacy-safe"`.
- GREEN focused Search/AI verification passed: `npm test -- src/marketing/search-ai-baseline.test.ts -t "launch materials map|covers every|mirrors|published|claim-safe"`.
- Related verification passed: `npm test -- src/marketing/growth-experiments.test.ts src/marketing/growth-experiment-report.test.ts src/marketing/search-ai-baseline.test.ts` returned 3 files passed and 23 tests passed.
- Full verification passed: `npm test` returned 24 files passed and 163 tests passed.
- Build verification passed: `npm run build` completed TypeScript build and Vite production build.
- Diff hygiene passed: `git diff --check` returned no whitespace errors.

## Next Action

Run full verification, merge, production smoke the public route and context assets, then use the new rows for 14 days of GA4, Search Console, and AI-answer evidence collection.
16 changes: 16 additions & 0 deletions src/marketing/growth-experiment-report.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,22 @@ describe("growth experiment evidence report", () => {
}
});

it("keeps launch materials map evidence pending until activation and search data exists", () => {
const evidence = getGrowthExperimentEvidenceById("2026_q2_launch_materials_map_intent_validation");

expect(evidence).toEqual(
expect.objectContaining({
status: "pending_evidence",
searchConsoleStatus: "pending",
aiVisibilityStatus: "pending",
decision: "insufficient_data",
}),
);
expect(evidence?.nextEvidenceNeeded).toContain("launch_materials_map_copied");
expect(evidence?.nextEvidenceNeeded).toContain("search_console_query_baseline");
expect(evidence?.nextEvidenceNeeded).toContain("ai_answer_audit");
});

it("renders a route comparison report without inventing validation", () => {
const report = renderGrowthExperimentComparisonReport("2026_q2_landing_page_intent_comparison");

Expand Down
19 changes: 19 additions & 0 deletions src/marketing/growth-experiment-report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,25 @@ export const growthExperimentEvidence: readonly GrowthExperimentEvidence[] = [
nextEvidenceNeeded:
"needs_14_days_of_ga4_page_view_cta_clicked_generation_started_generation_failed_search_console_query_baseline_and_ai_answer_audit_before_deciding",
},
{
experimentId: "2026_q2_launch_materials_map_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_launch_materials_map_copied_search_console_query_baseline_and_ai_answer_audit_before_deciding",
},
];

export function getGrowthExperimentEvidenceById(experimentId: string) {
Expand Down
18 changes: 18 additions & 0 deletions src/marketing/growth-experiments.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,24 @@ describe("growth experiment registry", () => {
);
});

it("adds the launch materials map page to page intent validation", () => {
expect(getGrowthExperimentById("2026_q2_launch_materials_map_intent_validation")).toEqual(
expect.objectContaining({
status: "active",
lifecycleStage: "validation",
targetUser: "ai_project_builder",
controlPath: "/product/cold-start-launch-materials",
variantPath: "/product/github-repo-launch-materials-map",
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_and_launch_materials_map_copied",
}),
);
});

it("mirrors the editable CSV registry", () => {
const { headers, rows } = parseRegistry();

Expand Down
15 changes: 15 additions & 0 deletions src/marketing/growth-experiments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,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_launch_materials_map_intent_validation",
status: "active",
lifecycleStage: "validation",
targetUser: "ai_project_builder",
controlPath: "/product/cold-start-launch-materials",
variantPath: "/product/github-repo-launch-materials-map",
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_and_launch_materials_map_copied",
},
];

export function getGrowthExperimentById(id: string) {
Expand Down
Loading
Loading