vibebusiness 1.2.83 → 1.2.85

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 (254) hide show
  1. package/.next/standalone/.env +27 -14
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-build-manifest.json +87 -70
  4. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  5. package/.next/standalone/.next/build-manifest.json +8 -8
  6. package/.next/standalone/.next/prerender-manifest.json +1 -1
  7. package/.next/standalone/.next/required-server-files.json +1 -1
  8. package/.next/standalone/.next/routes-manifest.json +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  13. package/.next/standalone/.next/server/app/api/analyze/route.js +1 -1
  14. package/.next/standalone/.next/server/app/api/analyze/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/briefing/route.js +1 -0
  16. package/.next/standalone/.next/server/app/api/briefing/route.js.nft.json +1 -0
  17. package/.next/standalone/.next/server/app/api/checkout/route.js +1 -1
  18. package/.next/standalone/.next/server/app/api/config/detect-repos/route.js +1 -1
  19. package/.next/standalone/.next/server/app/api/config/route.js +1 -1
  20. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js +1 -1
  22. package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/epics/[id]/route.js +1 -1
  24. package/.next/standalone/.next/server/app/api/epics/[id]/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/epics/route.js +1 -1
  26. package/.next/standalone/.next/server/app/api/epics/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js +1 -1
  28. package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/goals/[id]/route.js +1 -1
  30. package/.next/standalone/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/goals/route.js +1 -1
  32. package/.next/standalone/.next/server/app/api/goals/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  34. package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js +1 -1
  35. package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/hypotheses/route.js +1 -1
  37. package/.next/standalone/.next/server/app/api/hypotheses/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/ideas/[id]/card/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/ideas/[id]/card/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js +1 -1
  41. package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js +1 -1
  43. package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/ideas/[id]/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/ideas/[id]/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js +1 -1
  47. package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/ideas/route.js +1 -1
  49. package/.next/standalone/.next/server/app/api/ideas/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/implementations/route.js +1 -1
  51. package/.next/standalone/.next/server/app/api/implementations/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/investor-updates/generate/route.js +1 -1
  53. package/.next/standalone/.next/server/app/api/kpis/refresh/route.js +1 -1
  54. package/.next/standalone/.next/server/app/api/kpis/refresh/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/license/route.js +1 -1
  56. package/.next/standalone/.next/server/app/api/portal/route.js +1 -1
  57. package/.next/standalone/.next/server/app/api/provider-status/route.js +1 -1
  58. package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js +1 -1
  59. package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/api/social/[id]/route.js +1 -1
  61. package/.next/standalone/.next/server/app/api/social/[id]/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/social/route.js +1 -1
  63. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/webhook/route.js +1 -1
  65. package/.next/standalone/.next/server/app/briefing/page.js +1 -0
  66. package/.next/standalone/.next/server/app/briefing/page.js.nft.json +1 -0
  67. package/.next/standalone/.next/server/app/briefing/page_client-reference-manifest.js +1 -0
  68. package/.next/standalone/.next/server/app/goals/[id]/page.js +1 -1
  69. package/.next/standalone/.next/server/app/goals/[id]/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/goals/page.js +1 -1
  72. package/.next/standalone/.next/server/app/goals/page.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/hypotheses/[id]/page.js +1 -1
  75. package/.next/standalone/.next/server/app/hypotheses/[id]/page.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/hypotheses/page.js +1 -1
  78. package/.next/standalone/.next/server/app/hypotheses/page.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/ideas/[id]/page.js +1 -1
  81. package/.next/standalone/.next/server/app/ideas/[id]/page.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/index.html +1 -0
  84. package/.next/standalone/.next/server/app/index.meta +6 -0
  85. package/.next/standalone/.next/server/app/index.rsc +6 -0
  86. package/.next/standalone/.next/server/app/kanban/page.js +1 -0
  87. package/.next/standalone/.next/server/app/kanban/page.js.nft.json +1 -0
  88. package/.next/standalone/.next/server/app/kanban/page_client-reference-manifest.js +1 -0
  89. package/.next/standalone/.next/server/app/page.js +1 -1
  90. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/roadmap/[id]/page.js +1 -1
  93. package/.next/standalone/.next/server/app/roadmap/[id]/page.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/roadmap/investors/page.js +1 -1
  96. package/.next/standalone/.next/server/app/roadmap/investors/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/roadmap/investors/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/roadmap/page.js +1 -1
  99. package/.next/standalone/.next/server/app/roadmap/page.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/roadmap/public/page.js +1 -1
  102. package/.next/standalone/.next/server/app/roadmap/public/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/roadmap/public/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/sessions/page.js +1 -1
  105. package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  108. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/settings.html +1 -1
  111. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  112. package/.next/standalone/.next/server/app/social/page.js +1 -1
  113. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/social.html +1 -1
  116. package/.next/standalone/.next/server/app/social.rsc +3 -3
  117. package/.next/standalone/.next/server/app/updates/[id]/page.js +1 -1
  118. package/.next/standalone/.next/server/app/updates/[id]/page.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/updates/[id]/page_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/updates/new/page.js +1 -1
  121. package/.next/standalone/.next/server/app/updates/new/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/updates/new.html +1 -1
  123. package/.next/standalone/.next/server/app/updates/new.rsc +3 -3
  124. package/.next/standalone/.next/server/app/updates/page.js +1 -1
  125. package/.next/standalone/.next/server/app/updates/page.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/updates/page_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app-paths-manifest.json +18 -15
  128. package/.next/standalone/.next/server/chunks/3098.js +1 -0
  129. package/.next/standalone/.next/server/chunks/3871.js +1 -1
  130. package/.next/standalone/.next/server/chunks/4355.js +1 -0
  131. package/.next/standalone/.next/server/chunks/4471.js +2 -2
  132. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  133. package/.next/standalone/.next/server/pages/404.html +1 -1
  134. package/.next/standalone/.next/server/pages/500.html +1 -1
  135. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  137. package/.next/standalone/data/codebase-snapshot.json +55 -42
  138. package/.next/standalone/data/config.json +16 -40
  139. package/.next/standalone/data/positioning.json +10 -127
  140. package/.next/standalone/data/sessions.json +56 -312
  141. package/.next/standalone/node_modules/@esbuild/{darwin-arm64 → darwin-x64}/bin/esbuild +0 -0
  142. package/.next/standalone/node_modules/@esbuild/{darwin-arm64 → darwin-x64}/package.json +3 -3
  143. package/.next/standalone/package.json +1 -1
  144. package/.next/standalone/scripts/analyze.ts +35 -10
  145. package/.next/standalone/scripts/implement.ts +67 -17
  146. package/.next/standalone/server.js +1 -1
  147. package/.next/standalone/templates/commands/distribution-google-ads.md +86 -0
  148. package/.next/standalone/templates/commands/distribution-meta-ads.md +106 -0
  149. package/.next/standalone/templates/commands/distribution-repurpose.md +121 -0
  150. package/.next/standalone/templates/commands/distribution-seo-content.md +115 -0
  151. package/.next/standalone/templates/commands/distribution-social-expansion.md +128 -0
  152. package/.next/static/chunks/147-b00f2ac2bbec93ae.js +1 -0
  153. package/.next/static/chunks/159-4ce492ccac6de8f7.js +1 -0
  154. package/.next/static/chunks/47-eba0f8b4f9b17641.js +1 -0
  155. package/.next/static/chunks/547-921898871311cd72.js +1 -0
  156. package/.next/static/chunks/619-2b2ff3b9eaef112c.js +1 -0
  157. package/.next/static/chunks/735-b33805b2b19d17ad.js +1 -0
  158. package/.next/static/chunks/879-7fbd95e93ddc4636.js +1 -0
  159. package/.next/static/chunks/930-330300153dfcbfc0.js +1 -0
  160. package/.next/static/chunks/app/briefing/page-683aba0c52e910d7.js +1 -0
  161. package/.next/static/chunks/app/goals/[id]/page-40818dc7e710eeda.js +1 -0
  162. package/.next/static/chunks/app/goals/page-f80a64a68854e357.js +1 -0
  163. package/.next/static/chunks/app/hypotheses/[id]/page-023c882fa395f3ed.js +1 -0
  164. package/.next/static/chunks/app/hypotheses/page-168748bde00e7d90.js +1 -0
  165. package/.next/static/chunks/app/ideas/[id]/page-5f33e0ecf590ddec.js +1 -0
  166. package/.next/static/chunks/app/kanban/page-4f18f1e4f56948a5.js +1 -0
  167. package/.next/static/chunks/app/layout-cd1571ba4ed4a0fa.js +1 -0
  168. package/.next/static/chunks/app/page-0a8b9a7b052e6eac.js +1 -0
  169. package/.next/static/chunks/app/roadmap/[id]/page-9ba8a537e30c633c.js +1 -0
  170. package/.next/static/chunks/app/roadmap/investors/{page-0095ea5695573796.js → page-a914223623f56df3.js} +1 -1
  171. package/.next/static/chunks/app/roadmap/page-30de1fdc304eb572.js +1 -0
  172. package/.next/static/chunks/app/roadmap/public/page-c481b3f9217919ac.js +1 -0
  173. package/.next/static/chunks/app/sessions/page-d7eefd2fd42b4d55.js +1 -0
  174. package/.next/static/chunks/app/settings/{page-3afa908a96ce4e51.js → page-caf6daf930e4f2c6.js} +1 -1
  175. package/.next/static/chunks/app/social/page-21daeca0cf8af46b.js +1 -0
  176. package/.next/static/chunks/app/updates/[id]/page-2807cd17ae4938d0.js +1 -0
  177. package/.next/static/chunks/app/updates/new/{page-dcc67ffca587dcc2.js → page-ac5b966024ce0ddc.js} +1 -1
  178. package/.next/static/chunks/app/updates/page-b6efcdaae7f4f6d2.js +1 -0
  179. package/.next/static/chunks/{main-6ee938c5db2d5eb4.js → main-3eb11800bc19ca7f.js} +1 -1
  180. package/.next/static/chunks/{main-app-f42d9aa726a818bf.js → main-app-06ab73909d2a44c7.js} +1 -1
  181. package/.next/static/chunks/webpack-616e068a201ad621.js +1 -0
  182. package/.next/static/css/ff70d16171b1c02c.css +3 -0
  183. package/dist/bin/vibebusiness.js +1 -0
  184. package/dist/scripts/analyze.js +128 -8
  185. package/dist/scripts/heartbeat.js +17 -1
  186. package/dist/scripts/implement.js +77 -15
  187. package/package.json +1 -1
  188. package/templates/commands/distribution-google-ads.md +86 -0
  189. package/templates/commands/distribution-meta-ads.md +106 -0
  190. package/templates/commands/distribution-repurpose.md +121 -0
  191. package/templates/commands/distribution-seo-content.md +115 -0
  192. package/templates/commands/distribution-social-expansion.md +128 -0
  193. package/.next/standalone/.next/server/chunks/6299.js +0 -1
  194. package/.next/standalone/.next/server/chunks/995.js +0 -1
  195. package/.next/standalone/data/.analysis-prompt.txt +0 -170
  196. package/.next/standalone/data/business-context.json +0 -187
  197. package/.next/standalone/data/competitors.json +0 -576
  198. package/.next/standalone/data/copy/landing-improvements-2026-02-20.md +0 -111
  199. package/.next/standalone/data/copy/landing-landing-page-2026-02-20.md +0 -68
  200. package/.next/standalone/data/email-campaigns/sequences/onboarding.md +0 -183
  201. package/.next/standalone/data/email-campaigns/welcome-2026-02-20.md +0 -42
  202. package/.next/standalone/data/goals.json +0 -439
  203. package/.next/standalone/data/heartbeat-sessions.json +0 -7550
  204. package/.next/standalone/data/hypotheses.json +0 -269
  205. package/.next/standalone/data/ideas.json +0 -10747
  206. package/.next/standalone/data/implementations.json +0 -3304
  207. package/.next/standalone/data/pages.json +0 -22
  208. package/.next/standalone/data/payments.json +0 -33
  209. package/.next/standalone/data/reports/visuals/idea-first-tweet-card.png +0 -0
  210. package/.next/standalone/data/reports/visuals/idea-lp-hero-specificity-card.png +0 -0
  211. package/.next/standalone/data/reports/visuals/idea-lp-og-meta-card.png +0 -0
  212. package/.next/standalone/data/reports/visuals/idea-lp-social-proof-card.png +0 -0
  213. package/.next/standalone/data/reports/visuals/idea-readme-landing-url-card.png +0 -0
  214. package/.next/standalone/data/reports/visuals/idea-stripe-integration-card.png +0 -0
  215. package/.next/standalone/data/reports/visuals/promo-launch.png +0 -0
  216. package/.next/standalone/data/reports/visuals/promo-ship-fast.png +0 -0
  217. package/.next/standalone/data/reports/visuals/promo-while-you-slept-v2.png +0 -0
  218. package/.next/standalone/data/reports/visuals/promo-while-you-slept-v3.png +0 -0
  219. package/.next/standalone/data/reports/visuals/promo-while-you-slept.png +0 -0
  220. package/.next/standalone/data/social.json +0 -179
  221. package/.next/standalone/data/videos/ad-solo-founder-burnout.mp4 +0 -0
  222. package/.next/standalone/data/videos/staging/ad-solo-founder-burnout.json +0 -54
  223. package/.next/standalone/data/videos/while-you-slept-demo-feed.mp4 +0 -0
  224. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/48519e014fdef8bfe40a0d447e90c96c/0.pack +0 -0
  225. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/48519e014fdef8bfe40a0d447e90c96c/index.pack +0 -0
  226. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/0.pack +0 -0
  227. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/1.pack +0 -0
  228. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/2.pack +0 -0
  229. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/index.pack +0 -0
  230. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/index.pack.old +0 -0
  231. package/.next/static/chunks/280-fd1092f75f985b1e.js +0 -1
  232. package/.next/static/chunks/354-d5bc9619159f46c5.js +0 -1
  233. package/.next/static/chunks/429-8f4030371ebef5c3.js +0 -1
  234. package/.next/static/chunks/809-833fcb9fe6e81fd6.js +0 -1
  235. package/.next/static/chunks/827-6cf4bfc10d1ff0c7.js +0 -1
  236. package/.next/static/chunks/851-65b033bf38847cbb.js +0 -1
  237. package/.next/static/chunks/app/goals/[id]/page-231bb4daae0f06eb.js +0 -1
  238. package/.next/static/chunks/app/goals/page-4dfa36ac38853b88.js +0 -1
  239. package/.next/static/chunks/app/hypotheses/[id]/page-6ec09d5470557c18.js +0 -1
  240. package/.next/static/chunks/app/hypotheses/page-1732b7466579493e.js +0 -1
  241. package/.next/static/chunks/app/ideas/[id]/page-b3dfe1e61fc656a4.js +0 -1
  242. package/.next/static/chunks/app/layout-eeef7928298d2198.js +0 -1
  243. package/.next/static/chunks/app/page-3635a292b3d471c0.js +0 -1
  244. package/.next/static/chunks/app/roadmap/[id]/page-b93a96f017c8d3dd.js +0 -1
  245. package/.next/static/chunks/app/roadmap/page-eacd69a99fcfc658.js +0 -1
  246. package/.next/static/chunks/app/roadmap/public/page-6b791041894b76d2.js +0 -1
  247. package/.next/static/chunks/app/sessions/page-a56ea625acdfa13e.js +0 -1
  248. package/.next/static/chunks/app/social/page-5211c78a5f37df65.js +0 -1
  249. package/.next/static/chunks/app/updates/[id]/page-fa20533878416cd0.js +0 -1
  250. package/.next/static/chunks/app/updates/page-19a09d7046577f70.js +0 -1
  251. package/.next/static/chunks/webpack-a3c37fcbf859f6f9.js +0 -1
  252. package/.next/static/css/654766eb547c6bab.css +0 -3
  253. /package/.next/static/{wJT1h-ifHTtYVlXZG2PFS → COv1w-K5vJ1LbOqnlKgHv}/_buildManifest.js +0 -0
  254. /package/.next/static/{wJT1h-ifHTtYVlXZG2PFS → COv1w-K5vJ1LbOqnlKgHv}/_ssgManifest.js +0 -0
