@tomako/tools-runtime 0.1.0

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 (531) hide show
  1. package/README.md +12 -0
  2. package/package.json +629 -0
  3. package/src/assets/icons/brands/social/bluesky-icon.tsx +9 -0
  4. package/src/assets/icons/brands/social/facebook-icon.tsx +9 -0
  5. package/src/assets/icons/brands/social/index.ts +8 -0
  6. package/src/assets/icons/brands/social/instagram-icon.tsx +9 -0
  7. package/src/assets/icons/brands/social/linkedin-icon.tsx +9 -0
  8. package/src/assets/icons/brands/social/threads-icon.tsx +9 -0
  9. package/src/assets/icons/brands/social/tiktok-icon.tsx +10 -0
  10. package/src/assets/icons/brands/social/x-icon.tsx +9 -0
  11. package/src/assets/icons/brands/social/youtube-icon.tsx +9 -0
  12. package/src/assets/icons/social-profile/facebook-icon.tsx +12 -0
  13. package/src/assets/icons/social-profile/index.ts +29 -0
  14. package/src/assets/icons/social-profile/instagram-icon.tsx +18 -0
  15. package/src/assets/icons/social-profile/linkedin-icon.tsx +12 -0
  16. package/src/assets/icons/social-profile/tiktok-icon.tsx +12 -0
  17. package/src/assets/icons/social-profile/x-icon.tsx +13 -0
  18. package/src/assets/icons/social-profile/youtube-icon.tsx +12 -0
  19. package/src/components/tools/engine/form-builder.tsx +219 -0
  20. package/src/components/tools/engine/package-widget-loader.tsx +38 -0
  21. package/src/components/tools/engine/package-widget-runtime.tsx +409 -0
  22. package/src/components/tools/engine/package-widget.tsx +77 -0
  23. package/src/components/tools/engine/result-view.tsx +596 -0
  24. package/src/components/tools/engine/use-legacy-llm-task.ts +64 -0
  25. package/src/components/tools/engine/use-tool-task.ts +195 -0
  26. package/src/components/tools/market-forecast-report.tsx +1150 -0
  27. package/src/components/tools/registry.ts +13 -0
  28. package/src/components/tools/workspace/index.ts +39 -0
  29. package/src/components/tools/workspace/tool-action-bar.tsx +99 -0
  30. package/src/components/tools/workspace/tool-empty-panel.tsx +32 -0
  31. package/src/components/tools/workspace/tool-error-panel.tsx +40 -0
  32. package/src/components/tools/workspace/tool-field.tsx +124 -0
  33. package/src/components/tools/workspace/tool-file-upload.tsx +112 -0
  34. package/src/components/tools/workspace/tool-form-section.tsx +21 -0
  35. package/src/components/tools/workspace/tool-form-shell.tsx +36 -0
  36. package/src/components/tools/workspace/tool-loading-panel.tsx +269 -0
  37. package/src/components/tools/workspace/tool-option-row.tsx +97 -0
  38. package/src/components/tools/workspace/tool-preview-panel.tsx +31 -0
  39. package/src/components/tools/workspace/tool-result-actions.tsx +67 -0
  40. package/src/components/tools/workspace/tool-result-file-actions.ts +31 -0
  41. package/src/components/tools/workspace/tool-result-header.tsx +39 -0
  42. package/src/components/tools/workspace/tool-status.tsx +13 -0
  43. package/src/components/tools/workspace/tool-workspace-layout.tsx +226 -0
  44. package/src/constants/LKS.ts +29 -0
  45. package/src/constants/related-tools.ts +18 -0
  46. package/src/constants/social-profile-kit.ts +284 -0
  47. package/src/constants/tool-assets.ts +7 -0
  48. package/src/env.d.ts +3 -0
  49. package/src/features/tools/_templates/standard-tool.container.tsx +90 -0
  50. package/src/features/tools/app-icon-resizer/app-icon-resizer.container.tsx +11 -0
  51. package/src/features/tools/app-icon-resizer/app-icon-resizer.spec.ts +15 -0
  52. package/src/features/tools/app-icon-resizer/widget/app-icon-resizer.tsx +444 -0
  53. package/src/features/tools/app-icon-resizer/widget/constants.ts +19 -0
  54. package/src/features/tools/app-icon-resizer/widget/helpers.ts +314 -0
  55. package/src/features/tools/app-icon-resizer/widget/index.ts +7 -0
  56. package/src/features/tools/app-icon-resizer/widget/platform-icons.tsx +59 -0
  57. package/src/features/tools/app-icon-resizer/widget/preview-dialogs.tsx +139 -0
  58. package/src/features/tools/app-icon-resizer/widget/result-shell.tsx +165 -0
  59. package/src/features/tools/app-icon-resizer/widget/types.ts +36 -0
  60. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.container.tsx +108 -0
  61. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.spec.ts +14 -0
  62. package/src/features/tools/app-store-screenshot-generator/config.ts +3 -0
  63. package/src/features/tools/app-store-screenshot-generator/widget/app-store-screenshot-generator.tsx +1250 -0
  64. package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.ts +76 -0
  65. package/src/features/tools/app-store-screenshot-generator/widget/constants.ts +43 -0
  66. package/src/features/tools/app-store-screenshot-generator/widget/form-controls.tsx +214 -0
  67. package/src/features/tools/app-store-screenshot-generator/widget/generation.ts +528 -0
  68. package/src/features/tools/app-store-screenshot-generator/widget/index.ts +7 -0
  69. package/src/features/tools/app-store-screenshot-generator/widget/input-media.ts +175 -0
  70. package/src/features/tools/app-store-screenshot-generator/widget/types.ts +60 -0
  71. package/src/features/tools/app-store-screenshot-generator/widget/zip.ts +119 -0
  72. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.container.tsx +135 -0
  73. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.spec.ts +15 -0
  74. package/src/features/tools/build-in-public-story-generator/widget/build-in-public-story-generator.tsx +314 -0
  75. package/src/features/tools/build-in-public-story-generator/widget/constants.ts +3 -0
  76. package/src/features/tools/build-in-public-story-generator/widget/helpers.ts +25 -0
  77. package/src/features/tools/build-in-public-story-generator/widget/index.ts +7 -0
  78. package/src/features/tools/build-in-public-story-generator/widget/preview-panels.tsx +58 -0
  79. package/src/features/tools/build-in-public-story-generator/widget/result-shell.tsx +164 -0
  80. package/src/features/tools/build-in-public-story-generator/widget/types.ts +6 -0
  81. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.container.tsx +30 -0
  82. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.spec.ts +15 -0
  83. package/src/features/tools/cold-start-channel-selector/widget/cold-start-channel-selector.tsx +417 -0
  84. package/src/features/tools/cold-start-channel-selector/widget/constants.ts +46 -0
  85. package/src/features/tools/cold-start-channel-selector/widget/form-controls.tsx +41 -0
  86. package/src/features/tools/cold-start-channel-selector/widget/helpers.ts +75 -0
  87. package/src/features/tools/cold-start-channel-selector/widget/index.ts +7 -0
  88. package/src/features/tools/cold-start-channel-selector/widget/preview-panels.tsx +250 -0
  89. package/src/features/tools/cold-start-channel-selector/widget/result-shell.tsx +199 -0
  90. package/src/features/tools/cold-start-channel-selector/widget/types.ts +21 -0
  91. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.container.tsx +102 -0
  92. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.spec.ts +14 -0
  93. package/src/features/tools/commercial-bp-generator/widget/commercial-bp-generator.tsx +676 -0
  94. package/src/features/tools/commercial-bp-generator/widget/constants.ts +32 -0
  95. package/src/features/tools/commercial-bp-generator/widget/helpers.ts +147 -0
  96. package/src/features/tools/commercial-bp-generator/widget/index.ts +7 -0
  97. package/src/features/tools/commercial-bp-generator/widget/result-shell.tsx +271 -0
  98. package/src/features/tools/commercial-bp-generator/widget/style-option.tsx +54 -0
  99. package/src/features/tools/commercial-bp-generator/widget/types.ts +33 -0
  100. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.container.tsx +126 -0
  101. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.spec.ts +15 -0
  102. package/src/features/tools/community-feedback-inbox/widget/community-feedback-inbox.tsx +271 -0
  103. package/src/features/tools/community-feedback-inbox/widget/constants.ts +3 -0
  104. package/src/features/tools/community-feedback-inbox/widget/helpers.ts +28 -0
  105. package/src/features/tools/community-feedback-inbox/widget/index.ts +7 -0
  106. package/src/features/tools/community-feedback-inbox/widget/preview-panels.tsx +92 -0
  107. package/src/features/tools/community-feedback-inbox/widget/result-shell.tsx +266 -0
  108. package/src/features/tools/community-feedback-inbox/widget/types.ts +6 -0
  109. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.container.tsx +124 -0
  110. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.spec.ts +15 -0
  111. package/src/features/tools/community-pain-point-extractor/widget/community-pain-point-extractor.tsx +404 -0
  112. package/src/features/tools/community-pain-point-extractor/widget/constants.ts +41 -0
  113. package/src/features/tools/community-pain-point-extractor/widget/helpers.ts +76 -0
  114. package/src/features/tools/community-pain-point-extractor/widget/index.ts +8 -0
  115. package/src/features/tools/community-pain-point-extractor/widget/progress-panels.tsx +251 -0
  116. package/src/features/tools/community-pain-point-extractor/widget/result-shell.tsx +478 -0
  117. package/src/features/tools/community-pain-point-extractor/widget/types.ts +33 -0
  118. package/src/features/tools/community-post-risk-checker/community-post-risk-checker.package.ts +792 -0
  119. package/src/features/tools/competitor-analysis/competitor-analysis.container.tsx +136 -0
  120. package/src/features/tools/competitor-analysis/competitor-analysis.spec.ts +15 -0
  121. package/src/features/tools/competitor-analysis/widget/competitor-analysis.tsx +241 -0
  122. package/src/features/tools/competitor-analysis/widget/constants.ts +9 -0
  123. package/src/features/tools/competitor-analysis/widget/index.ts +7 -0
  124. package/src/features/tools/competitor-analysis/widget/preview-panels.tsx +60 -0
  125. package/src/features/tools/competitor-analysis/widget/result-shell.tsx +418 -0
  126. package/src/features/tools/competitor-analysis/widget/types.ts +13 -0
  127. package/src/features/tools/disclaimer-generator/disclaimer-generator.package.ts +339 -0
  128. package/src/features/tools/email-template-generator/email-template-generator.container.tsx +224 -0
  129. package/src/features/tools/email-template-generator/email-template-generator.spec.ts +14 -0
  130. package/src/features/tools/email-template-generator/widget/email-template-generator.tsx +358 -0
  131. package/src/features/tools/email-template-generator/widget/helpers.ts +39 -0
  132. package/src/features/tools/email-template-generator/widget/index.ts +7 -0
  133. package/src/features/tools/email-template-generator/widget/preview-panel.tsx +311 -0
  134. package/src/features/tools/email-template-generator/widget/result-text-block.tsx +7 -0
  135. package/src/features/tools/email-template-generator/widget/types.ts +24 -0
  136. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.container.tsx +75 -0
  137. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.spec.ts +15 -0
  138. package/src/features/tools/gtm-readiness-checklist/widget/gtm-readiness-checklist.tsx +122 -0
  139. package/src/features/tools/gtm-readiness-checklist/widget/index.ts +7 -0
  140. package/src/features/tools/investor-matching-planner/investor-matching-planner.package.ts +869 -0
  141. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.container.tsx +151 -0
  142. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.spec.ts +14 -0
  143. package/src/features/tools/koko-codex-assistant/widget/index.ts +7 -0
  144. package/src/features/tools/koko-codex-assistant/widget/koko-codex-assistant-download.tsx +192 -0
  145. package/src/features/tools/logo-generator/logo-generator.container.tsx +112 -0
  146. package/src/features/tools/logo-generator/logo-generator.spec.ts +15 -0
  147. package/src/features/tools/logo-generator/widget/index.ts +7 -0
  148. package/src/features/tools/logo-generator/widget/logo-generator.tsx +1244 -0
  149. package/src/features/tools/market-forecast-report/market-forecast-report.container.tsx +73 -0
  150. package/src/features/tools/market-forecast-report/market-forecast-report.spec.ts +15 -0
  151. package/src/features/tools/million-user-growth-test/million-user-growth-test.container.tsx +123 -0
  152. package/src/features/tools/million-user-growth-test/million-user-growth-test.spec.ts +14 -0
  153. package/src/features/tools/million-user-growth-test/widget/index.ts +7 -0
  154. package/src/features/tools/million-user-growth-test/widget/million-user-growth-test.tsx +433 -0
  155. package/src/features/tools/module-loader.ts +107 -0
  156. package/src/features/tools/og-image-generator/og-image-generator.container.tsx +86 -0
  157. package/src/features/tools/og-image-generator/og-image-generator.spec.ts +14 -0
  158. package/src/features/tools/og-image-generator/widget/constants.ts +38 -0
  159. package/src/features/tools/og-image-generator/widget/form-fields.tsx +240 -0
  160. package/src/features/tools/og-image-generator/widget/index.ts +7 -0
  161. package/src/features/tools/og-image-generator/widget/og-image-generator.tsx +742 -0
  162. package/src/features/tools/og-image-generator/widget/preview-panel.tsx +305 -0
  163. package/src/features/tools/og-image-generator/widget/types.ts +1 -0
  164. package/src/features/tools/package/direct-models.ts +20 -0
  165. package/src/features/tools/package/form.ts +38 -0
  166. package/src/features/tools/package/l10n.ts +22 -0
  167. package/src/features/tools/package/package-container.tsx +285 -0
  168. package/src/features/tools/package/package-loaders.ts +22 -0
  169. package/src/features/tools/package/package-registry.ts +36 -0
  170. package/src/features/tools/package/result-markdown.ts +142 -0
  171. package/src/features/tools/package/schema.ts +379 -0
  172. package/src/features/tools/package/to-tool-module.ts +20 -0
  173. package/src/features/tools/package/to-tool-spec.ts +52 -0
  174. package/src/features/tools/package/types.ts +381 -0
  175. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.container.tsx +175 -0
  176. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.spec.ts +14 -0
  177. package/src/features/tools/pitch-deck-generator/pitch-deck-library-data.ts +476 -0
  178. package/src/features/tools/pitch-deck-generator/pitch-deck-library.tsx +159 -0
  179. package/src/features/tools/pitch-deck-generator/widget/ceremony-line.tsx +27 -0
  180. package/src/features/tools/pitch-deck-generator/widget/constants.ts +27 -0
  181. package/src/features/tools/pitch-deck-generator/widget/index.ts +7 -0
  182. package/src/features/tools/pitch-deck-generator/widget/pitch-deck-generator.tsx +763 -0
  183. package/src/features/tools/pitch-deck-generator/widget/result-helpers.ts +102 -0
  184. package/src/features/tools/pitch-deck-generator/widget/result-shell.tsx +263 -0
  185. package/src/features/tools/pitch-deck-generator/widget/slide-frame.tsx +106 -0
  186. package/src/features/tools/pitch-deck-generator/widget/slide-lightbox.tsx +149 -0
  187. package/src/features/tools/pitch-deck-generator/widget/style-option.tsx +54 -0
  188. package/src/features/tools/pitch-deck-generator/widget/types.ts +44 -0
  189. package/src/features/tools/product-agreement-generator/product-agreement-generator.container.tsx +137 -0
  190. package/src/features/tools/product-agreement-generator/product-agreement-generator.spec.ts +14 -0
  191. package/src/features/tools/product-agreement-generator/widget/constants.ts +27 -0
  192. package/src/features/tools/product-agreement-generator/widget/form-controls.tsx +218 -0
  193. package/src/features/tools/product-agreement-generator/widget/helpers.ts +68 -0
  194. package/src/features/tools/product-agreement-generator/widget/index.ts +7 -0
  195. package/src/features/tools/product-agreement-generator/widget/product-agreement-generator.tsx +671 -0
  196. package/src/features/tools/product-agreement-generator/widget/result-shell.tsx +473 -0
  197. package/src/features/tools/product-agreement-generator/widget/types.ts +89 -0
  198. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.container.tsx +122 -0
  199. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.spec.ts +15 -0
  200. package/src/features/tools/product-hunt-launch-planner/widget/constants.ts +5 -0
  201. package/src/features/tools/product-hunt-launch-planner/widget/helpers.ts +44 -0
  202. package/src/features/tools/product-hunt-launch-planner/widget/index.ts +7 -0
  203. package/src/features/tools/product-hunt-launch-planner/widget/preview-panel.tsx +143 -0
  204. package/src/features/tools/product-hunt-launch-planner/widget/product-hunt-launch-planner.tsx +504 -0
  205. package/src/features/tools/product-hunt-launch-planner/widget/result-shell.tsx +176 -0
  206. package/src/features/tools/product-hunt-launch-planner/widget/types.ts +20 -0
  207. package/src/features/tools/product-name-generator/product-name-generator.container.tsx +14 -0
  208. package/src/features/tools/product-name-generator/product-name-generator.spec.ts +15 -0
  209. package/src/features/tools/product-name-generator/widget/candidate-card.tsx +273 -0
  210. package/src/features/tools/product-name-generator/widget/constants.ts +21 -0
  211. package/src/features/tools/product-name-generator/widget/form-controls.tsx +136 -0
  212. package/src/features/tools/product-name-generator/widget/helpers.ts +41 -0
  213. package/src/features/tools/product-name-generator/widget/index.ts +7 -0
  214. package/src/features/tools/product-name-generator/widget/product-name-generator.tsx +776 -0
  215. package/src/features/tools/product-name-generator/widget/types.ts +36 -0
  216. package/src/features/tools/product-positioning-analyzer/product-positioning-analyzer.package.ts +801 -0
  217. package/src/features/tools/product-poster-generator/product-poster-generator.container.tsx +14 -0
  218. package/src/features/tools/product-poster-generator/product-poster-generator.spec.ts +15 -0
  219. package/src/features/tools/product-poster-generator/widget/constants.ts +125 -0
  220. package/src/features/tools/product-poster-generator/widget/form-controls.tsx +204 -0
  221. package/src/features/tools/product-poster-generator/widget/helpers.ts +155 -0
  222. package/src/features/tools/product-poster-generator/widget/index.ts +7 -0
  223. package/src/features/tools/product-poster-generator/widget/product-poster-generator.tsx +663 -0
  224. package/src/features/tools/product-poster-generator/widget/result-shell.tsx +12 -0
  225. package/src/features/tools/product-poster-generator/widget/types.ts +83 -0
  226. package/src/features/tools/product-ui-generator/product-ui-generator.container.tsx +116 -0
  227. package/src/features/tools/product-ui-generator/product-ui-generator.spec.ts +14 -0
  228. package/src/features/tools/product-ui-generator/widget/constants.ts +18 -0
  229. package/src/features/tools/product-ui-generator/widget/helpers.ts +11 -0
  230. package/src/features/tools/product-ui-generator/widget/index.ts +7 -0
  231. package/src/features/tools/product-ui-generator/widget/preview-panels.tsx +73 -0
  232. package/src/features/tools/product-ui-generator/widget/product-ui-generator.tsx +304 -0
  233. package/src/features/tools/product-ui-generator/widget/result-shell.tsx +118 -0
  234. package/src/features/tools/product-ui-generator/widget/types.ts +9 -0
  235. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.container.tsx +113 -0
  236. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.spec.ts +15 -0
  237. package/src/features/tools/reddit-pain-point-finder/widget/constants.ts +5 -0
  238. package/src/features/tools/reddit-pain-point-finder/widget/index.ts +7 -0
  239. package/src/features/tools/reddit-pain-point-finder/widget/preview-panels.tsx +73 -0
  240. package/src/features/tools/reddit-pain-point-finder/widget/reddit-pain-point-finder.tsx +281 -0
  241. package/src/features/tools/reddit-pain-point-finder/widget/result-shell.tsx +203 -0
  242. package/src/features/tools/reddit-pain-point-finder/widget/types.ts +15 -0
  243. package/src/features/tools/registry.ts +288 -0
  244. package/src/features/tools/runtime-registry.ts +186 -0
  245. package/src/features/tools/shared/create-guide-stack-container.tsx +176 -0
  246. package/src/features/tools/shared/create-standard-landing-container.tsx +163 -0
  247. package/src/features/tools/shared/tool-content-sections.tsx +659 -0
  248. package/src/features/tools/shared/tool-cta.tsx +66 -0
  249. package/src/features/tools/shared/tool-draft-view.tsx +53 -0
  250. package/src/features/tools/shared/tool-guide-section.tsx +191 -0
  251. package/src/features/tools/shared/tool-handoff.tsx +38 -0
  252. package/src/features/tools/shared/tool-mcp-badge.tsx +23 -0
  253. package/src/features/tools/shared/tool-message-translator.ts +37 -0
  254. package/src/features/tools/shared/tool-page-shell.tsx +348 -0
  255. package/src/features/tools/shared/tool-standard-generation-steps.tsx +52 -0
  256. package/src/features/tools/shared/tool-standard-landing-sections.tsx +447 -0
  257. package/src/features/tools/shared/tool-ui-registry.ts +237 -0
  258. package/src/features/tools/shared/tool-widget-slot.tsx +29 -0
  259. package/src/features/tools/slogan-generator/slogan-generator.package.ts +641 -0
  260. package/src/features/tools/social-listening-research-report/social-listening-research-report.container.tsx +124 -0
  261. package/src/features/tools/social-listening-research-report/social-listening-research-report.spec.ts +15 -0
  262. package/src/features/tools/social-listening-research-report/widget/constants.ts +4 -0
  263. package/src/features/tools/social-listening-research-report/widget/index.ts +7 -0
  264. package/src/features/tools/social-listening-research-report/widget/preview-panels.tsx +73 -0
  265. package/src/features/tools/social-listening-research-report/widget/result-shell.tsx +216 -0
  266. package/src/features/tools/social-listening-research-report/widget/social-listening-research-report.tsx +303 -0
  267. package/src/features/tools/social-listening-research-report/widget/types.ts +15 -0
  268. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.container.tsx +123 -0
  269. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.spec.ts +15 -0
  270. package/src/features/tools/social-platform-asset-adapter/widget/constants.ts +43 -0
  271. package/src/features/tools/social-platform-asset-adapter/widget/helpers.ts +249 -0
  272. package/src/features/tools/social-platform-asset-adapter/widget/index.ts +7 -0
  273. package/src/features/tools/social-platform-asset-adapter/widget/result-shell.tsx +350 -0
  274. package/src/features/tools/social-platform-asset-adapter/widget/section-heading.tsx +18 -0
  275. package/src/features/tools/social-platform-asset-adapter/widget/social-platform-asset-adapter.tsx +641 -0
  276. package/src/features/tools/social-platform-asset-adapter/widget/types.ts +40 -0
  277. package/src/features/tools/social-profile-kit/social-profile-kit.container.tsx +177 -0
  278. package/src/features/tools/social-profile-kit/social-profile-kit.spec.ts +15 -0
  279. package/src/features/tools/social-profile-kit/widget/context-editor.tsx +171 -0
  280. package/src/features/tools/social-profile-kit/widget/generation-runtime.ts +281 -0
  281. package/src/features/tools/social-profile-kit/widget/index.ts +7 -0
  282. package/src/features/tools/social-profile-kit/widget/input-panel.tsx +294 -0
  283. package/src/features/tools/social-profile-kit/widget/platform-dock.tsx +115 -0
  284. package/src/features/tools/social-profile-kit/widget/profile-canvas.tsx +318 -0
  285. package/src/features/tools/social-profile-kit/widget/profile-preview/bluesky-preview.tsx +188 -0
  286. package/src/features/tools/social-profile-kit/widget/profile-preview/facebook-preview.tsx +168 -0
  287. package/src/features/tools/social-profile-kit/widget/profile-preview/index.ts +1 -0
  288. package/src/features/tools/social-profile-kit/widget/profile-preview/instagram-preview.tsx +278 -0
  289. package/src/features/tools/social-profile-kit/widget/profile-preview/linkedin-preview.tsx +358 -0
  290. package/src/features/tools/social-profile-kit/widget/profile-preview/profile-preview.tsx +348 -0
  291. package/src/features/tools/social-profile-kit/widget/profile-preview/shared.tsx +391 -0
  292. package/src/features/tools/social-profile-kit/widget/profile-preview/threads-preview.tsx +148 -0
  293. package/src/features/tools/social-profile-kit/widget/profile-preview/tiktok-preview.tsx +319 -0
  294. package/src/features/tools/social-profile-kit/widget/profile-preview/x-preview.tsx +341 -0
  295. package/src/features/tools/social-profile-kit/widget/profile-preview/youtube-preview.tsx +297 -0
  296. package/src/features/tools/social-profile-kit/widget/social-profile-kit-generator.tsx +1059 -0
  297. package/src/features/tools/social-profile-kit/widget/types.ts +104 -0
  298. package/src/features/tools/spec-registry.ts +158 -0
  299. package/src/features/tools/startup-idea-research/startup-idea-research.container.tsx +111 -0
  300. package/src/features/tools/startup-idea-research/startup-idea-research.spec.ts +15 -0
  301. package/src/features/tools/startup-idea-research/widget/constants.ts +11 -0
  302. package/src/features/tools/startup-idea-research/widget/index.ts +7 -0
  303. package/src/features/tools/startup-idea-research/widget/preview-panels.tsx +67 -0
  304. package/src/features/tools/startup-idea-research/widget/result-shell.tsx +323 -0
  305. package/src/features/tools/startup-idea-research/widget/startup-idea-research.tsx +272 -0
  306. package/src/features/tools/startup-idea-research/widget/types.ts +21 -0
  307. package/src/features/tools/tarot-reading/tarot-reading.container.tsx +412 -0
  308. package/src/features/tools/tarot-reading/tarot-reading.spec.ts +15 -0
  309. package/src/features/tools/tarot-reading/widget/cards.tsx +152 -0
  310. package/src/features/tools/tarot-reading/widget/constants.ts +69 -0
  311. package/src/features/tools/tarot-reading/widget/deck-view.tsx +86 -0
  312. package/src/features/tools/tarot-reading/widget/deck.ts +86 -0
  313. package/src/features/tools/tarot-reading/widget/index.ts +7 -0
  314. package/src/features/tools/tarot-reading/widget/landing-view.tsx +209 -0
  315. package/src/features/tools/tarot-reading/widget/reading-copy.tsx +138 -0
  316. package/src/features/tools/tarot-reading/widget/reading-view.tsx +189 -0
  317. package/src/features/tools/tarot-reading/widget/reveal-view.tsx +50 -0
  318. package/src/features/tools/tarot-reading/widget/ritual-view.tsx +276 -0
  319. package/src/features/tools/tarot-reading/widget/tarot-reading.tsx +262 -0
  320. package/src/features/tools/tarot-reading/widget/types.ts +22 -0
  321. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.container.tsx +114 -0
  322. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.spec.ts +14 -0
  323. package/src/features/tools/twitter-gif-downloader/widget/index.ts +7 -0
  324. package/src/features/tools/twitter-gif-downloader/widget/twitter-gif-downloader.tsx +351 -0
  325. package/src/features/tools/types.ts +68 -0
  326. package/src/features/tools/user-interview-guide-generator/user-interview-guide-generator.package.ts +774 -0
  327. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.container.tsx +23 -0
  328. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.spec.ts +14 -0
  329. package/src/features/tools/user-interview-insight-report-generator/widget/constants.ts +8 -0
  330. package/src/features/tools/user-interview-insight-report-generator/widget/helpers.ts +4 -0
  331. package/src/features/tools/user-interview-insight-report-generator/widget/index.ts +7 -0
  332. package/src/features/tools/user-interview-insight-report-generator/widget/preview-panels.tsx +55 -0
  333. package/src/features/tools/user-interview-insight-report-generator/widget/result-shell.tsx +122 -0
  334. package/src/features/tools/user-interview-insight-report-generator/widget/types.ts +16 -0
  335. package/src/features/tools/user-interview-insight-report-generator/widget/user-interview-insight-report-generator.tsx +293 -0
  336. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.container.tsx +18 -0
  337. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.spec.ts +14 -0
  338. package/src/features/tools/user-interview-record-generator/widget/constants.ts +9 -0
  339. package/src/features/tools/user-interview-record-generator/widget/helpers.ts +4 -0
  340. package/src/features/tools/user-interview-record-generator/widget/index.ts +7 -0
  341. package/src/features/tools/user-interview-record-generator/widget/preview-panels.tsx +48 -0
  342. package/src/features/tools/user-interview-record-generator/widget/result-shell.tsx +128 -0
  343. package/src/features/tools/user-interview-record-generator/widget/types.ts +16 -0
  344. package/src/features/tools/user-interview-record-generator/widget/user-interview-record-generator.tsx +305 -0
  345. package/src/features/tools/utm-builder/utm-builder.package.ts +846 -0
  346. package/src/features/tools/widget-registry.ts +73 -0
  347. package/src/generated/mcp-tools-registry.json +17 -0
  348. package/src/host/client-proxy.test.ts +33 -0
  349. package/src/host/client.ts +678 -0
  350. package/src/host/server.ts +119 -0
  351. package/src/i18n/client.ts +11 -0
  352. package/src/i18n/locale-fallback.ts +38 -0
  353. package/src/i18n/locale.ts +18 -0
  354. package/src/i18n/messages/en/page/tools.ts +124 -0
  355. package/src/i18n/messages/en/tools/app-icon-resizer.ts +244 -0
  356. package/src/i18n/messages/en/tools/app-store-screenshot-generator.ts +145 -0
  357. package/src/i18n/messages/en/tools/build-in-public-story-generator.ts +229 -0
  358. package/src/i18n/messages/en/tools/cold-start-channel-selector.ts +423 -0
  359. package/src/i18n/messages/en/tools/commercial-bp-generator.ts +304 -0
  360. package/src/i18n/messages/en/tools/community-feedback-inbox.ts +218 -0
  361. package/src/i18n/messages/en/tools/community-pain-point-extractor.ts +230 -0
  362. package/src/i18n/messages/en/tools/community-post-risk-checker.ts +209 -0
  363. package/src/i18n/messages/en/tools/competitor-analysis.ts +197 -0
  364. package/src/i18n/messages/en/tools/email-template-generator.ts +302 -0
  365. package/src/i18n/messages/en/tools/engine.ts +69 -0
  366. package/src/i18n/messages/en/tools/gtm-readiness-checklist.ts +166 -0
  367. package/src/i18n/messages/en/tools/index.ts +73 -0
  368. package/src/i18n/messages/en/tools/koko-codex-assistant.ts +171 -0
  369. package/src/i18n/messages/en/tools/logo-generator.ts +173 -0
  370. package/src/i18n/messages/en/tools/market-forecast-report.ts +228 -0
  371. package/src/i18n/messages/en/tools/million-user-growth-test.ts +386 -0
  372. package/src/i18n/messages/en/tools/og-image-generator.ts +172 -0
  373. package/src/i18n/messages/en/tools/pitch-deck-generator.ts +358 -0
  374. package/src/i18n/messages/en/tools/product-agreement-generator.ts +411 -0
  375. package/src/i18n/messages/en/tools/product-hunt-launch-planner.ts +272 -0
  376. package/src/i18n/messages/en/tools/product-name-generator.ts +383 -0
  377. package/src/i18n/messages/en/tools/product-poster-generator.ts +294 -0
  378. package/src/i18n/messages/en/tools/product-ui-generator.ts +234 -0
  379. package/src/i18n/messages/en/tools/reddit-pain-point-finder.ts +163 -0
  380. package/src/i18n/messages/en/tools/shared.ts +24 -0
  381. package/src/i18n/messages/en/tools/social-listening-research-report.ts +185 -0
  382. package/src/i18n/messages/en/tools/social-media-profile-generator.ts +22 -0
  383. package/src/i18n/messages/en/tools/social-platform-asset-adapter.ts +287 -0
  384. package/src/i18n/messages/en/tools/social-profile-kit.ts +150 -0
  385. package/src/i18n/messages/en/tools/startup-idea-research.ts +170 -0
  386. package/src/i18n/messages/en/tools/tarot-reading.ts +230 -0
  387. package/src/i18n/messages/en/tools/twitter-gif-downloader.ts +145 -0
  388. package/src/i18n/messages/en/tools/user-interview-insight-report-generator.ts +242 -0
  389. package/src/i18n/messages/en/tools/user-interview-record-generator.ts +244 -0
  390. package/src/i18n/messages/en/tools-ui.ts +704 -0
  391. package/src/i18n/messages/zh/page/tools.ts +124 -0
  392. package/src/i18n/messages/zh/tools/app-icon-resizer.ts +242 -0
  393. package/src/i18n/messages/zh/tools/app-store-screenshot-generator.ts +145 -0
  394. package/src/i18n/messages/zh/tools/build-in-public-story-generator.ts +230 -0
  395. package/src/i18n/messages/zh/tools/cold-start-channel-selector.ts +422 -0
  396. package/src/i18n/messages/zh/tools/commercial-bp-generator.ts +302 -0
  397. package/src/i18n/messages/zh/tools/community-feedback-inbox.ts +217 -0
  398. package/src/i18n/messages/zh/tools/community-pain-point-extractor.ts +230 -0
  399. package/src/i18n/messages/zh/tools/community-post-risk-checker.ts +200 -0
  400. package/src/i18n/messages/zh/tools/competitor-analysis.ts +192 -0
  401. package/src/i18n/messages/zh/tools/email-template-generator.ts +302 -0
  402. package/src/i18n/messages/zh/tools/engine.ts +68 -0
  403. package/src/i18n/messages/zh/tools/gtm-readiness-checklist.ts +166 -0
  404. package/src/i18n/messages/zh/tools/index.ts +73 -0
  405. package/src/i18n/messages/zh/tools/koko-codex-assistant.ts +170 -0
  406. package/src/i18n/messages/zh/tools/logo-generator.ts +172 -0
  407. package/src/i18n/messages/zh/tools/market-forecast-report.ts +228 -0
  408. package/src/i18n/messages/zh/tools/million-user-growth-test.ts +385 -0
  409. package/src/i18n/messages/zh/tools/og-image-generator.ts +173 -0
  410. package/src/i18n/messages/zh/tools/pitch-deck-generator.ts +358 -0
  411. package/src/i18n/messages/zh/tools/product-agreement-generator.ts +401 -0
  412. package/src/i18n/messages/zh/tools/product-hunt-launch-planner.ts +267 -0
  413. package/src/i18n/messages/zh/tools/product-name-generator.ts +383 -0
  414. package/src/i18n/messages/zh/tools/product-poster-generator.ts +282 -0
  415. package/src/i18n/messages/zh/tools/product-ui-generator.ts +234 -0
  416. package/src/i18n/messages/zh/tools/reddit-pain-point-finder.ts +162 -0
  417. package/src/i18n/messages/zh/tools/shared.ts +24 -0
  418. package/src/i18n/messages/zh/tools/social-listening-research-report.ts +181 -0
  419. package/src/i18n/messages/zh/tools/social-media-profile-generator.ts +22 -0
  420. package/src/i18n/messages/zh/tools/social-platform-asset-adapter.ts +284 -0
  421. package/src/i18n/messages/zh/tools/social-profile-kit.ts +150 -0
  422. package/src/i18n/messages/zh/tools/startup-idea-research.ts +165 -0
  423. package/src/i18n/messages/zh/tools/tarot-reading.ts +228 -0
  424. package/src/i18n/messages/zh/tools/twitter-gif-downloader.ts +138 -0
  425. package/src/i18n/messages/zh/tools/user-interview-insight-report-generator.ts +224 -0
  426. package/src/i18n/messages/zh/tools/user-interview-record-generator.ts +226 -0
  427. package/src/i18n/messages/zh/tools-ui.ts +684 -0
  428. package/src/i18n/messages/zh-tw/page/tools.ts +115 -0
  429. package/src/i18n/messages/zh-tw/tools/app-icon-resizer.ts +242 -0
  430. package/src/i18n/messages/zh-tw/tools/app-store-screenshot-generator.ts +145 -0
  431. package/src/i18n/messages/zh-tw/tools/build-in-public-story-generator.ts +230 -0
  432. package/src/i18n/messages/zh-tw/tools/cold-start-channel-selector.ts +440 -0
  433. package/src/i18n/messages/zh-tw/tools/commercial-bp-generator.ts +302 -0
  434. package/src/i18n/messages/zh-tw/tools/community-feedback-inbox.ts +217 -0
  435. package/src/i18n/messages/zh-tw/tools/community-pain-point-extractor.ts +230 -0
  436. package/src/i18n/messages/zh-tw/tools/community-post-risk-checker.ts +200 -0
  437. package/src/i18n/messages/zh-tw/tools/competitor-analysis.ts +192 -0
  438. package/src/i18n/messages/zh-tw/tools/email-template-generator.ts +302 -0
  439. package/src/i18n/messages/zh-tw/tools/engine.ts +68 -0
  440. package/src/i18n/messages/zh-tw/tools/gtm-readiness-checklist.ts +166 -0
  441. package/src/i18n/messages/zh-tw/tools/index.ts +73 -0
  442. package/src/i18n/messages/zh-tw/tools/koko-codex-assistant.ts +170 -0
  443. package/src/i18n/messages/zh-tw/tools/logo-generator.ts +71 -0
  444. package/src/i18n/messages/zh-tw/tools/market-forecast-report.ts +228 -0
  445. package/src/i18n/messages/zh-tw/tools/million-user-growth-test.ts +385 -0
  446. package/src/i18n/messages/zh-tw/tools/og-image-generator.ts +173 -0
  447. package/src/i18n/messages/zh-tw/tools/pitch-deck-generator.ts +358 -0
  448. package/src/i18n/messages/zh-tw/tools/product-agreement-generator.ts +401 -0
  449. package/src/i18n/messages/zh-tw/tools/product-hunt-launch-planner.ts +267 -0
  450. package/src/i18n/messages/zh-tw/tools/product-name-generator.ts +383 -0
  451. package/src/i18n/messages/zh-tw/tools/product-poster-generator.ts +282 -0
  452. package/src/i18n/messages/zh-tw/tools/product-ui-generator.ts +234 -0
  453. package/src/i18n/messages/zh-tw/tools/reddit-pain-point-finder.ts +162 -0
  454. package/src/i18n/messages/zh-tw/tools/shared.ts +24 -0
  455. package/src/i18n/messages/zh-tw/tools/social-listening-research-report.ts +181 -0
  456. package/src/i18n/messages/zh-tw/tools/social-media-profile-generator.ts +22 -0
  457. package/src/i18n/messages/zh-tw/tools/social-platform-asset-adapter.ts +284 -0
  458. package/src/i18n/messages/zh-tw/tools/social-profile-kit.ts +150 -0
  459. package/src/i18n/messages/zh-tw/tools/startup-idea-research.ts +165 -0
  460. package/src/i18n/messages/zh-tw/tools/tarot-reading.ts +228 -0
  461. package/src/i18n/messages/zh-tw/tools/twitter-gif-downloader.ts +138 -0
  462. package/src/i18n/messages/zh-tw/tools/user-interview-insight-report-generator.ts +224 -0
  463. package/src/i18n/messages/zh-tw/tools/user-interview-record-generator.ts +226 -0
  464. package/src/i18n/messages/zh-tw/tools-ui.ts +525 -0
  465. package/src/index.ts +15 -0
  466. package/src/lib/activity-task-handoff.ts +404 -0
  467. package/src/lib/api/errors.ts +39 -0
  468. package/src/lib/app-origin.ts +30 -0
  469. package/src/lib/fact-claim-contract.ts +68 -0
  470. package/src/lib/fake-delay.ts +3 -0
  471. package/src/lib/file/download.ts +10 -0
  472. package/src/lib/routing/locale-paths.ts +27 -0
  473. package/src/lib/seo-meta.ts +3 -0
  474. package/src/lib/tools/app-icon-resizer-schema.ts +191 -0
  475. package/src/lib/tools/app-store-screenshot-generator-schema.ts +185 -0
  476. package/src/lib/tools/build-in-public-story-generator-schema.ts +67 -0
  477. package/src/lib/tools/build-in-public-story-generator.format.ts +507 -0
  478. package/src/lib/tools/cold-start-channel-selector-schema.ts +147 -0
  479. package/src/lib/tools/commercial-bp-generator-schema.ts +222 -0
  480. package/src/lib/tools/community-feedback-inbox-schema.ts +125 -0
  481. package/src/lib/tools/community-feedback-inbox.format.ts +764 -0
  482. package/src/lib/tools/community-pain-point-extractor-schema.ts +166 -0
  483. package/src/lib/tools/community-post-risk-checker-schema.ts +99 -0
  484. package/src/lib/tools/community-post-risk-checker.format.ts +557 -0
  485. package/src/lib/tools/competitor-analysis-schema.ts +144 -0
  486. package/src/lib/tools/draft-preview-access.ts +3 -0
  487. package/src/lib/tools/draft-store.ts +69 -0
  488. package/src/lib/tools/email-template-generator-schema.ts +124 -0
  489. package/src/lib/tools/gtm-checklist-copy.ts +57 -0
  490. package/src/lib/tools/gtm-checklist-structure.ts +37 -0
  491. package/src/lib/tools/image-download.ts +68 -0
  492. package/src/lib/tools/input-quality.ts +97 -0
  493. package/src/lib/tools/logo-generator-schema.ts +224 -0
  494. package/src/lib/tools/market-forecast-report-schema.ts +299 -0
  495. package/src/lib/tools/mcp-registry.ts +16 -0
  496. package/src/lib/tools/mcp-types.ts +18 -0
  497. package/src/lib/tools/million-user-growth-test-schema.ts +49 -0
  498. package/src/lib/tools/million-user-growth-test.ts +181 -0
  499. package/src/lib/tools/og-image-generator-render.ts +448 -0
  500. package/src/lib/tools/og-image-generator-schema.ts +140 -0
  501. package/src/lib/tools/ops-catalog.ts +102 -0
  502. package/src/lib/tools/pitch-deck-generator-schema.ts +182 -0
  503. package/src/lib/tools/pitch-deck-package.ts +0 -0
  504. package/src/lib/tools/product-agreement-generator-schema.ts +168 -0
  505. package/src/lib/tools/product-hunt-launch-planner-schema.ts +136 -0
  506. package/src/lib/tools/product-hunt-launch-planner.format.ts +72 -0
  507. package/src/lib/tools/product-name-generator-schema.ts +563 -0
  508. package/src/lib/tools/product-poster-generator-schema.ts +215 -0
  509. package/src/lib/tools/product-ui-generator-schema.ts +157 -0
  510. package/src/lib/tools/reddit-pain-point-finder-schema.ts +88 -0
  511. package/src/lib/tools/resolve-tool-locale-copy.ts +75 -0
  512. package/src/lib/tools/slug.ts +60 -0
  513. package/src/lib/tools/social-listening-research-report-schema.ts +105 -0
  514. package/src/lib/tools/social-platform-asset-adapter-schema.ts +152 -0
  515. package/src/lib/tools/social-profile-kit.constants.ts +12 -0
  516. package/src/lib/tools/social-profile-kit.generation.ts +257 -0
  517. package/src/lib/tools/social-profile-kit.input.ts +290 -0
  518. package/src/lib/tools/social-profile-kit.manual.ts +481 -0
  519. package/src/lib/tools/social-profile-kit.package.ts +220 -0
  520. package/src/lib/tools/social-profile-kit.schema.ts +328 -0
  521. package/src/lib/tools/startup-idea-research-schema.ts +107 -0
  522. package/src/lib/tools/tarot-imagery.ts +89 -0
  523. package/src/lib/tools/tarot-reading.ts +1044 -0
  524. package/src/lib/tools/tool-message-keys.ts +18 -0
  525. package/src/lib/tools/types.ts +32 -0
  526. package/src/lib/tools/user-interview.format.ts +147 -0
  527. package/src/lib/tools/user-interview.generation.ts +670 -0
  528. package/src/lib/tools/user-interview.schema.ts +192 -0
  529. package/src/lib/zip.ts +106 -0
  530. package/src/services/tools/handlers/gtm-readiness-checklist.ts +71 -0
  531. package/src/services/tools/handlers/types.ts +7 -0
