bmad-method 6.6.1-next.1 → 6.6.1-next.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +3 -3
  2. package/bmad-modules.yaml +77 -0
  3. package/evals/bmm-skills/bmad-product-brief/evals.json +237 -0
  4. package/evals/bmm-skills/bmad-product-brief/files/branfield-memo.md +46 -0
  5. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md +40 -0
  6. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md +56 -0
  7. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md +27 -0
  8. package/evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md +116 -0
  9. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/addendum.md +41 -0
  10. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md +57 -0
  11. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/decision-log.md +29 -0
  12. package/evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md +90 -0
  13. package/evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md +101 -0
  14. package/evals/bmm-skills/bmad-product-brief/triggers.json +18 -0
  15. package/package.json +4 -4
  16. package/src/bmm-skills/1-analysis/bmad-prfaq/bmad-manifest.json +2 -2
  17. package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +59 -88
  18. package/src/bmm-skills/1-analysis/bmad-product-brief/assets/brief-template.md +41 -0
  19. package/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +77 -25
  20. package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml +3 -13
  21. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md +16 -90
  22. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +16 -88
  23. package/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +87 -0
  24. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md +76 -0
  25. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md +168 -0
  26. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md +135 -0
  27. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html +325 -0
  28. package/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml +147 -0
  29. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md +39 -0
  30. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/validate.md +97 -0
  31. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md +16 -90
  32. package/src/bmm-skills/4-implementation/bmad-agent-dev/customize.toml +5 -0
  33. package/src/bmm-skills/4-implementation/bmad-investigate/SKILL.md +194 -0
  34. package/src/bmm-skills/4-implementation/bmad-investigate/customize.toml +62 -0
  35. package/src/bmm-skills/4-implementation/bmad-investigate/references/case-file-template.md +127 -0
  36. package/src/bmm-skills/module-help.csv +4 -5
  37. package/src/bmm-skills/module.yaml +2 -2
  38. package/src/core-skills/bmad-customize/SKILL.md +1 -1
  39. package/src/core-skills/bmad-distillator/resources/distillate-format-reference.md +1 -1
  40. package/src/core-skills/bmad-help/SKILL.md +6 -6
  41. package/src/core-skills/module-help.csv +1 -1
  42. package/src/core-skills/module.yaml +1 -1
  43. package/tools/installer/core/installer.js +14 -24
  44. package/tools/installer/core/manifest.js +0 -22
  45. package/tools/installer/modules/channel-plan.js +1 -1
  46. package/tools/installer/modules/external-manager.js +23 -29
  47. package/tools/installer/modules/module-help-schema.js +13 -0
  48. package/tools/installer/modules/official-modules.js +9 -48
  49. package/tools/installer/modules/plugin-resolver.js +2 -2
  50. package/tools/installer/prompts.js +149 -0
  51. package/tools/installer/ui.js +13 -197
  52. package/src/bmm-skills/1-analysis/bmad-product-brief/agents/artifact-analyzer.md +0 -60
  53. package/src/bmm-skills/1-analysis/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
  54. package/src/bmm-skills/1-analysis/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
  55. package/src/bmm-skills/1-analysis/bmad-product-brief/agents/web-researcher.md +0 -49
  56. package/src/bmm-skills/1-analysis/bmad-product-brief/bmad-manifest.json +0 -17
  57. package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/contextual-discovery.md +0 -58
  58. package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md +0 -87
  59. package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/finalize.md +0 -78
  60. package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/guided-elicitation.md +0 -71
  61. package/src/bmm-skills/1-analysis/bmad-product-brief/resources/brief-template.md +0 -60
  62. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv +0 -15
  63. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md +0 -197
  64. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv +0 -11
  65. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md +0 -178
  66. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
  67. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md +0 -208
  68. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
  69. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  70. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md +0 -214
  71. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
  72. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md +0 -194
  73. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
  74. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
  75. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md +0 -263
  76. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md +0 -219
  77. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  78. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md +0 -221
  79. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md +0 -121
  80. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md +0 -10
  81. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md +0 -197
  82. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  83. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  84. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  85. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  86. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
  87. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv +0 -15
  88. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md +0 -197
  89. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv +0 -11
  90. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  91. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  92. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  93. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  94. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  95. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  96. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  97. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  98. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  99. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  100. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  101. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  102. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  103. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -230
  104. package/tools/installer/modules/community-manager.js +0 -704
  105. package/tools/installer/modules/registry-client.js +0 -187
  106. package/tools/installer/modules/registry-fallback.yaml +0 -52
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Version](https://img.shields.io/npm/v/bmad-method?color=blue&label=version)](https://www.npmjs.com/package/bmad-method)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org)
5
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.12.0-brightgreen)](https://nodejs.org)
6
6
  [![Python Version](https://img.shields.io/badge/python-%3E%3D3.10-blue?logo=python&logoColor=white)](https://www.python.org)
7
7
  [![uv](https://img.shields.io/badge/uv-package%20manager-blueviolet?logo=uv)](https://docs.astral.sh/uv/)
8
8
  [![Discord](https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&logoColor=white)](https://discord.gg/gk8jAdXWmj)
@@ -36,7 +36,7 @@ Traditional AI tools do the thinking for you, producing average results. BMad ag
36
36
 
37
37
  ## Quick Start
38
38
 
39
- **Prerequisites**: [Node.js](https://nodejs.org) v20+ · [Python](https://www.python.org) 3.10+ · [uv](https://docs.astral.sh/uv/)
39
+ **Prerequisites**: [Node.js](https://nodejs.org) v20.12+ · [Python](https://www.python.org) 3.10+ · [uv](https://docs.astral.sh/uv/)
40
40
 
41
41
  ```bash
42
42
  npx bmad-method install
@@ -82,11 +82,11 @@ BMad Method extends with official modules for specialized domains. Available dur
82
82
  [BMad Method Docs Site](https://docs.bmad-method.org) — Tutorials, guides, concepts, and reference
83
83
 
84
84
  **Quick links:**
85
+
85
86
  - [Getting Started Tutorial](https://docs.bmad-method.org/tutorials/getting-started/)
86
87
  - [Upgrading from Previous Versions](https://docs.bmad-method.org/how-to/upgrade-to-v6/)
87
88
  - [Test Architect Documentation](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/)
88
89
 
89
-
90
90
  ## Community
91
91
 
92
92
  - [Discord](https://discord.gg/gk8jAdXWmj) — Get help, share ideas, collaborate
@@ -0,0 +1,77 @@
1
+ # Official module registry — the single source of truth for which modules
2
+ # the BMad installer offers and how they are displayed.
3
+ #
4
+ # Order here determines display order in the installer picker (after the
5
+ # built-in core and bmm entries, which are loaded from local module.yaml).
6
+ #
7
+ # default_channel (optional) — the install channel when the user does not
8
+ # override with --channel/--pin/--next. Valid values: stable | next.
9
+ # Omit to inherit the installer's hardcoded default (stable).
10
+
11
+ modules:
12
+ bmad-method-test-architecture-enterprise:
13
+ url: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise
14
+ module-definition: src/module.yaml
15
+ code: tea
16
+ name: "BMad Test Architect"
17
+ description: "Quality strategy, test automation, and release gates for enterprise teams"
18
+ defaultSelected: false
19
+ type: bmad-org
20
+ npmPackage: bmad-method-test-architecture-enterprise
21
+ default_channel: stable
22
+
23
+ bmad-builder:
24
+ url: https://github.com/bmad-code-org/bmad-builder
25
+ module-definition: skills/module.yaml
26
+ code: bmb
27
+ name: "BMad Builder"
28
+ description: "Build AI agents, workflows, and modules from a conversation"
29
+ defaultSelected: false
30
+ type: bmad-org
31
+ npmPackage: bmad-builder
32
+ default_channel: stable
33
+
34
+ bmad-automator:
35
+ url: https://github.com/bmad-code-org/bmad-automator
36
+ module-definition: skills/module.yaml
37
+ code: automator
38
+ name: "BMad Automator Epic Builder Experimental"
39
+ description: "EXPERIMENTAL: only supports claude and codex currently"
40
+ defaultSelected: false
41
+ type: experimental
42
+ npmPackage: bmad-story-automator
43
+ default_channel: next
44
+
45
+ bmad-creative-intelligence-suite:
46
+ url: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite
47
+ module-definition: src/module.yaml
48
+ code: cis
49
+ name: "BMad Creative Intelligence Suite"
50
+ description: "Brainstorming, ideation, storytelling, design thinking, and problem-solving"
51
+ defaultSelected: false
52
+ type: bmad-org
53
+ npmPackage: bmad-creative-intelligence-suite
54
+ default_channel: stable
55
+
56
+ bmad-game-dev-studio:
57
+ url: https://github.com/bmad-code-org/bmad-module-game-dev-studio.git
58
+ module-definition: src/module.yaml
59
+ code: gds
60
+ name: "BMad Game Dev Studio"
61
+ description: "Game design and development for Unity, Unreal, Godot, and Phaser."
62
+ defaultSelected: false
63
+ type: bmad-org
64
+ npmPackage: bmad-game-dev-studio
65
+ default_channel: stable
66
+
67
+ bmad-method-wds-expansion:
68
+ url: https://github.com/bmad-code-org/bmad-method-wds-expansion
69
+ module-definition: src/module.yaml
70
+ code: wds
71
+ plugin_name: bmad-wds # WDS marketplace.json declares the plugin under this name
72
+ name: "Whiteport Design Studio"
73
+ description: "Strategic UX and Design first planning methodology"
74
+ defaultSelected: false
75
+ type: bmad-org
76
+ npmPackage: bmad-wds
77
+ default_channel: stable
@@ -0,0 +1,237 @@
1
+ {
2
+ "skill_name": "bmad-product-brief",
3
+ "_design_notes": "Single-shot evals across two patterns. Pattern A (A1-A8) tests artifact correctness given complete inputs in headless mode. Pattern B tests process discipline (decision log fidelity, polish execution, intent boundaries) by inspecting transcript and side-artifacts. Facilitation/conversation-quality evals are deferred to a future multi-turn simulator.",
4
+ "evals": [
5
+ {
6
+ "id": "A1",
7
+ "_pattern": "artifact-correctness",
8
+ "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this — do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000 (poor original insulation, rising energy bills).\n- Validation evidence: 50 user interviews completed in Q4 2025; 78% expressed willingness to pay $49 for a one-time audit if results were credible.\n- Stakes: this brief is the primary input investors will read before our first Series A pitch call.\n- Hardware dependency: requires a thermal imaging accessory (we do not manufacture hardware).\n- Known unknowns: insurance/warranty implications of homeowner-driven audits; whether the 78% intent translates to paid conversion at scale.\nRight-size for investor-stage rigor. Output a JSON status block at the end with status, intent, and artifact paths.",
9
+ "expected_output": "A run folder containing brief.md (with valid YAML frontmatter) and decision-log.md. Brief is 1-2 pages, addresses target audience, hardware dependency, validation evidence, and surfaces unknowns alongside knowns. Final assistant message includes JSON with status='complete', intent='create', and artifact paths.",
10
+ "files": [],
11
+ "expectations": [
12
+ "A run folder is created with brief.md and decision-log.md",
13
+ "brief.md has YAML frontmatter containing all four required fields: title, status, created (ISO 8601), updated (ISO 8601)",
14
+ "brief.md frontmatter status is 'draft' or 'final' (not missing or empty)",
15
+ "brief.md word count is between 250 and 1500",
16
+ "brief.md identifies the suburban-homeowner-aged-35-65 target audience",
17
+ "brief.md references the thermal imaging hardware dependency (FLIR ONE Pro / Seek Compact Pro or equivalent)",
18
+ "brief.md references the 50-user interview validation OR the 78% willingness-to-pay finding",
19
+ "brief.md surfaces at least one explicit unknown or unvalidated assumption",
20
+ "brief.md does not introduce facts absent from the input prompt (no invented competitors, fabricated metrics, or unstated partnerships)",
21
+ "The final assistant message contains a JSON object with keys 'status', 'intent', and at least one artifact path",
22
+ "The JSON 'intent' value is 'create'"
23
+ ]
24
+ },
25
+ {
26
+ "id": "A2",
27
+ "_pattern": "artifact-correctness",
28
+ "prompt": "Run headless. Create a brief for our app idea.",
29
+ "expected_output": "Headless mode with insufficient context should halt with status='blocked' and a reason field. No (or only skeleton) brief should be written. The skill must not invent a product to draft against.",
30
+ "files": [],
31
+ "expectations": [
32
+ "The final assistant message contains a JSON object with key 'status' set to 'blocked'",
33
+ "The JSON output includes a 'reason' field explaining what context is missing",
34
+ "If brief.md exists at all, its body content (excluding frontmatter) is fewer than 100 words OR is a placeholder skeleton — the skill did not invent a product",
35
+ "The transcript contains no clarifying questions sent back to the user (headless mode honored)"
36
+ ]
37
+ },
38
+ {
39
+ "id": "A3",
40
+ "_pattern": "artifact-correctness",
41
+ "prompt": "Run headless. Create a brief for our neighborhood compost coordinator app idea — we are moving forward with it. Q2 brainstorming session notes are at evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md; pull only what is relevant to the compost concept.",
42
+ "expected_output": "Brief focuses tightly on the compost coordinator concept. Source brainstorm is filtered, not ingested wholesale. Decision-log records that filtering occurred.",
43
+ "files": ["evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md"],
44
+ "expectations": [
45
+ "brief.md addresses the neighborhood compost coordinator concept",
46
+ "brief.md does not introduce content from unrelated brainstorm topics (weather + mood, meditation chime, podcasting tool, craft beer subscription, AI sommelier, office plants, ride coordinator, cookbook app, AR home staging)",
47
+ "brief.md word count is between 250 and 1500",
48
+ "brief.md incorporates at least 2 specific details from the compost section of the brainstorm (e.g., two-sided market with apartment dwellers and home compost-pile owners, hyperlocal neighborhood scope, free-at-launch with eventual subscription, Portland Sunnyside/Hawthorne pilot)",
49
+ "decision-log.md indicates the brainstorm was filtered for relevance, not ingested whole"
50
+ ]
51
+ },
52
+ {
53
+ "id": "A4",
54
+ "_pattern": "artifact-correctness",
55
+ "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md — the Mossridge Public Library board meets Monday and we need this to land. Read the addendum and decision-log in the same folder first. Cite specific sections, identify weaknesses, caveat what cannot be evaluated. Return inline only — no separate validation file.",
56
+ "expected_output": "Inline critique citing specific sections from the input brief. No new files. Caveats at least one claim that cannot be evaluated from the brief alone. Offers to roll findings into an Update.",
57
+ "files": [
58
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md",
59
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/addendum.md",
60
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/decision-log.md"
61
+ ],
62
+ "expectations": [
63
+ "The final output cites specific section names or line content from the input brief (not generic feedback)",
64
+ "The output identifies at least one specific weakness or area for improvement in the input brief",
65
+ "The output explicitly caveats at least one claim that cannot be evaluated from the brief alone (e.g., community demand, funding feasibility, volunteer sustainability)",
66
+ "The output offers to roll findings into an Update (or equivalent next-step proposal)",
67
+ "The final assistant message contains a JSON object with intent='validate'"
68
+ ]
69
+ },
70
+ {
71
+ "id": "A5",
72
+ "_pattern": "artifact-correctness",
73
+ "prompt": "Run headless. Create a brief for: a weekend-project iOS app called Sproutkeeper that reminds houseplant owners when to water their plants based on plant type and indoor humidity sensor data. Target is hobbyist plant owners. MVP scope only, single-developer side project, no investors, no team, just personal evening project.",
74
+ "expected_output": "Lightweight brief right-sized to a side project. Low rigor. No investor-grade framing.",
75
+ "files": [],
76
+ "expectations": [
77
+ "The final assistant message contains a JSON object with intent='create'",
78
+ "brief.md exists at the path referenced in the JSON output",
79
+ "brief.md is right-sized for a side project (closer to 250-500 words than 1500)",
80
+ "brief.md does not include investor-grade framing (no 'Series A inputs', 'TAM/SAM/SOM', 'go-to-market strategy' boilerplate when the user said this is a personal evening project)",
81
+ "The transcript contains no clarifying questions to the user",
82
+ "Sections that do not earn their place for a side project are dropped or kept minimal (e.g., no extensive Risk or Success Criteria padding)"
83
+ ]
84
+ },
85
+ {
86
+ "id": "A6",
87
+ "_pattern": "artifact-correctness",
88
+ "prompt": "Run headless. Create a brief from this memo. It is from our last working group on a new microcredential program at Branfield Community College. Memo is at evals/bmm-skills/bmad-product-brief/files/branfield-memo.md. Use what is there; do not re-elicit facts already present.",
89
+ "expected_output": "Brief reflects content from the memo. No re-asking for facts already present. Decision-log notes ingestion of the memo.",
90
+ "files": ["evals/bmm-skills/bmad-product-brief/files/branfield-memo.md"],
91
+ "expectations": [
92
+ "brief.md incorporates at least 3 distinct facts or decisions present in the input memo",
93
+ "decision-log.md references having used the memo as source material",
94
+ "The transcript does not ask the user to re-state the program name, target student, or core curriculum focus if those are present in the memo",
95
+ "brief.md does not invent program details not present in the memo"
96
+ ]
97
+ },
98
+ {
99
+ "id": "A7",
100
+ "_pattern": "artifact-correctness",
101
+ "prompt": "Run headless. Create a brief for Brightway — our smart bike helmet with crash detection, turn signals, and braking lights. Meridian Insights produced a market research report on e-mobility at evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md. Use only what is relevant to the safety helmet category — do not let the e-scooter, charging-infrastructure, or bike-share segments bleed into the brief.",
102
+ "expected_output": "Brief focuses on the smart bike helmet concept. Pulls relevant findings from the helmet section. Other mobility segments do not appear.",
103
+ "files": ["evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md"],
104
+ "expectations": [
105
+ "brief.md addresses the Brightway smart bike helmet concept",
106
+ "brief.md does not introduce content from unrelated mobility segments (e-scooters, charging infrastructure, bike-share, vehicle-to-grid)",
107
+ "brief.md word count is between 250 and 1500",
108
+ "brief.md incorporates at least 2 specific findings from the smart helmet section of the report (e.g., market sizing, key players, crash detection technology trends, regulatory or insurance landscape)",
109
+ "decision-log.md indicates the report was filtered to the helmet category rather than ingested whole"
110
+ ]
111
+ },
112
+ {
113
+ "id": "A8",
114
+ "_pattern": "artifact-correctness",
115
+ "prompt": "Run headless. Create a brief for Pantry Bridge — a meal-kit subscription targeted at adults 65+ who live alone and want fresh meals without grocery shopping. Customer research transcripts are at evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md. Pull what is relevant from the older-adult interviews; do not conflate insights from the working-parent, student, or corporate-buyer personas.",
116
+ "expected_output": "Brief focuses on the older-adult target persona. Eleanor's interview drives the insights. Other personas do not pollute the brief.",
117
+ "files": ["evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md"],
118
+ "expectations": [
119
+ "brief.md addresses the Pantry Bridge older-adult meal-kit concept",
120
+ "brief.md does not conflate insights from non-target personas (working parent Susan, college student Marcus, corporate cafeteria buyer Dimitri)",
121
+ "brief.md word count is between 250 and 1500",
122
+ "brief.md incorporates at least 2 specific insights from Eleanor's interview (e.g., grocery-trip difficulty, portion sizing, dietary restrictions, social aspects of meals, trust concerns)",
123
+ "decision-log.md notes which interviews were used and which were excluded"
124
+ ]
125
+ },
126
+ {
127
+ "id": "B1",
128
+ "_pattern": "process-discipline",
129
+ "prompt": "Run headless. Create a brief for HelmStack — an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch — operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB — TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.",
130
+ "expected_output": "Decision log contains all five named decisions with rationale captured. Brief reflects the decisions but the decision log is the canonical record.",
131
+ "files": [],
132
+ "expectations": [
133
+ "decision-log.md exists in the run folder",
134
+ "decision-log.md captures the pricing decision (free OSS + $29/seat SaaS) with the rejected alternative (paid one-shot license) and rationale (network effects)",
135
+ "decision-log.md captures the invite-only-beta decision with the rejected alternative (open public launch) and rationale (operational risk before stability)",
136
+ "decision-log.md captures the platform-stack decision (TypeScript + Postgres) with the rejected alternative (Go + MongoDB) and rationale (team skills / frontend alignment)",
137
+ "decision-log.md captures the ICP decision (5-50 person eng teams) with rationale referencing sales cycle / runway",
138
+ "decision-log.md captures the self-host-timing decision (SaaS-only at launch, self-host v2) with rationale (shipping velocity / funding window)"
139
+ ]
140
+ },
141
+ {
142
+ "id": "B2",
143
+ "_pattern": "process-discipline",
144
+ "prompt": "Run headless. Create a brief for HelmStack — an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch — operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB — TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.",
145
+ "expected_output": "Brief is consistent with the decision log: every decision in the log is reflected in the brief, and no claim in the brief is absent from the input prompt or the log. Tests bidirectional fidelity.",
146
+ "files": [],
147
+ "expectations": [
148
+ "brief.md mentions the OSS-core + paid-SaaS pricing structure",
149
+ "brief.md references the invite-only-beta launch sequencing OR identifies the launch model consistent with the decision log",
150
+ "brief.md references the platform-stack choice (TypeScript + Postgres) OR is silent on stack — but does not contradict it (no mention of Go, MongoDB, etc.)",
151
+ "brief.md identifies 5-50 person eng teams as the ICP (or equivalent — small-to-mid-size eng teams)",
152
+ "brief.md does not introduce decisions, competitors, partnerships, metrics, or product features absent from both the input prompt and decision-log.md (no invented facts)",
153
+ "Each substantive decision in decision-log.md has a corresponding reflection in brief.md (no log-to-brief drops)"
154
+ ]
155
+ },
156
+ {
157
+ "id": "B3",
158
+ "_pattern": "process-discipline",
159
+ "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this — do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews completed in Q4 2025; 78% willingness to pay $49 for a one-time audit.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory (we do not manufacture hardware).\n\nProduce brief.md and decision-log.md. Run the polish phase before presenting.",
160
+ "expected_output": "The transcript shows the polish phase executing — the skill invokes bmad-editorial-review-structure and bmad-editorial-review-prose, either via the Skill tool directly or via Agent tool calls whose description or prompt targets those editorial skills. Both passes must occur after the initial draft is written and before the final JSON status block.",
161
+ "files": [],
162
+ "expectations": [
163
+ "The transcript contains either a Skill tool call invoking bmad-editorial-review-structure, OR an Agent tool call whose description or prompt references structural review or bmad-editorial-review-structure",
164
+ "The transcript contains either a Skill tool call invoking bmad-editorial-review-prose, OR an Agent tool call whose description or prompt references prose review or bmad-editorial-review-prose",
165
+ "Both editorial-pass dispatches (Skill or Agent) occur after the first Write tool call that creates brief.md",
166
+ "Both editorial-pass dispatches (Skill or Agent) occur before the final assistant message containing the JSON status block"
167
+ ]
168
+ },
169
+ {
170
+ "id": "B5",
171
+ "_pattern": "process-discipline",
172
+ "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md — we have decided to add B2B catering services for corporate events, in addition to the direct-to-consumer delivery model. Read the existing decision-log.md and addendum.md in the same folder first.",
173
+ "expected_output": "The skill MUST detect the contradiction with the prior 'rejected B2B catering for MVP' decision (in decision-log.md) before applying the change. Acceptable resolutions: (a) halt with blocked status surfacing the conflict, or (b) apply the change with addendum.md capturing the override and rationale. Brief must not silently flip without acknowledging the prior decision.",
174
+ "files": [
175
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md",
176
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md",
177
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md"
178
+ ],
179
+ "expectations": [
180
+ "The transcript or output explicitly references the prior 'rejected B2B catering for MVP' decision from decision-log.md",
181
+ "The contradiction is surfaced before the brief body is modified (a Read of decision-log.md occurs before the Edit/Write to brief.md, AND the conflict is named in the assistant output)",
182
+ "Either the JSON status is 'blocked' with the conflict in the reason field, OR addendum.md is updated with an override entry capturing the rationale for reversing the prior decision",
183
+ "If the brief is updated, decision-log.md gains a new entry referencing the catering reversal",
184
+ "If the brief is updated, the YAML frontmatter 'updated' field is later than the original 'created' field"
185
+ ]
186
+ },
187
+ {
188
+ "id": "B6",
189
+ "_pattern": "process-discipline",
190
+ "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md — we have signed our fifth chef partner (Chicago metro). Add this to the existing operating-model and what's-known sections. Read the existing decision-log.md first.",
191
+ "expected_output": "Clean update — does not contradict any prior decision. Brief gets updated, decision-log gains a new entry, YAML 'updated' bumps but 'created' stays the same. No spurious addendum since this is a status update, not an override.",
192
+ "files": [
193
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md",
194
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md",
195
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md"
196
+ ],
197
+ "expectations": [
198
+ "brief.md is updated to reflect the signed fifth chef partner in Chicago",
199
+ "brief.md frontmatter 'updated' field is later than the original 'created' timestamp; 'created' is unchanged",
200
+ "decision-log.md contains a new entry referencing the fifth chef signing",
201
+ "The transcript does not surface a fictional contradiction — this is a clean update, not an override of a prior decision"
202
+ ]
203
+ },
204
+ {
205
+ "id": "B7",
206
+ "_pattern": "process-discipline",
207
+ "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md — we are presenting to the library board Monday. Read the addendum and decision-log in the same folder. Cite specific sections. Return inline only.",
208
+ "expected_output": "Validate is read-only. No new files created. No existing files modified. Critique returned inline in the assistant output.",
209
+ "files": [
210
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md",
211
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/addendum.md",
212
+ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/decision-log.md"
213
+ ],
214
+ "expectations": [
215
+ "No new files appear in the mossridge-brief artifacts directory after the run (only the three input files)",
216
+ "The input brief.md, addendum.md, and decision-log.md are byte-identical to the staged fixtures (no Edit/Write tool calls modified them)",
217
+ "The transcript contains no Write tool calls and no Edit tool calls targeting the mossridge-brief folder",
218
+ "The final assistant message contains a JSON object with intent='validate'"
219
+ ]
220
+ },
221
+ {
222
+ "id": "C1",
223
+ "_pattern": "config-compliance",
224
+ "prompt": "Run headless. Create a product brief for TaskFlow — a lightweight daily planning app for freelancers who juggle multiple clients. Core idea: a single daily view that pulls together tasks, time blocks, and client context so the freelancer always knows what to work on next. Target is independent freelancers, 1-3 clients at a time, who currently manage their day across sticky notes, calendar apps, and spreadsheets. MVP is mobile-first. No investors — the founder is bootstrapping.",
225
+ "expected_output": "Brief written in Spanish (document_output_language=Spanish). Assistant's conversational output reflects the configured British-accent communication style. Brief lands at the custom output path (test-output/artifacts/briefs/...) rather than the default _bmad-output path. Brief is right-sized for a bootstrapped solo project.",
226
+ "files": [],
227
+ "expectations": [
228
+ "brief.md exists under test-output/artifacts/briefs/ (the custom planning_artifacts path), not under _bmad-output/",
229
+ "The final JSON status block artifact paths reference test-output/ rather than _bmad-output/",
230
+ "brief.md body is written in Spanish — the majority of prose content (headings, section bodies) is in Spanish, not English",
231
+ "brief.md covers the TaskFlow concept: freelancer daily planning, multi-client context, the sticky-notes-plus-calendar-plus-spreadsheet problem",
232
+ "brief.md is right-sized for a bootstrapped side project — appropriate depth and scope for a solo-founder app with no investor audience, no TAM/SAM/SOM framing, no Series A language, and no sections that pad for enterprise credibility",
233
+ "The assistant's non-document output (transcript text content outside of brief.md) contains at least one marker of British informal register (e.g., 'mate', 'cheers', 'brilliant', 'sorted', 'innit', 'blimey', 'proper', 'right then', or equivalent pub-idiom phrasing)"
234
+ ]
235
+ }
236
+ ]
237
+ }
@@ -0,0 +1,46 @@
1
+ # Working Group Notes — Microcredential Program
2
+
3
+ **Branfield Community College**
4
+ **Meeting:** 2026-04-22
5
+ **Attendees:** Provost, Workforce Dev Director, Chair of Industry Advisory Board, two faculty leads (Data Analytics, Healthcare Admin), Financial Aid Director
6
+
7
+ ## Why we're doing this
8
+
9
+ Regional employer survey (Q1 2026) showed 340+ unfilled mid-skill jobs in the three-county area. State workforce board approved a $1.4M grant if we can launch by fall 2027 with at least three tracks. Existing AAS programs are too long for working adults — average completion 3.5 years.
10
+
11
+ ## What we're building
12
+
13
+ Six-month stackable microcredentials. Three tracks at launch:
14
+
15
+ 1. **Data Analytics** (SQL, Excel/Power BI, intro Python). Faculty lead Marisol Reyes. Strongest employer demand. Will be MVP — first to launch, used to validate format.
16
+ 2. **Healthcare Admin** (medical coding, EHR systems, patient workflow). Faculty lead Dev Patel. Aging population in region drives demand.
17
+ 3. **Sustainable Construction** (green building practices, retrofit basics, code compliance). New faculty hire required.
18
+
19
+ Stackable means credits transfer into related AAS or BAS later if the student wants.
20
+
21
+ ## Decisions made today
22
+
23
+ - **Data Analytics is MVP.** Launch fall 2027, others phase in spring/fall 2028. Validate format before scaling.
24
+ - **Hybrid delivery.** Two evenings/week in person + asynchronous online. Board rejected pure-online (concerns about adult learner outcomes data).
25
+ - **Stipend program.** Up to $3,000/student for low-income students, funded from the state grant. Means-tested.
26
+ - **Industry Advisory Board** has approval authority on curriculum. Three employers committed (regional hospital, mid-size data consultancy, county housing authority). All three commit to interview every graduate.
27
+ - **Cohort cap: 24 per track per term.** Driven by classroom size and faculty load.
28
+
29
+ ## Open questions
30
+
31
+ - Childcare for evening sessions — can we partner with the campus childcare center? Deferred to next meeting.
32
+ - Marketing — provost wants to know cost per enrolled student before approving budget. Need workforce dev to model.
33
+ - Do we offer a tuition payment plan in addition to the stipend? Financial aid director thinks yes; provost wants to see uptake projections first.
34
+
35
+ ## What we're NOT doing
36
+
37
+ - Not pursuing pure-online delivery (rejected — see above).
38
+ - Not launching all three tracks at once (rejected — risk concentration, faculty bandwidth).
39
+ - Not building employer-customized cohorts (rejected — too operationally complex for MVP).
40
+
41
+ ## Next steps
42
+
43
+ - Workforce Dev: marketing cost model by 2026-05-15.
44
+ - Provost: childcare partnership exploratory conversation.
45
+ - Faculty leads: draft data analytics curriculum outline by 2026-06-01.
46
+ - Reconvene 2026-05-20.
@@ -0,0 +1,40 @@
1
+ # Addendum — Forkbird Kitchen
2
+
3
+ ## Options considered (and not taken)
4
+
5
+ ### B2B / corporate catering
6
+
7
+ Considered as a parallel revenue stream from day one. Rejected for MVP. Different operational rhythm (bulk orders, fixed delivery windows, invoiced billing), different customer (procurement, not eaters), different unit economics. Splitting attention at launch risked degrading both. Revisit if consumer foundation is established by month 12.
8
+
9
+ ### Subscription / meal plan
10
+
11
+ Considered as a recurring-revenue layer. Rejected for MVP. Operationally expensive at our planned scale: requires demand forecasting per subscriber, kitchen scheduling locked further out, and packaging/refrigerated handling we are not yet equipped for. Reasonable to revisit once kitchen utilization stabilizes.
12
+
13
+ ### Retail / grocery channel
14
+
15
+ Considered (refrigerated meals in Whole Foods, Sprouts). Rejected for MVP. Different product (cold meals, longer shelf life, different texture profile), different go-to-market (broker relationships, slotting fees, category management). Parked for year 2 — would require a separate product line, not a channel extension.
16
+
17
+ ### Lower-priced everyday tier
18
+
19
+ Considered. Rejected for now. The brand position is chef-driven; introducing a value tier alongside risks the premium signal in marketplace search ranking and review patterns. Explored alternative of separate brand for value tier; deferred.
20
+
21
+ ## Personas (extended)
22
+
23
+ **The plant-based weekday professional.** Lives in a dense urban neighborhood, orders 4–6 times a month, splits between own-cooking and delivery. Sources of dissatisfaction with current options: chain plant-based menus feel formulaic, fine-dining plant-based is too expensive for weeknight, marketplace search surfaces too many low-quality options.
24
+
25
+ **The dietary-flex household member.** One person in a household is plant-based by preference; the other(s) are not. Ordering pattern is "tonight one of us wants Forkbird, the other wants something else." We benefit from being a dependable single-cuisine option that doesn't require negotiating across diets.
26
+
27
+ ## Sizing notes
28
+
29
+ - Total addressable: ~6.2M urban professionals across 5 metros eating plant-based 3+ times/week (based on 2024 Plant Based Foods Association data, urban segmentation).
30
+ - Serviceable addressable (within delivery radius of planned kitchens at launch): ~840K.
31
+ - Realistic Y1 capture (per metro forecast): 0.4% of SAM = 3,360 active customers across all metros.
32
+
33
+ ## Sourcing standard — exact wording
34
+
35
+ "For each dish on the menu, we publish the source of every ingredient that represents at least 5% of cost. We commit that at least 60% of total ingredient weight is sourced within 200 miles of the kitchen preparing that dish. Both numbers are auditable; we publish them per-dish in the app. If we cannot meet the 60% local threshold for a dish, the dish does not ship."
36
+
37
+ ## Technical constraints
38
+
39
+ - Marketplace integration (DoorDash, UberEats, Grubhub) requires their menu management API. We are using a third-party middleware (Olo) to avoid maintaining three separate integrations.
40
+ - Ingredient transparency display requires structured data per dish. We need an ingredient-master database; current option is to extend our recipe-management software vendor.
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: Forkbird Kitchen — Product Brief
3
+ status: final
4
+ created: 2026-02-14
5
+ updated: 2026-02-14
6
+ ---
7
+
8
+ # Forkbird Kitchen
9
+
10
+ ## What it is
11
+
12
+ A delivery-only ghost kitchen brand offering chef-driven plant-based meals in five US metros: San Francisco, New York, Los Angeles, Seattle, and Chicago. Launch operating model is direct-to-consumer through our own iOS/Android app and the major third-party marketplaces (DoorDash, UberEats, Grubhub).
13
+
14
+ ## Who it's for
15
+
16
+ Urban professionals aged 28–45 who eat plant-based meals at least three times a week, value chef-driven food over chain alternatives, and order delivery 4+ times monthly. Initial geographic focus is dense neighborhoods within 3-mile delivery radii of partner kitchens.
17
+
18
+ We are not building for: families with children (different ticket size and ordering pattern), occasional plant-based eaters (price sensitivity too high for our positioning), or office lunch (different time-of-day operation).
19
+
20
+ ## Why it wins
21
+
22
+ Three things are deliberately stacked:
23
+
24
+ 1. **Chef partnerships, not chef-as-marketing.** Each metro has a named chef (with prior fine-dining or notable plant-based credit) who designs the rotating menu and earns equity in that metro's P&L. They are not endorsers; they are operators.
25
+ 2. **Ingredient sourcing standards.** Published per-dish: where it came from, how it was farmed, what portion of cost it represents. No dish ships if we can't source within 200 miles for ≥60% of ingredient weight. This is auditable, not marketing copy.
26
+ 3. **Speed without cars.** Average ticket-to-door is 28 minutes from order placement, achieved by tight delivery radii and dense order density per kitchen. Long delivery erodes plant-based texture more than animal protein — speed is product, not logistics.
27
+
28
+ ## Operating model
29
+
30
+ Five kitchens, one per metro, each leased space inside an existing food-prep facility. No customer-facing storefronts. App orders go through our stack; marketplace orders pass through their stacks. Menu rotates every six weeks per chef.
31
+
32
+ Pricing tier: $14–$22 per entrée before delivery. We are deliberately at chef-driven positioning, not value positioning.
33
+
34
+ ## What's known
35
+
36
+ - Demand validated through three pop-up dinners in SF and NY (Q4 2025). 480 covers, 78% repeat intent based on post-event survey.
37
+ - Operating partner identified in each metro. Leases signed for SF, NY, LA. Seattle and Chicago in negotiation.
38
+ - Three of five chefs signed; two in active conversations.
39
+
40
+ ## What's unknown
41
+
42
+ - Whether ingredient-sourcing transparency is a differentiator at point of sale (in-app) or only in marketing. Our hypothesis is "both" but we have not tested in-app.
43
+ - Marketplace economics. DoorDash takes 15–30% depending on tier; we are modeling the lower tier but have not negotiated.
44
+ - Whether the 3-mile radius holds outside SF/NY (lower density in LA/Chicago).
45
+
46
+ ## Risks
47
+
48
+ - Chef churn. If a metro chef leaves, the metro brand loses its anchor. Mitigation: equity vesting over 24 months, named-chef terms in operating agreement.
49
+ - Sourcing cost volatility. 60% local-within-200-miles can spike with weather/supply disruption. We have not modeled the worst case.
50
+ - Marketplace dependency. If DoorDash terms shift adversely, our blended margin is at risk. We are deliberately building the owned-app channel to reduce this dependency.
51
+
52
+ ## Success criteria for first 12 months
53
+
54
+ - 4 of 5 metros operating profitably at the unit level (kitchen + chef + delivery economics) by month 9
55
+ - 30% of orders through owned app (vs. marketplaces) by month 12
56
+ - Chef retention 100% through year 1
@@ -0,0 +1,27 @@
1
+ # Decision Log — Forkbird Kitchen
2
+
3
+ ## 2026-01-08
4
+ - **Brand position: chef-driven, premium plant-based.** Considered value tier; rejected for MVP. Premium positioning is the wedge against marketplace generic plant-based.
5
+
6
+ ## 2026-01-12
7
+ - **Five-metro launch: SF, NY, LA, Seattle, Chicago.** Considered three-metro start; rejected as not enough density to test the chef-equity model meaningfully.
8
+ - **Ghost kitchen, no storefront.** Storefronts ruled out — capex too high for MVP, dilutes the speed advantage.
9
+
10
+ ## 2026-01-19
11
+ - **Pricing tier $14–$22 per entrée.** Modeled against three competitor sets: chain plant-based, fine-dining plant-based delivery, generic mid-tier delivery. Sits cleanly above chain, below fine-dining.
12
+ - **Chef equity in metro P&L.** Rejected flat fee + revenue share alternative; equity creates the operator incentive we want.
13
+
14
+ ## 2026-01-26
15
+ - **Rejected B2B catering segment for MVP.** Different operational rhythm and customer; would split attention at launch and risk degrading both consumer and B2B execution. Revisit in year 2 if consumer foundation is solid. (Discussion: 2 hours; chef partners weighed in against splitting focus; CFO modeled the dilution effect on consumer kitchen utilization.)
16
+ - **Rejected subscription model for MVP.** Operationally expensive at planned scale; revisit once kitchen utilization stabilizes.
17
+
18
+ ## 2026-02-02
19
+ - **Sourcing standard: 60% within 200 miles, published per-dish.** Considered weaker thresholds (50% / 250 miles); rejected as not differentiating enough to be worth publishing. The number has to be defensible.
20
+ - **Marketplace channel mix: own app + DoorDash + UberEats + Grubhub.** Considered own-app only; rejected as too slow on demand acquisition. Considered marketplaces only; rejected — own app is critical to long-term margin.
21
+
22
+ ## 2026-02-09
23
+ - **Six-week menu rotation per chef.** Considered four-week (more freshness) and eight-week (more operational stability). Six is the compromise; reassess after first two cycles.
24
+ - **Marketing budget: 60% acquisition / 40% brand.** Rejected pure-acquisition because chef-driven positioning needs brand-level signal that paid acquisition alone won't carry.
25
+
26
+ ## 2026-02-14
27
+ - **Brief finalized for Series A inputs.** Status moved to final.