@@ -0,0 +1,106 @@
1
+ # /distribution-meta-ads — Meta/Instagram Ads Campaign Playbook
2
+
3
+ ## Usage
4
+ ```
5
+ /distribution-meta-ads # Full campaign design
6
+ /distribution-meta-ads {audience} # Campaign for specific audience segment
7
+ ```
8
+
9
+ ## Input
10
+ - `$ARGUMENTS` — optional: specific audience segment to target
11
+
12
+ ## Process
13
+
14
+ ### Step 1: Load Context
15
+ 1. Read `data/positioning.json` — value proposition, target audience, pain points
16
+ 2. Read `data/business-context.json` — product name, funnels, KPIs
17
+ 3. Read `data/competitors.json` — competitor ad strategies
18
+
19
+ ### Step 2: Audience Research
20
+ Use WebSearch to find audience targeting opportunities:
21
+ - `"[product category] facebook ads benchmarks CPM CPC CPA [year]"`
22
+ - `"[product category] facebook ads targeting"`
23
+ - `"[target audience] interests facebook ads"`
24
+
25
+ Define audience segments:
26
+
27
+ **Segment 1: Interest-Based (Cold)**
28
+ - Interests: [product category tools], [competitor names], [related technologies]
29
+ - Demographics: [age range], [job titles if B2B]
30
+ - Estimated audience size
31
+
32
+ **Segment 2: Behavior-Based (Warm)**
33
+ - Behaviors: Technology early adopters, SaaS users, [industry-specific]
34
+ - Layered with interests for precision
35
+
36
+ **Segment 3: Retargeting (Hot)**
37
+ - Website visitors (last 30 days) who didn't convert
38
+ - Pricing page visitors (last 14 days)
39
+ - Blog readers (last 60 days)
40
+
41
+ **Segment 4: Lookalike**
42
+ - Based on existing signups/customers
43
+ - 1% lookalike for precision, 3-5% for reach
44
+
45
+ ### Step 3: Campaign Structure
46
+ Design campaigns following Meta Ads best practices:
47
+
48
+ ```
49
+ Campaign: [Product] — Conversions
50
+ ├── Ad Set: Interest-Based (Cold)
51
+ │ ├── Audience: [interests + demographics]
52
+ │ ├── Placement: Feed + Stories (auto)
53
+ │ └── Budget: $5/day
54
+ ├── Ad Set: Retargeting (Hot)
55
+ │ ├── Audience: Website visitors 30d, excl. signups
56
+ │ ├── Placement: Feed + Stories (auto)
57
+ │ └── Budget: $3/day
58
+ └── Ad Set: Lookalike 1%
59
+ ├── Audience: Lookalike of signups
60
+ ├── Placement: Feed + Stories (auto)
61
+ └── Budget: $5/day
62
+ ```
63
+
64
+ ### Step 4: Generate Ad Copy
65
+ For each audience segment, queue copy generation:
66
+ - `/promo-copy ad-meta {audience}` — generates primary text + headline + CTA
67
+ - Match messaging to audience temperature (cold=educate, warm=convince, hot=convert)
68
+
69
+ ### Step 5: Creative Format Recommendations
70
+ For each ad set, recommend creative format:
71
+ - **Cold audiences:** Carousel (3-5 feature cards) or short video (15-30s)
72
+ - **Retargeting:** Single image with social proof / testimonial
73
+ - **Lookalike:** Video demo or before/after comparison
74
+
75
+ If video skills are available, queue `/promo-video ad-{topic}` for video creatives.
76
+
77
+ ### Step 6: Budget & Schedule
78
+ - **Total daily budget:** $10-15/day starting
79
+ - **Split:** 40% cold, 20% retargeting, 40% lookalike
80
+ - **Schedule:** Run 7 days, then evaluate
81
+ - **Dayparting:** If relevant, focus on business hours for B2B
82
+
83
+ ### Step 7: A/B Test Plan
84
+ For each ad set:
85
+ - Test 2-3 ad copy variations
86
+ - Test 2 creative formats (image vs carousel vs video)
87
+ - Measure for 7 days before declaring winner
88
+ - Winning criteria: lowest CPA or highest CTR (depending on objective)
89
+
90
+ ### Step 8: Tracking
91
+ - UTM parameters: `utm_source=meta&utm_medium=paid&utm_campaign={campaign-slug}&utm_content={ad-set}`
92
+ - Pixel events: ViewContent, Lead, CompleteRegistration
93
+ - CAPI (Conversions API) setup recommendation if not configured
94
+
95
+ ### Step 9: Output
96
+ For each campaign, create an idea in `data/ideas.json` with:
97
+ - Category: "growth"
98
+ - Tags: ["growth", "meta-ads", "{audience-segment}"]
99
+ - Implementation plan with campaign structure
100
+ - Success metrics: impressions, reach, CPM, CPC, CTR, conversions, CPA
101
+ - Budget recommendation
102
+ - Queue `copy-ad-meta-{audience}` tasks
103
+
104
+ ## Output Files
105
+ - `data/ideas.json` — new Meta Ads campaign ideas
106
+ - `data/campaigns/` — campaign briefs (optional)
@@ -0,0 +1,121 @@
1
+ # /distribution-repurpose — Content Repurposing Pipeline
2
+
3
+ ## Usage
4
+ ```
5
+ /distribution-repurpose # Repurpose latest shipped idea
6
+ /distribution-repurpose {idea-id} # Repurpose specific shipped idea
7
+ /distribution-repurpose --content="..." # Repurpose arbitrary content
8
+ ```
9
+
10
+ ## Input
11
+ - `$ARGUMENTS` — optional: idea ID or content to repurpose
12
+
13
+ ## Process
14
+
15
+ ### Step 1: Load Source Content
16
+ 1. If idea ID provided, read from `data/ideas.json`
17
+ 2. If no argument, find the most recently shipped idea
18
+ 3. Read `data/positioning.json` — messaging pillars for consistent voice
19
+ 4. Read `data/social.json` — understand which platforms are active
20
+
21
+ Extract from source:
22
+ - **Title/headline** — the main hook
23
+ - **Key insight** — what's new/interesting
24
+ - **Target audience** — who cares about this
25
+ - **Technical details** — for dev-focused channels
26
+ - **Business impact** — for business-focused channels
27
+ - **Visual assets** — screenshots, diagrams, ship cards
28
+
29
+ ### Step 2: Generate Channel-Specific Adaptations
30
+
31
+ For each active channel, create a tailored version:
32
+
33
+ #### Twitter/X Thread (5-7 tweets)
34
+ - Tweet 1: Hook — the most surprising/valuable insight
35
+ - Tweet 2-5: Story arc — problem → solution → result → detail
36
+ - Tweet 6: Takeaway or lesson learned
37
+ - Tweet 7: CTA with link + UTM
38
+ - Use patterns from `ai-content-generator.ts` (hooks, engagement patterns)
39
+ - Queue: `social-draft-thread-{topic}`
40
+
41
+ #### LinkedIn Post (Professional angle)
42
+ - Opening line: Pattern interrupt or contrarian take
43
+ - Body: "Here's what I learned building [feature]..."
44
+ - Formatting: Short paragraphs, line breaks, no hashtag spam
45
+ - CTA: Soft — "What's your experience with [topic]?"
46
+ - Queue: `copy-social-linkedin`
47
+
48
+ #### Reddit Post (Value-first, subreddit-adapted)
49
+ - Title: Question or insight format (NOT promotional)
50
+ - Body: Genuine story, metrics shared transparently, lessons learned
51
+ - Adapt tone to target subreddit (technical for r/programming, casual for r/SideProject)
52
+ - Link in context only, never as main content
53
+ - Queue: idea with tags ["growth", "reddit", "{subreddit}"]
54
+
55
+ #### Google Ads Keyword Group
56
+ - Map content to search intent keywords
57
+ - If content solves a problem → target "[problem] solution" keywords
58
+ - If content is a comparison → target "[product] vs [competitor]" keywords
59
+ - Queue: `copy-ad-google-{keyword}`
60
+
61
+ #### Meta Retargeting Ad
62
+ - Target: People who visited the content page but didn't convert
63
+ - Creative: Key visual from the content + social proof
64
+ - CTA: Return to complete signup
65
+ - Queue: `copy-ad-meta-retargeting-{content-slug}`
66
+
67
+ #### Email Newsletter Segment
68
+ - Subject line: Hook adapted for email (curiosity gap)
69
+ - Body: Summary with "read more" link
70
+ - Segment: Users interested in [topic]
71
+ - Queue: `email-blast-{campaign-slug}` or include in next digest
72
+
73
+ #### Indie Hackers / Dev.to Post
74
+ - Longer form, more transparent about metrics and journey
75
+ - Include code snippets if technical
76
+ - End with question to encourage discussion
77
+ - Cross-post with canonical URL to own blog
78
+
79
+ ### Step 3: UTM Attribution Matrix
80
+ Each adaptation gets consistent tracking:
81
+
82
+ | Channel | utm_source | utm_medium | utm_campaign |
83
+ |---------|-----------|-----------|-------------|
84
+ | Twitter/X | twitter | social | {content-slug} |
85
+ | LinkedIn | linkedin | social | {content-slug} |
86
+ | Reddit | reddit | community | {content-slug} |
87
+ | Google Ads | google | cpc | {content-slug} |
88
+ | Meta Ads | meta | paid | retarget-{content-slug} |
89
+ | Email | email | newsletter | {content-slug} |
90
+ | Indie Hackers | indiehackers | community | {content-slug} |
91
+ | Dev.to | devto | blog | {content-slug} |
92
+
93
+ ### Step 4: Publishing Schedule
94
+ Stagger publishing for maximum reach:
95
+
96
+ | Day | Channel | Why |
97
+ |-----|---------|-----|
98
+ | Day 0 | Twitter thread | Immediate, test the hook |
99
+ | Day 1 | LinkedIn post | Business hours reach |
100
+ | Day 2 | Reddit post | Different audience, value-first |
101
+ | Day 3 | Email newsletter | Owned channel, reliable |
102
+ | Day 5 | Dev.to / IH post | Long-form, search indexed |
103
+ | Day 7 | Google Ads | If content validates search intent |
104
+ | Ongoing | Meta retargeting | Runs continuously for page visitors |
105
+
106
+ ### Step 5: Output
107
+ Create ideas in `data/ideas.json` for each channel adaptation:
108
+ - Category: "growth"
109
+ - Tags: ["growth", "repurpose", "{channel}", "{source-idea-id}"]
110
+ - Implementation plan with channel-specific content draft
111
+ - Success metrics: channel-specific (impressions, clicks, referral signups)
112
+ - Queue relevant tasks for each channel
113
+
114
+ Print summary:
115
+ - Source content: [title]
116
+ - Adaptations generated: [count]
117
+ - Channels covered: [list]
118
+ - Tasks queued: [list]
119
+
120
+ ## Output Files
121
+ - `data/ideas.json` — repurposed content campaign ideas
@@ -0,0 +1,115 @@
1
+ # /distribution-seo-content — SEO Content Machine Playbook
2
+
3
+ ## Usage
4
+ ```
5
+ /distribution-seo-content # Full SEO content strategy
6
+ /distribution-seo-content comparison # Comparison pages only
7
+ /distribution-seo-content alternatives # Alternative pages only
8
+ /distribution-seo-content howto # How-to guides only
9
+ ```
10
+
11
+ ## Input
12
+ - `$ARGUMENTS` — optional: specific content type to focus on
13
+
14
+ ## Process
15
+
16
+ ### Step 1: Load Context
17
+ 1. Read `data/competitors.json` — competitor names, SEO keywords, features
18
+ 2. Read `data/positioning.json` — our differentiators, target audience, pain points
19
+ 3. Read `data/business-context.json` — product name, category, funnels
20
+ 4. Read `data/pages.json` — existing pages to avoid duplication
21
+
22
+ ### Step 2: Keyword Research
23
+ Use WebSearch to find keyword opportunities:
24
+
25
+ **Comparison Keywords:**
26
+ - `"[product] vs [competitor]"` — for each competitor
27
+ - `"[product] vs [competitor] comparison"` — check if these pages rank
28
+ - `"[competitor] alternative"` — capture competitor-dissatisfied users
29
+
30
+ **Alternative Keywords:**
31
+ - `"best [product category] tools [year]"`
32
+ - `"[product category] alternatives"`
33
+ - `"[incumbent] alternatives"` — for each major player
34
+ - `"top [product category] software"`
35
+
36
+ **Problem-Aware Keywords:**
37
+ - `"how to [solve pain point]"`
38
+ - `"how to [use case] with AI"`
39
+ - `"[pain point] solution for [target audience]"`
40
+
41
+ **Use-Case Keywords:**
42
+ - `"[product category] for [persona]"` (e.g., "AI product manager for solo founders")
43
+ - `"[product category] for [industry]"`
44
+
45
+ For each keyword, estimate via WebSearch:
46
+ - Monthly search volume
47
+ - Competition level
48
+ - Current top-ranking pages (to understand content expectations)
49
+ - Search intent (informational/commercial/transactional)
50
+
51
+ ### Step 3: Classify Keywords by Intent
52
+ Group keywords into content types:
53
+
54
+ | Intent | Content Type | Priority | Example |
55
+ |--------|-------------|----------|---------|
56
+ | Commercial | Comparison page | High | "[Product] vs [Competitor]" |
57
+ | Commercial | Alternative page | High | "Best [category] tools" |
58
+ | Informational | How-to guide | Medium | "How to [solve problem]" |
59
+ | Informational | Use-case page | Medium | "[Product] for [persona]" |
60
+ | Transactional | Landing page | High | "[Product category] software" |
61
+
62
+ ### Step 4: Content Briefs (Top 10 Keywords)
63
+ For each high-priority keyword, generate a content brief:
64
+
65
+ **Comparison Pages ("[Product] vs [Competitor]"):**
66
+ - H1: "[Product] vs [Competitor]: [Key Difference]"
67
+ - Sections: Overview, Feature comparison table, Pricing, Pros/cons, Use cases, Verdict
68
+ - Schema markup: Product, Review, FAQ
69
+ - Internal links to feature pages and pricing
70
+ - CTA: "Try [Product] free" with UTM
71
+
72
+ **Alternative Pages ("Best [category] tools"):**
73
+ - H1: "Best [Category] Tools in [Year]: Complete Guide"
74
+ - Sections: Our picks (us first), detailed reviews, comparison table, how to choose
75
+ - Schema markup: ItemList, Product
76
+ - Include 5-8 tools (us + competitors)
77
+ - CTA: "Start with [Product]" with UTM
78
+
79
+ **How-To Guides:**
80
+ - H1: "How to [Solve Problem] with [Product]"
81
+ - Sections: Problem statement, Step-by-step solution, Screenshots, FAQ
82
+ - Schema markup: HowTo, FAQ
83
+ - Internal links to relevant feature pages
84
+ - CTA: contextual within the guide
85
+
86
+ **Use-Case Pages:**
87
+ - H1: "[Product] for [Persona]: [Key Benefit]"
88
+ - Sections: Pain points for persona, How [Product] solves them, Testimonials, Pricing
89
+ - Schema markup: Product, FAQ
90
+ - Tailored messaging per persona
91
+
92
+ ### Step 5: Internal Linking Strategy
93
+ - Each new page links to 2-3 existing pages
94
+ - Update existing pages to link to new content
95
+ - Create a hub-and-spoke structure around main category page
96
+ - Ensure all comparison pages link to pricing
97
+
98
+ ### Step 6: Schema Markup
99
+ For each page type, include:
100
+ - **Comparison:** Product schema for both products, FAQ schema
101
+ - **Alternative:** ItemList schema, Product schema per item
102
+ - **How-to:** HowTo schema with steps, FAQ schema
103
+ - **Use-case:** Product schema, FAQ schema
104
+
105
+ ### Step 7: Output
106
+ For each content piece, create an idea in `data/ideas.json`:
107
+ - Category: "growth"
108
+ - Tags: ["growth", "seo", "{content-type}", "{target-keyword}"]
109
+ - Implementation plan with content brief
110
+ - Success metrics: organic traffic, keyword ranking, time on page, conversion rate
111
+ - Queue `/build-page {slug}` for top priority pages
112
+ - UTM: `utm_source=organic&utm_medium=seo&utm_campaign={page-slug}`
113
+
114
+ ## Output Files
115
+ - `data/ideas.json` — SEO content machine ideas
@@ -0,0 +1,128 @@
1
+ # /distribution-social-expansion — Multi-Platform Social Media Playbook
2
+
3
+ ## Usage
4
+ ```
5
+ /distribution-social-expansion # Full multi-platform expansion plan
6
+ /distribution-social-expansion linkedin # LinkedIn-specific plan
7
+ /distribution-social-expansion reddit # Reddit-specific plan
8
+ /distribution-social-expansion communities # Indie Hackers, Dev.to, Hashnode plan
9
+ ```
10
+
11
+ ## Input
12
+ - `$ARGUMENTS` — optional: specific platform to focus on
13
+
14
+ ## Process
15
+
16
+ ### Step 1: Load Context
17
+ 1. Read `data/positioning.json` — value proposition, target audience, messaging pillars
18
+ 2. Read `data/business-context.json` — product name, social config status
19
+ 3. Read `data/social.json` — current Twitter/X presence, draft history, engagement metrics
20
+ 4. Read `data/ideas.json` — recently shipped ideas (content fuel)
21
+
22
+ ### Step 2: Audit Current Presence
23
+ - Check Twitter/X status (configured, post count, engagement rates)
24
+ - Identify what content performs best on Twitter/X (analyze engagement_history if available)
25
+ - Note content gaps: what platforms are we NOT on?
26
+
27
+ ### Step 3: Platform-Specific Expansion Plans
28
+
29
+ #### LinkedIn Strategy
30
+ **Content Pillars:**
31
+ - Build-in-public updates (40%) — what we shipped, metrics, learnings
32
+ - Industry insights (30%) — trends, analysis, opinions on [product category]
33
+ - Product updates (20%) — feature announcements, use cases
34
+ - Engagement posts (10%) — polls, questions, community interaction
35
+
36
+ **Posting Cadence:**
37
+ - 3x/week: Tuesday (build-in-public), Thursday (industry insight), Saturday (product update)
38
+ - Best times: 8-10am and 12-1pm local time (weekdays)
39
+
40
+ **Post Formats:**
41
+ - Text-only with line breaks (highest organic reach)
42
+ - Carousel documents for tutorials/frameworks
43
+ - Short video clips for demos
44
+
45
+ **Copy Generation:**
46
+ - Queue `copy-social-linkedin` for each content pillar
47
+ - Adapt existing Twitter threads into LinkedIn format
48
+
49
+ #### Reddit Strategy
50
+ **Subreddit Research (MANDATORY WebSearch):**
51
+ - Search: "[product category] subreddit"
52
+ - Search: "best subreddits for [target audience]"
53
+ - Search: "reddit [product category] marketing"
54
+
55
+ For each subreddit found:
56
+ - Check subscriber count and activity level
57
+ - Read top 10 posts to understand tone and rules
58
+ - Identify content angles that get upvoted
59
+ - Note self-promotion rules (most subs ban direct promotion)
60
+
61
+ **Target Subreddits (find 5-10):**
62
+ - r/SideProject — "What I built" posts
63
+ - r/SaaS — SaaS-specific discussions
64
+ - r/[product-category] — domain-specific subreddits
65
+ - r/startups — startup journey updates
66
+ - r/Entrepreneur — business insights
67
+ - r/[technology] — tech stack communities
68
+
69
+ **Content Approach:**
70
+ - Value-first: share genuine insights, help others, answer questions
71
+ - NO self-promotion in titles or early in posts
72
+ - Story format: "Here's what I learned building [product]..."
73
+ - Comment engagement: reply to relevant threads with expertise
74
+ - Posting cadence: 2-3x/week across different subreddits
75
+
76
+ #### Indie Hackers / Dev.to / Hashnode
77
+ **Indie Hackers:**
78
+ - "What I built" launch post — product story + metrics
79
+ - Monthly milestone updates — revenue, users, learnings
80
+ - Engage in comments on others' projects
81
+ - Posting cadence: 1-2x/month
82
+
83
+ **Dev.to / Hashnode:**
84
+ - Technical tutorials from shipped features
85
+ - "How we built [feature] with [technology]" posts
86
+ - Cross-post from blog (with canonical URL)
87
+ - Posting cadence: 1-2x/month
88
+
89
+ ### Step 4: Content Calendar Template
90
+ Build a weekly content calendar:
91
+
92
+ | Day | Twitter/X | LinkedIn | Reddit | Community |
93
+ |-----|-----------|----------|--------|-----------|
94
+ | Mon | Daily post | — | Comment engagement | — |
95
+ | Tue | Daily post | Build-in-public | r/SideProject post | — |
96
+ | Wed | Daily post | — | Comment engagement | — |
97
+ | Thu | Thread | Industry insight | r/SaaS post | Dev.to article |
98
+ | Fri | Daily post | — | Comment engagement | — |
99
+ | Sat | — | Product update | — | IH update (monthly) |
100
+ | Sun | — | — | — | — |
101
+
102
+ ### Step 5: Content Repurposing Matrix
103
+ For ONE piece of content (e.g., a shipped feature):
104
+
105
+ | Source | → Twitter/X | → LinkedIn | → Reddit | → IH/Dev.to |
106
+ |--------|-------------|------------|----------|-------------|
107
+ | Shipped feature | Thread (5-7 tweets) | "What we shipped" post | "Here's what I built" | Technical writeup |
108
+ | Blog post | Key insight tweet | Professional summary | Value-first summary | Cross-post |
109
+ | Milestone | Celebration tweet | Humble brag post | Transparent update | Monthly report |
110
+ | Learning | Hot take tweet | Lesson learned post | "TIL" in relevant sub | Tutorial |
111
+
112
+ ### Step 6: UTM & Attribution
113
+ Each platform gets consistent UTM tracking:
114
+ - LinkedIn: `utm_source=linkedin&utm_medium=social&utm_campaign={content-type}`
115
+ - Reddit: `utm_source=reddit&utm_medium=community&utm_campaign={subreddit}`
116
+ - Indie Hackers: `utm_source=indiehackers&utm_medium=community&utm_campaign={post-type}`
117
+ - Dev.to: `utm_source=devto&utm_medium=blog&utm_campaign={article-slug}`
118
+
119
+ ### Step 7: Output
120
+ Create ideas in `data/ideas.json` for each platform expansion:
121
+ - Category: "growth"
122
+ - Tags: ["growth", "{platform-name}"]
123
+ - Implementation plan with content calendar + first week of posts
124
+ - Success metrics: followers, impressions, profile visits, referral signups
125
+ - Queue relevant copy tasks (`copy-social-linkedin`, etc.)
126
+
127
+ ## Output Files
128
+ - `data/ideas.json` — platform expansion ideas
@@ -1 +0,0 @@
1
- "use strict";exports.id=6299,exports.ids=[6299],exports.modules={9576:(t,e,a)=>{a.d(e,{Z:()=>l});var i=a(4770),n=a.n(i);let s={randomUUID:n().randomUUID},r=new Uint8Array(256),o=r.length,d=[];for(let t=0;t<256;++t)d.push((t+256).toString(16).slice(1));let l=function(t,e,a){if(s.randomUUID&&!e&&!t)return s.randomUUID();let i=(t=t||{}).random||(t.rng||function(){return o>r.length-16&&(n().randomFillSync(r),o=0),r.slice(o,o+=16)})();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){a=a||0;for(let t=0;t<16;++t)e[a+t]=i[t];return e}return function(t,e=0){return d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]}(i)}},6299:(t,e,a)=>{a.d(e,{BK:()=>ti,BM:()=>M,B_:()=>T,DT:()=>ta,Ge:()=>J,HX:()=>h,HZ:()=>D,Ir:()=>y,Iw:()=>_,KG:()=>tt,LB:()=>b,M6:()=>S,N0:()=>Y,NY:()=>I,Pk:()=>E,QV:()=>$,Rx:()=>j,Xe:()=>L,Z0:()=>te,_1:()=>B,a9:()=>v,ad:()=>x,b_:()=>f,c5:()=>Z,dZ:()=>O,iE:()=>P,k4:()=>A,kU:()=>U,lo:()=>X,pG:()=>m,pL:()=>w,rF:()=>V,rK:()=>K,s6:()=>k,t:()=>g,uQ:()=>d,x5:()=>H,zg:()=>G});var i=a(2048),n=a(5315),s=a.n(n),r=a(9576),o=a(2114);function d(){return process.env.AI_ANALYST_DATA_DIR||s().join(process.cwd(),"data")}function l(t){return s().join(d(),t)}async function c(){try{await i.promises.access(d())}catch{await i.promises.mkdir(d(),{recursive:!0})}}async function u(t,e){try{let e=await i.promises.readFile(t,"utf-8");return JSON.parse(e)}catch{return e}}async function p(t,e){await c(),await i.promises.writeFile(t,JSON.stringify(e,null,2),"utf-8")}async function _(){return(await u(l("ideas.json"),{ideas:[]})).ideas.map(t=>({...t,epic_id:t.epic_id??null,implementation:{...t.implementation,sub_tasks:t.implementation?.sub_tasks||[]}}))}async function f(t){return(await _()).find(e=>e.id===t)||null}async function g(t){let e=await _(),a=new Date().toISOString(),i={id:`idea-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,summary:t.summary,category:t.category,priority:t.priority,effort:t.effort,impact:t.impact,context:t.context,rationale:t.rationale,implementation_plan:t.implementation_plan,success_metrics:t.success_metrics,stage:"inbox",source:t.source,implementation:{branch_name:null,pr_url:null,pr_number:null,commits:[],started_at:null,completed_at:null,sub_tasks:[]},comments:[],tags:t.tags||[],related_ideas:[],goal_id:t.goal_id||null,expected_impact:t.expected_impact||null,hypothesis_id:t.hypothesis_id||null,epic_id:t.epic_id||null,prerequisites:t.prerequisites};return e.push(i),await p(l("ideas.json"),{ideas:e}),i.hypothesis_id&&await F(i.hypothesis_id,i.id),i}async function m(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("ideas.json"),{ideas:a}),n}async function w(t,e,a){let i=await _(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n],d=new Date().toISOString();if(a){let t={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:d,author:"human",author_name:"Founder",content:a};s.comments.push(t)}if(s.stage=e,s.updated_at=d,"in_progress"!==e||s.implementation.started_at){if("shipped"===e){s.implementation.completed_at=d;let t=[];if(s.goal_id){let e=(await S()).find(t=>t.id===s.goal_id);if(e)for(let a of e.kpis)t.push({goal_id:e.id,kpi_id:a.id,kpi_name:a.name,value:a.current_value,date:d})}s.verification={...o.Lu,kpi_snapshot_at_ship:t}}}else s.implementation.started_at=d;return i[n]=s,await p(l("ideas.json"),{ideas:i}),s}async function y(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:new Date().toISOString(),author:e.author,author_name:e.author_name,content:e.content};return a[i].comments.push(n),a[i].updated_at=new Date().toISOString(),await p(l("ideas.json"),{ideas:a}),n}async function h(t){let e=await _(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("ideas.json"),{ideas:e}),!0)}async function j(){return(await u(l("sessions.json"),{sessions:[]})).sessions}async function x(){return(await u(l("implementations.json"),{implementations:[]})).implementations}async function I(t){return(await x()).find(e=>e.idea_id===t&&"failed"!==e.status)||null}async function S(){return(await u(l("goals.json"),{goals:[]})).goals}async function v(t){return(await S()).find(e=>e.id===t)||null}async function D(t){let e=await S(),a=new Date().toISOString(),i=(t.kpis||[]).map((t,e)=>({...t,id:`kpi-${(0,r.Z)().slice(0,8)}`,history:[]})),n={id:`goal-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,target_value:t.target_value,target_unit:t.target_unit,current_value:null,baseline_value:t.baseline_value||0,deadline:t.deadline,status:"on_track",kpis:i,related_ideas:[]};return e.push(n),await p(l("goals.json"),{goals:e}),n}async function b(t,e){let a=await S(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("goals.json"),{goals:a}),n}async function k(t){let e=await S(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("goals.json"),{goals:e}),!0)}async function O(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={...i[n].kpis[s],...a};return i[n].kpis[s]=r,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),r}async function $(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={date:a.date||new Date().toISOString().split("T")[0],value:a.value};return i[n].kpis[s].history.push(r),i[n].kpis[s].current_value=a.value,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),i[n].kpis[s]}async function Z(){return(await u(l("hypotheses.json"),{hypotheses:[]})).hypotheses}async function U(t){return(await Z()).find(e=>e.id===t)||null}async function M(t){let e=await Z(),a=new Date().toISOString(),i=`hyp-${(0,r.Z)().slice(0,8)}`;if(e.some(t=>t.id===i))throw console.error(`[createHypothesis] Hypothesis ID collision detected: ${i}`),Error(`Hypothesis ID collision detected: ${i}`);console.debug(`[createHypothesis] created id=${i}`);let n={id:i,created_at:a,updated_at:a,title:t.title,statement:t.statement,description:t.description,funnel_stage:t.funnel_stage,priority:t.priority,status:"stated",evidence_for:[],evidence_against:[],validation_criteria:[],validation_ideas:[],reference_model:t.reference_model,effort_to_test:t.effort_to_test,tags:t.tags||[]};return e.push(n),await p(l("hypotheses.json"),{hypotheses:e}),n}async function A(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("hypotheses.json"),{hypotheses:a}),n}async function H(t){let e=await Z(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("hypotheses.json"),{hypotheses:e}),!0)}async function F(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);return -1===i?null:(a[i].validation_ideas.includes(e)||(a[i].validation_ideas.push(e),a[i].updated_at=new Date().toISOString(),await p(l("hypotheses.json"),{hypotheses:a})),a[i])}let N={xs:1,s:2,m:3,l:5,xl:8};function L(t,e){let a=e.filter(e=>t.idea_ids.includes(e.id)),i={},n=0,s=0;for(let t of a){i[t.stage]=(i[t.stage]||0)+1;let e=N[t.effort]||3;n+=e,"shipped"===t.stage&&(s+=e)}let r=i.shipped||0,o=a.length;return{total_ideas:o,by_stage:i,shipped_count:r,progress_pct:o>0?Math.round(r/o*100):0,effort_total:n,effort_completed:s}}function q(t,e){if(t.status_override)return t.status;let a=e.filter(e=>t.idea_ids.includes(e.id));return 0===a.length?"planned":a.every(t=>"shipped"===t.stage||"rejected"===t.stage)?"completed":a.some(t=>"in_progress"===t.stage||"testing"===t.stage)?"active":"planned"}async function B(){let t=await u(l("roadmap.json"),{epics:[]}),e=await _();return t.epics.map(t=>({...t,status:q(t,e)}))}async function G(t){return(await B()).find(e=>e.id===t)||null}async function T(t){let e=await u(l("roadmap.json"),{epics:[]}),a=new Date().toISOString(),i={id:`epic-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,goal_id:t.goal_id??null,hypothesis_id:t.hypothesis_id??null,idea_ids:t.idea_ids||[],target_start:t.target_start??null,target_end:t.target_end??null,status:"planned",status_override:!1,depends_on:t.depends_on||[],sort_order:t.sort_order??e.epics.length,auto_generated:t.auto_generated??!1,rationale:t.rationale??null,tags:t.tags||[]};if(e.epics.push(i),await p(l("roadmap.json"),e),i.idea_ids.length>0){let t=await _(),e=!1;for(let a of t)i.idea_ids.includes(a.id)&&a.epic_id!==i.id&&(a.epic_id=i.id,e=!0);e&&await p(l("ideas.json"),{ideas:t})}return i}async function K(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a.epics[i],...e,updated_at:new Date().toISOString()};a.epics[i]=n,await p(l("roadmap.json"),a);let s=await _();return n.status=q(n,s),n}async function Y(t){let e=await u(l("roadmap.json"),{epics:[]}),a=e.epics.findIndex(e=>e.id===t);if(-1===a)return!1;let i=e.epics[a];if(e.epics.splice(a,1),await p(l("roadmap.json"),e),i.idea_ids.length>0){let e=await _(),a=!1;for(let i of e)i.epic_id===t&&(i.epic_id=null,a=!0);a&&await p(l("ideas.json"),{ideas:e})}return!0}async function E(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;a.epics[i].idea_ids.includes(e)||(a.epics[i].idea_ids.push(e),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let n=await _(),s=n.find(t=>t.id===e);return s&&s.epic_id!==t&&(s.epic_id=t,await p(l("ideas.json"),{ideas:n})),a.epics[i]}async function J(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n=a.epics[i].idea_ids.indexOf(e);-1!==n&&(a.epics[i].idea_ids.splice(n,1),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let s=await _(),r=s.find(t=>t.id===e);return r&&r.epic_id===t&&(r.epic_id=null,await p(l("ideas.json"),{ideas:s})),a.epics[i]}function Q(t,e){let a=new Date(t),i=0;for(;i<e;){a.setDate(a.getDate()+1);let t=a.getDay();0!==t&&6!==t&&i++}return a}function R(t){let[e,a,i]=t.split("-").map(Number);return new Date(e,a-1,i)}function X(t,e,a){let i=new Map,n=new Date;n.setHours(0,0,0,0);let s=new Map;for(let e of[...t].sort((t,e)=>t.sort_order-e.sort_order)){let t=e.goal_id,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[,t]of Array.from(s.entries())){let a=new Date(n);for(let n of t){if(n.target_start&&n.target_end){i.set(n.id,{start:n.target_start,end:n.target_end});let t=R(n.target_end);t>=a&&(a=Q(t,1));continue}let t=e.filter(t=>n.idea_ids.includes(t.id)),s=0;for(let e of t)s+=N[e.effort]||3;let r=Math.max(1,Math.ceil(s/4)),o=n.target_start||z(a),d=n.target_start?R(n.target_start):new Date(a),l=n.target_end?R(n.target_end):Q(d,r),c=n.target_end||z(l);i.set(n.id,{start:o,end:c}),a=Q(l,1)}}return i}function z(t){let e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${i}`}let C={repos:[],workspace_dir:"",schedules:{quick:{focus:["recent_changes","todos","errors","fixme"],max_ideas:5},deep:{focus:["architecture","tech_debt","security","patterns","dependencies"],max_ideas:15},metrics:{focus:["funnels","dropoffs","conversions","performance"],max_ideas:10},seo:{focus:["blog_performance","technical_seo","content_gaps","backlinks"],max_ideas:8}}};async function P(){return u(l("config.json"),C)}async function V(t){await p(l("config.json"),t)}async function W(){try{await i.promises.access(l("config.json"))}catch{await p(l("config.json"),C)}}async function tt(){await c(),await W();try{await i.promises.access(l("ideas.json"))}catch{await p(l("ideas.json"),{ideas:[]})}try{await i.promises.access(l("sessions.json"))}catch{await p(l("sessions.json"),{sessions:[]})}try{await i.promises.access(l("implementations.json"))}catch{await p(l("implementations.json"),{implementations:[]})}try{await i.promises.access(l("goals.json"))}catch{await p(l("goals.json"),{goals:[]})}try{await i.promises.access(l("hypotheses.json"))}catch{await p(l("hypotheses.json"),{hypotheses:[]})}try{await i.promises.access(l("roadmap.json"))}catch{await p(l("roadmap.json"),{epics:[]})}try{await i.promises.access(l("investor-updates.json"))}catch{await p(l("investor-updates.json"),{updates:[]})}}async function te(){return(await u(l("investor-updates.json"),{updates:[]})).updates.sort((t,e)=>e.period_end.localeCompare(t.period_end))}async function ta(t){return(await te()).find(e=>e.id===t)||null}async function ti(t,e){let a=await u(l("investor-updates.json"),{updates:[]}),i=a.updates.findIndex(e=>e.id===t);return -1===i?null:(a.updates[i].status=e,await p(l("investor-updates.json"),a),a.updates[i])}},2114:(t,e,a)=>{a.d(e,{Lu:()=>n,pG:()=>i});let i={product:"bg-blue-100 text-blue-800",ux_design:"bg-purple-100 text-purple-800",growth:"bg-green-100 text-green-800",performance:"bg-orange-100 text-orange-800",tech_debt:"bg-yellow-100 text-yellow-800",security:"bg-red-100 text-red-800",infrastructure:"bg-gray-100 text-gray-800",content:"bg-pink-100 text-pink-800",analytics:"bg-cyan-100 text-cyan-800",integration:"bg-indigo-100 text-indigo-800"},n={status:"pending",first_evaluated_at:null,last_evaluated_at:null,evaluation_count:0,next_evaluation_after:null,summary:null,metric_evaluations:[],confidence:null,follow_up_idea_ids:[],requires_human_review:!1,human_review_reason:null,kpi_snapshot_at_ship:[]}}};
@@ -1 +0,0 @@
1
- exports.id=995,exports.ids=[995],exports.modules={7010:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},5698:()=>{},2881:(e,t,r)=>{"use strict";r.d(t,{Z:()=>d});var a=r(7577);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=(...e)=>e.filter((e,t,r)=>!!e&&r.indexOf(e)===t).join(" ");var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,a.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:n="",children:d,iconNode:o,...c},h)=>(0,a.createElement)("svg",{ref:h,...l,width:t,height:t,stroke:e,strokeWidth:s?24*Number(r)/Number(t):r,className:i("lucide",n),...c},[...o.map(([e,t])=>(0,a.createElement)(e,t)),...Array.isArray(d)?d:[d]])),d=(e,t)=>{let r=(0,a.forwardRef)(({className:r,...l},d)=>(0,a.createElement)(n,{ref:d,iconNode:t,className:i(`lucide-${s(e)}`,r),...l}));return r.displayName=`${e}`,r}},732:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(2881).Z)("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]])},8258:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(2881).Z)("FlaskConical",[["path",{d:"M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2",key:"pzvekw"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M7 16h10",key:"wp8him"}]])},9730:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(2881).Z)("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]])},1572:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(2881).Z)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]])},3468:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(2881).Z)("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]])},434:(e,t,r)=>{"use strict";r.d(t,{default:()=>s.a});var a=r(9404),s=r.n(a)},5047:(e,t,r)=>{"use strict";var a=r(7389);r.o(a,"usePathname")&&r.d(t,{usePathname:function(){return a.usePathname}}),r.o(a,"useRouter")&&r.d(t,{useRouter:function(){return a.useRouter}})},502:(e,t,r)=>{"use strict";r.d(t,{default:()=>v});var a=r(326),s=r(434),i=r(5047),l=r(2881);let n=(0,l.Z)("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),d=(0,l.Z)("Map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);var o=r(3468),c=r(8258),h=r(9730);let g=(0,l.Z)("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]),b=(0,l.Z)("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var u=r(732),x=r(1572),p=r(1135);let m=[{href:"/",label:"Dashboard",icon:a.jsx(n,{className:"w-5 h-5"})},{href:"/roadmap",label:"Roadmap",icon:a.jsx(d,{className:"w-5 h-5"})},{href:"/goals",label:"Goals",icon:a.jsx(o.Z,{className:"w-5 h-5"})},{href:"/hypotheses",label:"Hypotheses",icon:a.jsx(c.Z,{className:"w-5 h-5"})},{href:"/social",label:"Social",icon:a.jsx(h.Z,{className:"w-5 h-5"})},{href:"/sessions",label:"Sessions",icon:a.jsx(g,{className:"w-5 h-5"})},{href:"/settings",label:"Settings",icon:a.jsx(b,{className:"w-5 h-5"})}];function v({children:e}){let t=(0,i.usePathname)();return(0,a.jsxs)("div",{className:"min-h-screen flex",children:[(0,a.jsxs)("aside",{className:"w-64 bg-slate-900 text-white flex flex-col",children:[a.jsx("div",{className:"p-4 border-b border-slate-700",children:(0,a.jsxs)(s.default,{href:"/",className:"flex items-center gap-2",children:[a.jsx("div",{className:"w-10 h-10 bg-emerald-500 rounded-lg flex items-center justify-center",children:a.jsx(u.Z,{className:"w-6 h-6 text-white"})}),(0,a.jsxs)("div",{children:[a.jsx("h1",{className:"font-bold text-lg leading-tight",children:"Analyst"}),a.jsx("p",{className:"text-xs text-slate-400",children:process.env.NEXT_PUBLIC_PRODUCT_NAME||"Business"})]})]})}),a.jsx("nav",{className:"flex-1 p-4",children:a.jsx("ul",{className:"space-y-1",children:m.map(e=>{let r="/"===e.href?"/"===t:t.startsWith(e.href);return a.jsx("li",{children:(0,a.jsxs)(s.default,{href:e.href,className:(0,p.Z)("flex items-center gap-3 px-3 py-2 rounded-lg transition-colors",r?"bg-slate-800 text-white":"text-slate-400 hover:text-white hover:bg-slate-800"),children:[e.icon,a.jsx("span",{children:e.label})]})},e.href)})})}),a.jsx("div",{className:"p-4 border-t border-slate-700",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs text-slate-500",children:[a.jsx(x.Z,{className:"w-4 h-4"}),a.jsx("span",{children:"Powered by Claude"})]})})]}),a.jsx("main",{className:"flex-1 overflow-auto",children:e})]})}},9526:(e,t,r)=>{"use strict";r.d(t,{G:()=>n,GK:()=>N,Gs:()=>c,Hs:()=>a,PN:()=>u,PW:()=>M,Q_:()=>x,R$:()=>k,Vr:()=>h,Wb:()=>b,aR:()=>g,bi:()=>d,en:()=>f,i2:()=>y,kT:()=>p,l5:()=>m,lE:()=>w,lv:()=>l,pG:()=>s,rF:()=>o,tV:()=>v,tl:()=>j,xP:()=>_,yb:()=>i});let a={product:"Product",ux_design:"UX/Design",growth:"Growth",performance:"Performance",tech_debt:"Tech Debt",security:"Security",infrastructure:"Infrastructure",content:"Content",analytics:"Analytics",integration:"Integration"},s={product:"bg-blue-100 text-blue-800",ux_design:"bg-purple-100 text-purple-800",growth:"bg-green-100 text-green-800",performance:"bg-orange-100 text-orange-800",tech_debt:"bg-yellow-100 text-yellow-800",security:"bg-red-100 text-red-800",infrastructure:"bg-gray-100 text-gray-800",content:"bg-pink-100 text-pink-800",analytics:"bg-cyan-100 text-cyan-800",integration:"bg-indigo-100 text-indigo-800"},i={inbox:"Inbox",under_review:"Under Review",approved:"Approved",in_progress:"In Progress",testing:"Testing",shipped:"Shipped",deferred:"Deferred",rejected:"Rejected",rolled_back:"Rolled Back"},l={inbox:"bg-amber-500",under_review:"bg-blue-500",approved:"bg-emerald-500",in_progress:"bg-violet-500",testing:"bg-cyan-500",shipped:"bg-green-500",deferred:"bg-gray-500",rejected:"bg-red-500",rolled_back:"bg-orange-500"},n=["inbox","under_review","approved","in_progress","testing","shipped"],d={xs:"XS",s:"S",m:"M",l:"L",xl:"XL"},o={critical:"Critical",high:"High",medium:"Medium",low:"Low"},c={critical:"bg-red-100 text-red-800 border-red-300",high:"bg-orange-100 text-orange-800 border-orange-300",medium:"bg-yellow-100 text-yellow-800 border-yellow-300",low:"bg-gray-100 text-gray-800 border-gray-300"},h={codebase_analysis:"Codebase Analysis",metrics_review:"Metrics Review",market_research:"Market Research",seo_audit:"SEO Audit",manual:"Manual"},g={pending:"bg-slate-100 text-slate-700",validated:"bg-emerald-100 text-emerald-800",needs_investigation:"bg-amber-100 text-amber-800",inconclusive:"bg-slate-100 text-slate-600",invalidated:"bg-red-100 text-red-800"},b={pending:"Pending",validated:"Validated",needs_investigation:"Needs Investigation",inconclusive:"Inconclusive",invalidated:"Invalidated"},u={ship:"Ship",update:"Update",milestone:"Milestone",digest:"Digest",manual:"Manual",thread:"Thread",insight:"Insight"},x={ship:"bg-green-100 text-green-800",update:"bg-blue-100 text-blue-800",milestone:"bg-amber-100 text-amber-800",digest:"bg-purple-100 text-purple-800",manual:"bg-slate-100 text-slate-800",thread:"bg-indigo-100 text-indigo-800",insight:"bg-cyan-100 text-cyan-800"},p={acquisition:"Acquisition",activation:"Activation",retention:"Retention",revenue:"Revenue",referral:"Referral"},m={acquisition:"bg-blue-100 text-blue-800",activation:"bg-emerald-100 text-emerald-800",retention:"bg-purple-100 text-purple-800",revenue:"bg-amber-100 text-amber-800",referral:"bg-pink-100 text-pink-800"},v={on_track:"On Track",at_risk:"At Risk",behind:"Behind",achieved:"Achieved"},y={on_track:"bg-emerald-100 text-emerald-800 border-emerald-300",at_risk:"bg-amber-100 text-amber-800 border-amber-300",behind:"bg-red-100 text-red-800 border-red-300",achieved:"bg-blue-100 text-blue-800 border-blue-300"},f={manual:"Manual",rest_api:"REST API",posthog:"PostHog",firestore:"Firestore",stripe:"Stripe",whatsapp:"WhatsApp"},k={stated:"Stated",testing:"Testing",validated:"Validated",invalidated:"Invalidated",deferred:"Deferred"},w={stated:"bg-slate-100 text-slate-800 border-slate-300",testing:"bg-amber-100 text-amber-800 border-amber-300",validated:"bg-emerald-100 text-emerald-800 border-emerald-300",invalidated:"bg-red-100 text-red-800 border-red-300",deferred:"bg-slate-100 text-slate-500 border-slate-200"},M={acquisition:"Acquisition",engagement:"Engagement",conversion:"Conversion",monetization:"Monetization"},j={acquisition:"bg-blue-100 text-blue-800",engagement:"bg-purple-100 text-purple-800",conversion:"bg-amber-100 text-amber-800",monetization:"bg-emerald-100 text-emerald-800"},N={planned:"Planned",active:"Active",completed:"Completed",paused:"Paused"},_={planned:"bg-slate-100 text-slate-700 border-slate-300",active:"bg-blue-100 text-blue-800 border-blue-300",completed:"bg-emerald-100 text-emerald-800 border-emerald-300",paused:"bg-amber-100 text-amber-800 border-amber-300"}},2029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i,metadata:()=>s});var a=r(9510);r(5023);let s={title:process.env.NEXT_PUBLIC_PRODUCT_NAME?`${process.env.NEXT_PUBLIC_PRODUCT_NAME} Analyst`:"AI Product Manager",description:"AI Product Manager - Autonomous improvement proposals"};function i({children:e}){return a.jsx("html",{lang:"en",children:a.jsx("body",{className:"min-h-screen bg-slate-50",children:e})})}},5023:()=>{},1135:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=function(){for(var e,t,r=0,a="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=function e(t){var r,a,s="";if("string"==typeof t||"number"==typeof t)s+=t;else if("object"==typeof t){if(Array.isArray(t)){var i=t.length;for(r=0;r<i;r++)t[r]&&(a=e(t[r]))&&(s&&(s+=" "),s+=a)}else for(a in t)t[a]&&(s&&(s+=" "),s+=a)}return s}(e))&&(a&&(a+=" "),a+=t);return a}}};