@@ -0,0 +1,171 @@
1
+ const kokoCodexAssistant = {
2
+ meta: {
3
+ title: "KoKo Codex Desktop Assistant Beta",
4
+ displayTitle: "KoKo Assistant",
5
+ description: "Download the KoKo Codex Desktop Assistant Mac Beta and turn brand start, code sync, Skill prompts, and completion reminders into quick floating-window actions. Invite code required.",
6
+ intro: "KoKo gives your recurring Codex prompts and Skills a floating desktop entry point. Enter the internal invite code to download the Mac Beta, then turn brand start, code sync, repeat workflows, and completion reminders into quick KoKo actions.",
7
+ category: "Codex Tools",
8
+ keywords: [
9
+ "Codex desktop assistant",
10
+ "KoKo Codex Assistant",
11
+ "Mac floating launcher",
12
+ "Skill shortcut launcher",
13
+ "Codex git pull push assistant",
14
+ ],
15
+ inputSignal: "Internal invite code",
16
+ outputSignal: "Mac Beta installer download",
17
+ boundarySignal: "Windows version coming soon; internal beta only",
18
+ },
19
+ widget: {
20
+ betaBadge: "Beta",
21
+ macTitle: "Mac Beta download",
22
+ macBody:
23
+ "This is the KoKo Codex Desktop Assistant Mac Beta. It adds a floating desktop entry point for the Codex prompts, Skills, and brand parameters you reuse every day.",
24
+ macPoints: [
25
+ "Hover the floating window to reveal shortcut buttons",
26
+ "Bind each button to a prompt, Skill, or preset parameter set",
27
+ "Open Codex and send the action to the right brand automatically",
28
+ "Get a helper reminder when Codex finishes the task",
29
+ ],
30
+ downloadMac: "Download Mac Beta",
31
+ downloadAgain: "Download Mac Beta again",
32
+ verifiedHint: "Invite code verified. The next click downloads directly.",
33
+ comingSoon: "Coming soon",
34
+ windowsTitle: "Windows version",
35
+ windowsBody:
36
+ "The Windows entry is reserved on the right, but it is not available yet. We will open it after the installer and launch flow are stable.",
37
+ windowsStatus: "Windows version coming soon",
38
+ workspaceAlt: "Pixel preview of KoKo opening floating shortcut buttons",
39
+ dialogTitle: "Enter internal invite code",
40
+ dialogDescription:
41
+ "KoKo is currently available as an internal Beta. Enter the invite code to download the Mac installer.",
42
+ inviteLabel: "Invite code",
43
+ invitePlaceholder: "Enter invite code",
44
+ wrongCode: "That invite code is not correct. Please check and try again.",
45
+ cancel: "Cancel",
46
+ confirmDownload: "Verify and download",
47
+ },
48
+ guide: {
49
+ betaBadge: "Beta",
50
+ heroVisualAlt: "KoKo pixel tomato assistant with floating shortcut buttons and a Mac Beta installer",
51
+ workspaceHeading: "Download KoKo Mac Beta",
52
+ workspaceHint:
53
+ "This build is for internal testing. Click the Mac download button and enter the invite code. The Windows entry is reserved but not open yet.",
54
+ resultHeading: "What you get",
55
+ resultBody: [
56
+ "After installation, KoKo gives you a lightweight floating desktop window. You can turn recurring actions such as starting a brand, pulling code, pushing code, or launching a Skill into buttons that are available from any screen.",
57
+ "When Codex finishes a task, KoKo can also send a helper reminder so you know it is time to review the result. You do not have to keep watching the terminal or repeatedly switch back to Codex while the work is running.",
58
+ "KoKo is not another web generator and it does not ask you to fill out a long form. Its value is saving the Codex chats, brand paths, prompts, Skills, and completion reminders you already trust, then making them reachable with one hover and one click.",
59
+ ],
60
+ workspaceVisualAlt: "Product preview of KoKo opening multiple floating shortcut buttons",
61
+ scenarioHeading: "Workflows worth turning into buttons",
62
+ scenarioIntro:
63
+ "The first Beta focuses on high-frequency Codex workflows that can be preset and then left to run. The first two scenarios are developer essentials; the other two help teams package repeatable Skill flows.",
64
+ scenarioItems: [
65
+ {
66
+ title: "Start a code brand",
67
+ body: "Store the brand path, start command, and checks in one button. Hover KoKo, click Start, and let Codex enter the right brand while you wait for the service to be ready.",
68
+ },
69
+ {
70
+ title: "Pull and push code",
71
+ body: "Split pull, branch checks, commit summaries, push, or draft PR prompts into shortcut buttons. It helps developers who sync code many times a day without wanting to retype the same instructions.",
72
+ },
73
+ {
74
+ title: "Launch a fixed Skill",
75
+ body: "Turn SEO, brand materials, document cleanup, email drafts, or other Skill calls into buttons. KoKo sends the preset prompt to the right Codex chat or brand.",
76
+ },
77
+ {
78
+ title: "Hand off routine tasks",
79
+ body: "Teams can package review checklists, launch checks, retrospectives, or asset generation into shared configurations so teammates can trigger the same Codex flow without memorizing the prompt.",
80
+ },
81
+ ],
82
+ configHeading: "Customize the left-side hover buttons",
83
+ configBody: [
84
+ "KoKo is not a fixed feature list. Each shortcut can point to a prompt, a Skill, a brand path, a target chat, or a preset parameter set, so the buttons that appear on hover match your actual workflow.",
85
+ "One button might start local services, another might pull the latest branch, and another might call `$programmatic-seo` for a page brief. The closer the buttons are to your daily actions, the more KoKo feels like a desktop Codex dispatcher.",
86
+ ],
87
+ configVisualAlt: "KoKo arranging prompts, Skills, and checklist modules into floating buttons",
88
+ flowHeading: "Click once, send to Codex",
89
+ flowBody: [
90
+ "When you click a button, KoKo opens Codex based on your configuration and sends the right content to the target chat or brand. The workflow becomes hover, click, and wait instead of switching windows, finding the brand, copying a prompt, and rebuilding context.",
91
+ "That makes KoKo a good fit for tasks that do not need improvisation but do need Codex to act in the right brand: start, sync, check, generate, organize, review, and prepare for release.",
92
+ ],
93
+ valueVisualAlt: "Scattered developer chores becoming start, pull, and push actions through KoKo",
94
+ notificationHeading: "Get reminded when the task is done",
95
+ notificationBody: [
96
+ "Many Codex tasks do not finish the moment you click: starting services, cleaning documents, generating assets, and running checks can all take a while. KoKo can notify you through a small helper when the task is complete, so you know the result is ready to review.",
97
+ "The reminder brings your attention back to the result, but it does not decide whether code is safe, a document is ready to publish, or generated output should ship. You still review the Codex result, ask follow-up questions, and choose the next step.",
98
+ ],
99
+ notificationVisualAlt: "Pixel illustration of the KoKo helper reminding a user to review a completed Codex task",
100
+ standardsHeading: "What a good Codex desktop assistant should do",
101
+ standardsItems: [
102
+ {
103
+ title: "Be fast",
104
+ body: "The entry point should be available from anywhere and jump straight into the configured Codex context without making you find the brand, Skill, or prompt again.",
105
+ },
106
+ {
107
+ title: "Stay controllable",
108
+ body: "Every prompt, Skill, and parameter behind a button should be visible, editable, and reusable. KoKo is designed to deliver the actions you already approved.",
109
+ },
110
+ {
111
+ title: "Keep results visible",
112
+ body: "For waitable tasks, the helper reminder brings you back to Codex when the result is ready, reducing window switching and missed reviews.",
113
+ },
114
+ {
115
+ title: "Keep boundaries clear",
116
+ body: "The Beta focuses on Mac desktop, internal invite access, and fixed workflows. Code, commits, and release actions that need judgment should still keep human confirmation.",
117
+ },
118
+ ],
119
+ boundaryHeading: "Beta download and platform boundaries",
120
+ boundaryBody: [
121
+ "The current Mac installer is a Beta build for internal use. Download requires an internal invite code, which is entered in the download dialog and not exposed in page copy.",
122
+ "The Windows entry is visible on the right but marked coming soon. That sets platform expectations without implying that a Windows installer is already available.",
123
+ "KoKo helps send configured content to Codex and can remind you when the task is done, but it does not decide whether code is safe, commits should ship, or generated output is production-ready. Developer buttons should keep necessary checks and human confirmation.",
124
+ ],
125
+ betaVisualAlt: "KoKo Mac Beta installer, invite-code lock, and coming-soon Windows entry",
126
+ faq: "FAQ",
127
+ faqItems: [
128
+ {
129
+ question: "How is KoKo different from a normal launcher?",
130
+ answer:
131
+ "A normal launcher usually opens apps or runs commands. KoKo is built around Codex workflows: it can combine prompts, Skills, brand paths, and preset parameters into buttons that send work to a target Codex chat or brand.",
132
+ },
133
+ {
134
+ question: "Why does the KoKo Mac Beta require an invite code?",
135
+ answer:
136
+ "This build is still in internal Beta, so download access is limited while we collect feedback on installation, floating-window behavior, Codex launch, and button configuration. If you have an invite code, enter it in the download dialog.",
137
+ },
138
+ {
139
+ question: "Can KoKo start my code brand?",
140
+ answer:
141
+ "Yes. You can configure a button with the brand path, start command, and checks. KoKo sends that action to Codex, while the final result still depends on your local environment, dependencies, and brand scripts.",
142
+ },
143
+ {
144
+ question: "Can I use KoKo for git pull and push workflows?",
145
+ answer:
146
+ "Yes. You can split pull, checks, commit summaries, push, or PR draft prompts into buttons. Keep branch checks, change summaries, and confirmation steps in the prompt for actions that affect shared code.",
147
+ },
148
+ {
149
+ question: "When will the Windows version be available?",
150
+ answer:
151
+ "The Windows version is not open for download yet. The page keeps the entry visible and marked coming soon until installer behavior, floating-window permissions, and Codex launch flow are stable.",
152
+ },
153
+ {
154
+ question: "Can I configure other Skills as KoKo buttons?",
155
+ answer:
156
+ "Yes. KoKo is best for frequent, fixed, waitable Skill flows such as SEO briefs, brand assets, document cleanup, launch checks, email drafts, and brand retrospectives.",
157
+ },
158
+ {
159
+ question: "When does the helper reminder appear?",
160
+ answer:
161
+ "When a Codex task triggered through KoKo finishes, the helper reminder brings you back to the matching result. It is designed for waitable tasks such as starts, checks, generation, and cleanup; you still review the result before committing, publishing, or using it.",
162
+ },
163
+ ],
164
+ ctaHint:
165
+ "KoKo is still an internal Beta. You can return to the tool list to explore current Tomako tools, or continue with product naming if you are preparing launch content.",
166
+ ctaPrimary: "Back to all tools",
167
+ ctaSecondary: "Try product naming",
168
+ },
169
+ } as const;
170
+
171
+ export default kokoCodexAssistant;
@@ -0,0 +1,173 @@
1
+ const logoGenerator = {
2
+ meta: {
3
+ title: "Logo Generator",
4
+ description: "Turn a product URL, name, context, reference image, and palette into downloadable PNG logo schemes.",
5
+ intro: "Generate downloadable PNG logo schemes from product context.",
6
+ category: "Brand tools",
7
+ keywords: [
8
+ "logo generator",
9
+ "AI logo generator",
10
+ "free logo generator",
11
+ "startup logo generator",
12
+ "PNG logo",
13
+ ],
14
+ },
15
+ guide: {
16
+ heroImageAlt:
17
+ "Logo generator transparent hero visual showing a product URL, product brief, online logo image, and review checklist.",
18
+ workspaceHeading: "Generate a logo from product context",
19
+ workspaceHint:
20
+ "Product name is the only required field. Add a product URL, description, keywords, reference image, or custom palette if useful; logo format lives under brand constraints.",
21
+ workspaceVisualAlt:
22
+ "Logo generator workspace visual showing a product URL and brief becoming online logo image candidates.",
23
+ valueHeading: "What you get",
24
+ valueIntro:
25
+ "This logo generator does not use front-end fake images or templates. It returns downloadable, reviewable brand directions through the online image workflow.",
26
+ valueVisualAlt:
27
+ "Logo generator output visual showing a PNG source image, product context, and review checklist.",
28
+ valueCards: [
29
+ {
30
+ title: "PNG source image",
31
+ body: "The result comes from the image service imageUrl and can be downloaded as the generated logo image.",
32
+ },
33
+ {
34
+ title: "Product context",
35
+ body: "Product URL, description, and keywords enter the brief; the URL may be used to read public title and description metadata.",
36
+ },
37
+ {
38
+ title: "Brand constraints",
39
+ body: "Industry, audience, and logo format can be added in the collapsed area. Custom palette is separate; if left empty, the Agent infers color direction.",
40
+ },
41
+ {
42
+ title: "Review checklist",
43
+ body: "Check small-size recognition, color usability, trademark risk, and rights review before treating a logo as final.",
44
+ },
45
+ ],
46
+ howToUse: "How to use",
47
+ howToUseIntro:
48
+ "Start with the smallest useful brief, compare directions, then use a reference image, custom palette, or brand constraints when you need a tighter result.",
49
+ howToUseSteps: [
50
+ "Enter the product name; optionally add a product URL plus product description and keywords.",
51
+ "Optionally upload a reference image or choose a custom palette; if you do not, the Agent infers direction from URL, context, and product name.",
52
+ "Open brand constraints only when you need industry, audience, or logo format.",
53
+ "Submit and wait for the online Agent to call image generation and write back a real imageTaskId and imageUrl.",
54
+ "Pick a direction, download the PNG source image, then refine it in a design tool.",
55
+ ],
56
+ resultGuidance: "How to judge the result",
57
+ resultGuidanceIntro:
58
+ "Treat each result as a pre-launch design direction. Check clarity, fit, and reviewability before deciding which direction is worth refining.",
59
+ resultVisualAlt:
60
+ "Logo generator result guidance visual showing score, context fit, and review checks.",
61
+ guidanceBullets: [
62
+ "Check recognition at small sizes: the mark should still work as a favicon, app icon, or avatar.",
63
+ "Match the context: websites, apps, social profiles, and pitch decks need different spatial balance.",
64
+ "Keep two or three directions for refinement instead of picking only because of color.",
65
+ "Use the PNG source image for quick sharing and page previews; vectorization and brand-system cleanup should happen before commercial use.",
66
+ ],
67
+ standardsHeading: "Why use Tomako",
68
+ standardsIntro:
69
+ "A good AI logo generator should keep inputs light, return results from a real generation workflow, make downloads easy, and state what it cannot verify.",
70
+ standardCards: [
71
+ {
72
+ title: "Low-friction input",
73
+ body: "Start from a product name. Add URL, product context, industry, and audience only when you need a more precise direction.",
74
+ },
75
+ {
76
+ title: "Traceable result source",
77
+ body: "The front end only displays imageUrl values written back by Skills-OL, not browser templates or placeholders.",
78
+ },
79
+ {
80
+ title: "Built for indie launches",
81
+ body: "Results are organized around websites, app icons, social avatars, and pitch decks: the first surfaces most builders need.",
82
+ },
83
+ {
84
+ title: "Clear boundaries",
85
+ body: "It does not promise trademark clearance, rights review, or a full brand system. Commercial use still needs human review.",
86
+ },
87
+ ],
88
+ useCases: "Use cases",
89
+ useCasesIntro:
90
+ "People searching for a logo generator usually want usable visual directions quickly, not a design essay. This page maps common indie-builder jobs to output and download actions.",
91
+ useCasesVisualAlt:
92
+ "Logo generator use case visual showing launch assets for a website, app icon, and social avatar.",
93
+ useCaseCards: [
94
+ {
95
+ title: "Shape the first identity after naming",
96
+ description: "Once the product name is stable, generate symbol, wordmark, and icon directions to test whether the name can carry a brand.",
97
+ label: "0 to 1",
98
+ },
99
+ {
100
+ title: "Prepare a landing page or waitlist",
101
+ description: "Create a consistent first mark for website navigation, hero sections, favicons, and social avatars.",
102
+ label: "Launch",
103
+ },
104
+ {
105
+ title: "Compare brand directions in a proposal",
106
+ description: "Turn one product brief into multiple comparable directions for internal review or client discussion.",
107
+ label: "Pitch",
108
+ },
109
+ {
110
+ title: "Hand off for refinement",
111
+ description: "Download the PNG source image and continue vectorization, spacing, and brand cleanup in Figma, Illustrator, or a design workflow.",
112
+ label: "Review",
113
+ },
114
+ ],
115
+ boundaryHeading: "Scope and boundaries",
116
+ boundaryIntro:
117
+ "This version generates images from the brief you submit. If you provide a product URL, it may read public metadata, but it does not replace rights review.",
118
+ boundaryVisualAlt:
119
+ "Logo generator boundary visual showing an online image result, URL metadata, and human review.",
120
+ boundaryGroups: [
121
+ {
122
+ title: "Supported",
123
+ items: [
124
+ "Product URL, product name, product description and keywords, reference image, custom palette, industry, audience, and logo format.",
125
+ "Image-service imageUrl, PNG source download, and review guidance.",
126
+ "First visual directions for websites, app icons, social avatars, and pitch decks.",
127
+ ],
128
+ },
129
+ {
130
+ title: "Not supported",
131
+ items: [
132
+ "No guarantee that restricted, logged-in, or anti-crawling pages can be read.",
133
+ "No trademark search, copyright review, similar-brand search, or commercial-use guarantee.",
134
+ "No complete brand system, brand book, transparent-background pack, or final vector trademark handoff.",
135
+ ],
136
+ },
137
+ {
138
+ title: "If the result misses",
139
+ items: [
140
+ "Add product differentiation, target users, and keywords before trying again.",
141
+ "If the small-size result is unclear, choose a simpler logo format or wordmark direction.",
142
+ "Before commercial use, run design review and rights-risk checks.",
143
+ ],
144
+ },
145
+ ],
146
+ faq: "FAQ",
147
+ faqIntro:
148
+ "These questions keep the main trust boundary visible: the tool creates image candidates, but it does not replace trademark search, rights review, or a full brand identity system.",
149
+ faqItems: [
150
+ {
151
+ question: "Does this create a commercial logo?",
152
+ answer:
153
+ "The goal is a near-production logo image candidate, but it does not check trademarks, copyright, or similarity to existing brands. Run design review, vectorization, and rights review before commercial use.",
154
+ },
155
+ {
156
+ question: "Why does it output a PNG source image?",
157
+ answer:
158
+ "The real image workflow returns a raster PNG from the image service. It is useful for choosing a direction, previewing it in product surfaces, or handing it to a designer for vector refinement.",
159
+ },
160
+ {
161
+ question: "Do I need to provide a product URL?",
162
+ answer:
163
+ "No. Product URL is optional. If provided, the script tries to read public page title and description metadata; if that fails, generation still uses your product description and keywords.",
164
+ },
165
+ ],
166
+ ctaPrimary: "Generate product names first",
167
+ ctaSecondary: "Back to all tools",
168
+ ctaHint:
169
+ "If the product name is not stable yet, generate name candidates first, then return to create logo directions.",
170
+ },
171
+ } as const;
172
+
173
+ export default logoGenerator;
@@ -0,0 +1,228 @@
1
+ const marketForecastReport = {
2
+ meta: {
3
+ title: "TAM, SAM & SOM Forecast Tool",
4
+ displayTitle: "TAM, SAM & SOM Forecast Tool",
5
+ description:
6
+ "Add product, buyer, pricing, and traction to build TAM, SAM, SOM, and three ARR scenarios with source notes, assumptions, and diligence questions for your deck.",
7
+ intro:
8
+ "Fundraising market forecasts should not rest on one consulting report. This tool combines public statistics, community activity signals, policy trends, competitor clues, and your real traction into a forecast range that can be checked.",
9
+ category: "Fundraising and market research tools",
10
+ keywords: [
11
+ "market size forecast",
12
+ "ARR forecast tool",
13
+ "TAM SAM SOM calculator",
14
+ "startup market research",
15
+ "startup user growth forecast",
16
+ ],
17
+ inputSignal: "Product context, current users, target users, market, revenue, pricing, conversion",
18
+ outputSignal: "TAM/SAM/SOM, three forecast scenarios, evidence wall, policy trends, diligence checklist",
19
+ boundarySignal: "Evidence-backed estimate, not investment advice or a guaranteed financial forecast",
20
+ },
21
+ widget: {
22
+ productLabel: "Product and use case",
23
+ productPlaceholder:
24
+ "Example: an AI support-ticket triage tool for North American SMB SaaS teams, integrating with Zendesk and Intercom to prioritize issues and detect repeated problems.",
25
+ targetUsersLabel: "Target users / buyers",
26
+ targetUsersPlaceholder: "Example: support leads and CX ops at 50-500 person SaaS companies",
27
+ marketLabel: "Target market",
28
+ marketPlaceholder: "Example: US / North America / global B2B SaaS",
29
+ currentUsersLabel: "Current users",
30
+ currentUsersPlaceholder: "Example: 2,000 workspaces, 120 daily active teams",
31
+ horizonLabel: "Forecast horizon",
32
+ horizon: {
33
+ oneYear: "1 year",
34
+ threeYear: "3 years",
35
+ fiveYear: "5 years",
36
+ },
37
+ metricsLabel: "Current business metrics",
38
+ metricsHint: "Optional",
39
+ metricsPlaceholder:
40
+ "Example: $8k MRR; Pro at $49/mo; paid conversion around 6%; user count grew 18% MoM for 3 months; competitors include Gorgias and Intercom Fin.",
41
+ inputHint:
42
+ "The tool uses public, attributable evidence and the data you provide. If evidence is thin, the report lowers confidence and lists gaps instead of making the answer sound certain.",
43
+ submit: "Generate market forecast",
44
+ submitting: "Submitting...",
45
+ running: "Researching...",
46
+ emptyTitle: "Your market forecast report will appear here",
47
+ emptyHint:
48
+ "After submission, you will get TAM/SAM/SOM, an evidence wall, community activity signals, policy trends, bear/base/bull user and ARR forecasts, sensitivity analysis, and an investor diligence checklist.",
49
+ runningTitle: "Collecting public market evidence",
50
+ runningHint:
51
+ "The agent prioritizes official statistics, company disclosures, policy text, public community discussion, and checkable web pages. Partial sections may appear before the full report.",
52
+ progressTitle: "Recent progress",
53
+ progressSteps: [
54
+ "Received the product context and started defining market boundaries, user segments, and searchable evidence questions.",
55
+ "Looking for official statistics, company disclosures, public community discussion, and policy trends.",
56
+ "Separating real activity signals from member counts, media heat, and secondhand report numbers.",
57
+ "Building bear/base/bull assumptions for users, paid conversion, ARPU/ACV, and ARR.",
58
+ "Organizing evidence strength, sensitivity variables, missing evidence, and investor diligence questions.",
59
+ ],
60
+ progressResultReady: "A structured report snapshot was written back. Reading and validating it now.",
61
+ status: {
62
+ default: "Researching",
63
+ PENDING: "Queued",
64
+ STREAMING: "Researching",
65
+ AWAITING_INPUT: "Analyzing",
66
+ AWAITING_RESULT: "Reading result",
67
+ SUCCEEDED: "Finishing",
68
+ },
69
+ retry: "Retry",
70
+ errors: {
71
+ invalid: "Add clearer product, buyer, and market context. Avoid test/demo/placeholder content.",
72
+ submit: "Submission failed. Check the connection and try again.",
73
+ task: "The market forecast task failed. Please try again later.",
74
+ timeout: "Research timed out. Current partial results were kept; retry for a full report.",
75
+ schema: "The returned report format was invalid. Please retry.",
76
+ },
77
+ analyzeAnother: "Analyze another market",
78
+ copy: "Copy report",
79
+ copied: "Copied",
80
+ boundaryFallback:
81
+ "This is estimate-grade research based on public information and user input. It is not investment advice, a fundraising promise, a guaranteed financial forecast, or a substitute for professional market research.",
82
+ confidence: { low: "Low", medium: "Medium", high: "High" },
83
+ strength: { weak: "Weak", mixed: "Mixed", strong: "Strong" },
84
+ scenario: { bear: "Bear", base: "Base", bull: "Bull" },
85
+ policy: { tailwind: "Tailwind", headwind: "Headwind", mixed: "Mixed" },
86
+ intent: {
87
+ clear: "Buying intent: clear",
88
+ weak: "Buying intent: weak",
89
+ not_observed: "Buying intent: not observed",
90
+ unknown: "Buying intent: unknown",
91
+ },
92
+ sourceStatus: {
93
+ source_linked: "Source linked",
94
+ source_named: "Source named",
95
+ needs_source: "Needs source",
96
+ user_provided: "User provided",
97
+ },
98
+ volatility: { low: "Low volatility", medium: "Medium volatility", high: "High volatility" },
99
+ checkStatus: { pass: "Pass", warning: "Warning", fail: "Fail" },
100
+ protocol: {
101
+ market: "Market definition",
102
+ boundary: "Market boundary",
103
+ recency: "Recency rule",
104
+ formula: "Forecast formula",
105
+ channelPlan: "Evidence channel plan",
106
+ archetype: "Market archetype",
107
+ geo: "Geo",
108
+ language: "Language",
109
+ },
110
+ channelRole: {
111
+ core: "Core",
112
+ supporting: "Supporting",
113
+ comparable_only: "Comparable only",
114
+ excluded: "Excluded",
115
+ },
116
+ forecast: {
117
+ users: "Users",
118
+ paidUsers: "Paid users",
119
+ conversion: "Paid rate",
120
+ arr: "ARR",
121
+ formula: "Formula path",
122
+ assumptions: "Key assumptions",
123
+ },
124
+ report: {
125
+ kicker: "Market forecast report",
126
+ partialKicker: "Partial report",
127
+ partialSummary: "The first report section is still being generated.",
128
+ confidence: "Confidence",
129
+ scenarios: "Scenarios",
130
+ sources: "Sources",
131
+ taskId: "Task ID",
132
+ inProgress: "In progress",
133
+ community: "Community activity signals",
134
+ policy: "Policy trends",
135
+ sensitivity: "Sensitivity variables",
136
+ checklist: "Investor diligence checklist",
137
+ missingEvidence: "Missing evidence",
138
+ evidenceStrength: "Evidence strength",
139
+ observedMetric: "Observed metric",
140
+ observedPeriod: "Observation period",
141
+ sourceStatus: "Evidence status",
142
+ researchProtocol: "Research protocol",
143
+ stabilityCheck: "Stability check",
144
+ varianceDrivers: "Variance drivers",
145
+ },
146
+ sections: {
147
+ market: "Market definition and TAM/SAM/SOM",
148
+ forecast: "Users, paid conversion, and ARR forecast",
149
+ dataVisuals: "Real data and charts",
150
+ evidence: "Real market evidence",
151
+ signals: "Community and policy signals",
152
+ comparables: "Comparable cases and limits",
153
+ diligence: "Sensitivity, gaps, and diligence",
154
+ },
155
+ },
156
+ guide: {
157
+ workspaceHeading: "Build a TAM, SAM, and SOM forecast you can challenge",
158
+ workspaceHint: "Enter product and traction details to generate an evidence-backed fundraising market forecast.",
159
+ workspaceBadge: "Evidence first",
160
+ valueKicker: "What you get",
161
+ valueTitle: "Not a single magic number, but a forecast base investors can question",
162
+ valueIntro:
163
+ "The value is not a bigger number. It is putting conclusions, evidence, assumptions, and gaps on the same page so your team can review and improve them.",
164
+ valueItems: [
165
+ {
166
+ title: "Layered market sizing",
167
+ body: "Break down TAM, SAM, and SOM with the user scope, region, pricing, and service boundary behind each estimate.",
168
+ },
169
+ {
170
+ title: "Three business scenarios",
171
+ body: "Generate bear, base, and bull forecasts for users, paid users, conversion, ARPU/ACV, and ARR instead of pretending one number is certain.",
172
+ },
173
+ {
174
+ title: "Investor-ready evidence wall",
175
+ body: "Separate official statistics, company disclosures, public community signals, policy documents, and user inputs. Reports are supporting evidence, not the whole argument.",
176
+ },
177
+ ],
178
+ evidenceKicker: "Evidence standard",
179
+ evidenceTitle: "Real evidence matters more than polished market reports",
180
+ evidenceIntro:
181
+ "Industry reports can help, but they cannot replace checkable public evidence. The report labels source type, relevance, and confidence.",
182
+ evidenceItems: [
183
+ "Prioritize official statistics, regulator or policy documents, company disclosures, public product pages, and accessible community discussions.",
184
+ "Community activity separates member count, recent discussion, repeated pain, buying intent, migration language, and workarounds instead of equating members with users.",
185
+ "Consulting reports, media rankings, and secondhand market-size numbers are treated as clues; opaque methods reduce confidence.",
186
+ "Growth assumptions without evidence are listed as missing evidence instead of being stated as facts.",
187
+ ],
188
+ boundaryKicker: "Boundary",
189
+ boundaryTitle: "Fundraising needs conviction, but also honesty",
190
+ boundaryIntro:
191
+ "Use this for pitch decks, internal operating models, and investor Q&A preparation. Do not treat it as a guaranteed financial commitment.",
192
+ boundaryItems: [
193
+ "Supports: early products, SaaS, AI products, developer tools, community-led products, and fundraising prep with some traction or revenue.",
194
+ "Does not support: guaranteed fundraising outcomes, private community scraping, logged-in data, fabricated competitor metrics, or replacement of a professional financial model.",
195
+ "How to use it: verify strong claims source by source, then test them with interviews, sales records, waitlists, ads, or landing-page experiments.",
196
+ "Best inputs: current users, active users, revenue, pricing, paid conversion, growth history, competitors, target region, and community keywords you already noticed.",
197
+ ],
198
+ faqKicker: "FAQ",
199
+ faqTitle: "TAM, SAM, and SOM forecast FAQs",
200
+ faqItems: [
201
+ {
202
+ question: "Will it give me a market size I can paste into a deck?",
203
+ answer:
204
+ "It will give a range and rationale you can adapt, but you still need to verify sources. The best use is as a market slide and investor Q&A draft.",
205
+ },
206
+ {
207
+ question: "How does it estimate active community users?",
208
+ answer:
209
+ "It looks at recency, repeated pain, buying or migration intent, alternatives, and the community boundary. Member count is a weak signal and is not treated as active users by itself.",
210
+ },
211
+ {
212
+ question: "How do policy trends affect the forecast?",
213
+ answer:
214
+ "Each policy trend is labeled as a tailwind, headwind, or mixed signal, with the expected impact on adoption, sales cycle, compliance cost, or budget release.",
215
+ },
216
+ {
217
+ question: "What if the market evidence is thin?",
218
+ answer:
219
+ "The report lowers confidence and lists missing evidence plus next diligence questions. That is useful because it shows where the story is not yet strong.",
220
+ },
221
+ ],
222
+ ctaHint: "Need deeper community evidence first? Run a social listening report. Ready to use the forecast? Move into a pitch deck.",
223
+ ctaPrimary: "Run social listening",
224
+ ctaSecondary: "Generate pitch deck",
225
+ },
226
+ } as const;
227
+
228
+ export default marketForecastReport;