@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,869 @@
1
+ import { z } from "zod";
2
+
3
+ import type { ToolPackage } from "../package/types";
4
+
5
+ /**
6
+ * Investor Pipeline Planner / 融资资方地图(direct 车道,slug 保持 investor-matching-planner 不变)。
7
+ * 证据:docs/seo-keyword-briefs/investor-matching-planner.md + .discovery.md(812 词漏斗 + 独立评审)。
8
+ * 主词 how to find investors(1300/mo KD29 教程意图)+ 次词 how to find venture capitalists /
9
+ * investors for startup / angel investors for startups 等簇;venture capital database(210/mo)降为长尾。
10
+ * 定位(brief 结论):V1 是"资方定位与触达规划助手",不是资方数据库——
11
+ * 输出排序的资方类型分组 + 匹配/排除理由 + 真实查找渠道 + 触达计划,
12
+ * 不输出"已验证可投名单",不承诺回复率或获投概率。
13
+ * 反超点(相对 OpenVC / Mercury / LeadLoft / Startups.com / PitchBook):
14
+ * 页面内即时返回;解释"为什么不适合"减少无效外联;内置人民币/美元等资方类型解释;
15
+ * 匹配 -> 准备 -> 触达 一体化输出,而不是只给一张目录表。
16
+ * scene "investor_matching_planner" 需在 168 compose 的 LLM_DIRECT_ALLOWED_SCENES 白名单内。
17
+ */
18
+ // 经验:deepseek 不严格遵守 JSON Schema 的数组 max 上限,min 保底、max 只放宽松护栏,
19
+ // 目标条数通过 prompt 控制。
20
+ const investorGroupSchema = z.object({
21
+ name: z.string().min(1),
22
+ priority: z.string().min(1),
23
+ profile: z.string().min(1),
24
+ fitReasons: z.array(z.string()).min(2).max(8),
25
+ unfitSignals: z.array(z.string()).min(1).max(8),
26
+ whereToFind: z.array(z.string()).min(2).max(8),
27
+ outreachMove: z.string().min(1),
28
+ });
29
+
30
+ const institutionTargetSchema = z.object({
31
+ groupName: z.string().min(1),
32
+ institutionName: z.string().min(1),
33
+ institutionType: z.string().min(1),
34
+ geography: z.string().min(1),
35
+ fitReason: z.string().min(1),
36
+ recentSignals: z.array(z.string()).min(1).max(5),
37
+ contacts: z.array(z.string()).min(2).max(6),
38
+ verificationQueries: z.array(z.string()).min(2).max(6),
39
+ outreachAngle: z.string().min(1),
40
+ confidence: z.string().min(1),
41
+ });
42
+
43
+ const resultSchema = z.object({
44
+ positioningRead: z.string().min(1),
45
+ stageRead: z.string().min(1),
46
+ capitalRouteRead: z.string().min(1),
47
+ investorGroups: z.array(investorGroupSchema).min(4).max(8),
48
+ institutionTargets: z.array(institutionTargetSchema).min(6).max(14),
49
+ fundTypeNotes: z.array(z.string()).min(3).max(10),
50
+ avoidNow: z.array(z.string()).min(2).max(10),
51
+ outreachPlaybook: z.array(z.string()).min(4).max(12),
52
+ nextSteps: z.array(z.string()).min(3).max(10),
53
+ missingInfo: z.array(z.string()),
54
+ promptVersion: z.string().optional(),
55
+ });
56
+
57
+ export const investorMatchingPlannerPackage: ToolPackage = {
58
+ meta: {
59
+ slug: "investor-matching-planner",
60
+ toolType: "generator",
61
+ keywordEvidence: "docs/seo-keyword-briefs/investor-matching-planner.md",
62
+ seo: {
63
+ updatedAt: "2026-07-05",
64
+ readingTime: "8 min",
65
+ ogImage: "/tools/investor-matching-planner-hero.webp",
66
+ },
67
+ },
68
+ copy: {
69
+ title: {
70
+ en: "How to Find Investors: Startup Investor Pipeline Planner",
71
+ zh: "如何找到投资人:融资资方地图",
72
+ "zh-tw": "如何找到投資人:募資投資人地圖",
73
+ },
74
+ displayTitle: {
75
+ en: "Investor Pipeline Planner",
76
+ zh: "融资资方地图",
77
+ "zh-tw": "募資投資人地圖",
78
+ },
79
+ description: {
80
+ en: "How to find investors for your startup, answered with a plan: map which investor types fit your raise, where to source each group, and how to reach out. Free, no sign-up.",
81
+ zh: "免费融资资方地图:填写项目、阶段、目标融资额和资本路线,生成排序的资方类型地图——每组带匹配理由、排除信号、查找渠道和具体触达计划。免注册。",
82
+ "zh-tw":
83
+ "免費募資投資人地圖:填寫專案、階段、目標募資額和資本路線,生成排序的投資人類型地圖——每組帶適合理由、排除訊號、查找管道和具體開發計畫。免註冊。",
84
+ },
85
+ intro: {
86
+ en: "Searching how to find investors usually returns two dead ends: generic listicles and paywalled databases. Most founders don't fail at pitching — they fail at aiming. Instead of scrolling a venture capital database blind and cold-emailing every fund on it, map which investor types actually match your stage, check size, sector and capital route, learn why the rest would waste your time, and get an outreach plan you can start today.",
87
+ zh: "多数创始人不是败在讲 BP,而是败在瞄准。与其对着名单群发冷邮件,不如先弄清哪些资方类型真正匹配你的阶段、票额、赛道和资本路线,哪些注定浪费时间,然后拿着一份今天就能执行的触达计划出发。",
88
+ "zh-tw":
89
+ "多數創辦人不是敗在講簡報,而是敗在瞄準。與其對著名單群發陌生開發信,不如先弄清哪些投資人類型真正符合你的階段、投資額度、領域和資本路線,哪些注定浪費時間,然後拿著一份今天就能執行的開發計畫出發。",
90
+ },
91
+ category: {
92
+ en: "Fundraising tools",
93
+ zh: "融资工具",
94
+ "zh-tw": "募資工具",
95
+ },
96
+ keywords: {
97
+ en: [
98
+ "how to find investors",
99
+ "how to find venture capitalists",
100
+ "investors for startup",
101
+ "angel investors for startups",
102
+ "how to find angel investors",
103
+ "investor matching tool",
104
+ "venture capital database",
105
+ "investor outreach plan",
106
+ ],
107
+ zh: [
108
+ "如何找到投资人",
109
+ "如何找风险投资",
110
+ "创业公司投资人",
111
+ "创业天使投资人",
112
+ "如何找天使投资人",
113
+ "资方匹配工具",
114
+ "风险投资数据库",
115
+ "投资人触达计划",
116
+ ],
117
+ "zh-tw": [
118
+ "如何找到投資人",
119
+ "如何找創投",
120
+ "新創公司投資人",
121
+ "新創天使投資人",
122
+ "如何找天使投資人",
123
+ "投資人配對工具",
124
+ "創投資料庫",
125
+ "投資人開發計畫",
126
+ ],
127
+ },
128
+ inputSignal: {
129
+ en: "Brand description + stage, raise target, capital route, traction, network and materials status",
130
+ zh: "项目描述 + 阶段、融资额、资本路线、进展、人脉与材料现状",
131
+ "zh-tw": "專案描述 + 階段、募資額、資本路線、進展、人脈與材料現況",
132
+ },
133
+ outputSignal: {
134
+ en: "Ranked investor-type map, candidate institutions, contact paths and outreach playbook",
135
+ zh: "排序资方类型地图 + 具体候选机构 + 联系路径 + 触达行动手册",
136
+ "zh-tw": "排序投資人類型地圖 + 具體候選機構 + 聯絡路徑 + 開發行動手冊",
137
+ },
138
+ boundarySignal: {
139
+ en: "Candidate institutions and contact clues are execution aids, not verified live investor data",
140
+ zh: "候选机构与联系方式线索用于推进执行,不等于已验证实时资方数据",
141
+ "zh-tw": "候選機構與聯絡方式線索用於推進執行,不等於已驗證即時投資人資料",
142
+ },
143
+ },
144
+ form: [
145
+ {
146
+ kind: "textarea",
147
+ id: "brand",
148
+ required: true,
149
+ rows: 4,
150
+ minLength: 20,
151
+ fullWidth: true,
152
+ label: {
153
+ en: "What are you building?",
154
+ zh: "你在做什么项目?",
155
+ "zh-tw": "你在做什麼專案?",
156
+ },
157
+ hint: {
158
+ en: "One or two sentences: product, who pays, and current sector/tags. A URL helps too.",
159
+ zh: "一两句话:产品是什么、谁付钱、赛道/标签。附上产品链接更好。",
160
+ "zh-tw": "一兩句話:產品是什麼、誰付錢、領域/標籤。附上產品連結更好。",
161
+ },
162
+ placeholder: {
163
+ en: "e.g. An AI tool workspace for indie founders (tomako.ai), covering naming, visuals and GTM research. 500 weekly users, $800 MRR.",
164
+ zh: "例如:面向独立创业者的 AI 工具工作台(tomako.ai),覆盖命名、视觉和 GTM 调研。周活 500,月收入 $800。",
165
+ "zh-tw": "例如:面向獨立創業者的 AI 工具工作台(tomako.ai),涵蓋命名、視覺和 GTM 研究。週活 500,月營收 $800。",
166
+ },
167
+ invalidMessage: {
168
+ en: "Describe the actual product and who it serves. Placeholder text produces a generic plan that fits nobody.",
169
+ zh: "请描述真实的产品和目标用户。占位文字只会得到对谁都不适用的空泛计划。",
170
+ "zh-tw": "請描述真實的產品和目標使用者。佔位文字只會得到對誰都不適用的空泛計畫。",
171
+ },
172
+ },
173
+ {
174
+ kind: "select",
175
+ id: "stage",
176
+ defaultValue: "pre-seed",
177
+ label: { en: "Funding round", zh: "融资阶段", "zh-tw": "募資階段" },
178
+ options: [
179
+ { value: "pre-seed", label: { en: "Pre-seed / idea", zh: "种子前 / 想法期", "zh-tw": "種子前 / 想法期" } },
180
+ { value: "seed", label: { en: "Seed / angel round", zh: "种子轮 / 天使轮", "zh-tw": "種子輪 / 天使輪" } },
181
+ { value: "pre-a", label: { en: "Pre-A", zh: "Pre-A 轮", "zh-tw": "Pre-A 輪" } },
182
+ { value: "series-a", label: { en: "Series A", zh: "A 轮", "zh-tw": "A 輪" } },
183
+ { value: "series-b-plus", label: { en: "Series B or later", zh: "B 轮及以后", "zh-tw": "B 輪及以後" } },
184
+ { value: "unsure", label: { en: "Not sure — judge for me", zh: "不确定,帮我判断", "zh-tw": "不確定,幫我判斷" } },
185
+ ],
186
+ },
187
+ {
188
+ kind: "text",
189
+ id: "raiseTarget",
190
+ label: {
191
+ en: "Raise target (optional)",
192
+ zh: "目标融资额(选填)",
193
+ "zh-tw": "目標募資額(選填)",
194
+ },
195
+ placeholder: {
196
+ en: "e.g. $500k, ¥3M, or a range",
197
+ zh: "例如:¥300 万、$50 万,或一个区间",
198
+ "zh-tw": "例如:NT$1,500 萬、$50 萬,或一個區間",
199
+ },
200
+ },
201
+ {
202
+ kind: "select",
203
+ id: "traction",
204
+ defaultValue: "early-users",
205
+ label: { en: "Traction", zh: "当前进展", "zh-tw": "目前進展" },
206
+ options: [
207
+ { value: "idea", label: { en: "Idea / deck only", zh: "想法 / 只有 BP", "zh-tw": "想法 / 只有簡報" } },
208
+ { value: "prototype", label: { en: "Prototype / demo", zh: "原型 / Demo", "zh-tw": "原型 / Demo" } },
209
+ { value: "early-users", label: { en: "Early users", zh: "早期用户", "zh-tw": "早期使用者" } },
210
+ { value: "revenue", label: { en: "Revenue", zh: "有收入", "zh-tw": "有營收" } },
211
+ { value: "growth", label: { en: "Fast growth", zh: "快速增长", "zh-tw": "快速成長" } },
212
+ ],
213
+ },
214
+ {
215
+ kind: "select",
216
+ id: "region",
217
+ defaultValue: "unsure",
218
+ label: {
219
+ en: "Market & capital region",
220
+ zh: "市场与资本地区",
221
+ "zh-tw": "市場與資本地區",
222
+ },
223
+ options: [
224
+ { value: "china", label: { en: "China", zh: "中国", "zh-tw": "中國" } },
225
+ { value: "us", label: { en: "US", zh: "美国", "zh-tw": "美國" } },
226
+ { value: "sea", label: { en: "Singapore / SEA", zh: "新加坡 / 东南亚", "zh-tw": "新加坡 / 東南亞" } },
227
+ { value: "global", label: { en: "Global", zh: "全球", "zh-tw": "全球" } },
228
+ { value: "unsure", label: { en: "Not sure yet", zh: "还不确定", "zh-tw": "還不確定" } },
229
+ ],
230
+ },
231
+ {
232
+ kind: "select",
233
+ id: "capitalPreference",
234
+ defaultValue: "unsure",
235
+ label: {
236
+ en: "Capital preference",
237
+ zh: "资本路线偏好",
238
+ "zh-tw": "資本路線偏好",
239
+ },
240
+ options: [
241
+ { value: "rmb", label: { en: "RMB funds", zh: "人民币基金", "zh-tw": "人民幣基金" } },
242
+ { value: "usd", label: { en: "USD funds", zh: "美元基金", "zh-tw": "美元基金" } },
243
+ { value: "strategic", label: { en: "Strategic / CVC first", zh: "战略投资优先", "zh-tw": "策略投資優先" } },
244
+ { value: "angel", label: { en: "Angels first", zh: "天使优先", "zh-tw": "天使優先" } },
245
+ { value: "unsure", label: { en: "Not sure / need advice", zh: "不确定,需要建议", "zh-tw": "不確定,需要建議" } },
246
+ ],
247
+ },
248
+ {
249
+ kind: "select",
250
+ id: "network",
251
+ defaultValue: "cold-start",
252
+ label: {
253
+ en: "Your current network",
254
+ zh: "你现有的人脉",
255
+ "zh-tw": "你現有的人脈",
256
+ },
257
+ options: [
258
+ { value: "warm-intro", label: { en: "Some warm intros available", zh: "有一些可用的引荐", "zh-tw": "有一些可用的引薦" } },
259
+ { value: "community", label: { en: "Communities / events only", zh: "只有社群和活动", "zh-tw": "只有社群和活動" } },
260
+ { value: "cold-start", label: { en: "Cold start, no network", zh: "冷启动,没有人脉", "zh-tw": "冷啟動,沒有人脈" } },
261
+ ],
262
+ },
263
+ {
264
+ kind: "select",
265
+ id: "materials",
266
+ defaultValue: "bp-draft",
267
+ label: {
268
+ en: "Materials ready",
269
+ zh: "现有材料",
270
+ "zh-tw": "現有材料",
271
+ },
272
+ options: [
273
+ { value: "bp-ready", label: { en: "Deck ready", zh: "BP 已完成", "zh-tw": "簡報已完成" } },
274
+ { value: "bp-draft", label: { en: "Deck in draft", zh: "BP 草稿中", "zh-tw": "簡報草稿中" } },
275
+ { value: "product-only", label: { en: "Product page only", zh: "只有产品页", "zh-tw": "只有產品頁" } },
276
+ { value: "nothing", label: { en: "Nothing yet", zh: "还没有材料", "zh-tw": "還沒有材料" } },
277
+ ],
278
+ },
279
+ ],
280
+ runtime: {
281
+ lane: "direct",
282
+ scene: "investor_matching_planner",
283
+ system:
284
+ "You are Tomako's fundraising strategist. You know the early-stage capital landscape across China (RMB funds, government guidance funds, CVCs, angels) and global markets (USD funds, accelerators, family offices, solo GPs). You give founders a ranked, honest investor-targeting plan grounded in their actual stage, check size, sector and capital route. You never fabricate specific fund names as verified matches, never promise replies or funding probability, and you always explain why an investor type is a bad fit, not just a good one.",
285
+ promptTemplate: `Build an investor targeting and outreach plan from this structured brief:
286
+
287
+ \`\`\`json
288
+ {{briefJson}}
289
+ \`\`\`
290
+
291
+ Quality requirements:
292
+ - positioningRead: one or two sentences restating what the company is and its fundable story angle. stageRead: judge whether the stage, traction and raise target are consistent, and state the realistic check-size band this raise implies. capitalRouteRead: recommend RMB vs USD vs mixed route (or other) for THIS brand with concrete reasoning (market, structure, exit path, revenue currency); if stage, region or preference is "unsure", make the call for them from traction and raise target and say why (state the inferred round explicitly in stageRead).
293
+ - investorGroups: 4-5 investor-type groups ranked by priority. name is a specific group like "Vertical AI seed funds (USD)" or "地方政府引导基金 + 本地人民币天使", never a bare category like "VC". priority is a short label ("P0 — main focus", "P1", "P2 — opportunistic"). profile describes who these investors are and their typical check size for this stage.
294
+ - fitReasons must reference THIS brand's stage, sector, traction, geography or business model — reject reasons that would fit any startup. unfitSignals state when this group stops making sense or common rejection triggers. whereToFind lists real, verifiable sourcing channels (e.g. OpenVC, VC Sheet, Crunchbase, AngelList, LinkedIn search filters, IT桔子, 烯牛数据, local accelerator demo days, government guidance fund directories) with a concrete search/filter hint — do NOT invent specific fund or partner names as confirmed matches. outreachMove is the single best first action for this group given the founder's network situation, with the narrative angle to lead with.
295
+ - institutionTargets: 6-10 concrete candidate institutions, distributed across the highest-priority investorGroups. This section is meant to help the user take action, so include real institution names when they are broadly known, publicly searchable, or naturally discoverable from the sourcing channels. Each target must include groupName, institutionName, institutionType, geography, fitReason, recentSignals, contacts, verificationQueries, outreachAngle and confidence.
296
+ - For recentSignals, summarize recent/public activity or investment-thesis signals the user should verify before outreach. If you are not certain about a latest event, phrase it as a verification target, e.g. "Verify recent AI infra portfolio activity via Crunchbase/OpenVC/news search" instead of claiming a dated fact. Do not invent round amounts, dates, partner moves, new funds, or portfolio news.
297
+ - For contacts, give practical contact paths: official website/contact form, public team/partner page, LinkedIn search, X/Twitter search, newsletter/community route, portfolio-founder referral route, and public email only if it is a generic or widely published channel. Never fabricate personal emails, private phone numbers, or handles.
298
+ - verificationQueries must be copy-pasteable searches the founder can run, such as "site:openvc.app <institution> AI seed", "\"<institution>\" partner X Twitter", "\"<institution>\" fund announcement 2026", "\"<institution>\" contact email", or Chinese equivalents for RMB funds.
299
+ - confidence should be "high — well-known fit", "medium — verify thesis/contact", or "low — only pursue if warm path exists". Even high confidence does not mean the institution is currently investing or will reply.
300
+ - fundTypeNotes: 3-6 notes explaining the fund-type trade-offs that matter for THIS case (e.g. RMB vs USD structure and exit implications, angels vs institutional at this check size, CVC strings attached, guidance fund localization requirements). Educational but case-specific.
301
+ - avoidNow: 2-5 investor types or behaviours to skip at this stage, each with the reason (wrong stage, wrong check size, misaligned mandate, predatory terms, time sinks).
302
+ - outreachPlaybook: 4-8 ordered, concrete actions covering material preparation, list building with the named channels, warm-intro mapping, cold outreach structure (subject line angle, 3-sentence body, follow-up cadence), and weekly pipeline hygiene. Actions must be executable this week.
303
+ - nextSteps: 3-6 immediate to-dos ranked by leverage, matched to the materials status in the brief.
304
+ - Honesty rules: this is an execution aid, not a verified live investor database. Present institutionTargets as candidates to verify, never as confirmed matches. If traction or materials are too thin for the chosen stage, say so directly in stageRead and reflect it in nextSteps.
305
+ - Length discipline: keep every list item tight. Target counts: 3 fitReasons, 2 unfitSignals and 3 whereToFind per group; 6-10 institutionTargets; 2 recentSignals, 3 contacts and 2 verificationQueries per institution; 4 fundTypeNotes; 3 avoidNow; 6 playbook actions; 4 nextSteps. Do not exceed these — actionability beats breadth.
306
+ - If the brief is thin or ambiguous, list what is missing in missingInfo; otherwise return an empty array.
307
+ - Set promptVersion to "direct-v2-institution-targets".`,
308
+ maxTokens: 10000,
309
+ },
310
+ resultSchema,
311
+ resultView: [
312
+ {
313
+ block: "keyValues",
314
+ title: { en: "How we read your raise", zh: "你的融资解读", "zh-tw": "你的募資解讀" },
315
+ items: [
316
+ { label: { en: "Positioning", zh: "项目定位", "zh-tw": "專案定位" }, path: "positioningRead" },
317
+ { label: { en: "Stage & check size", zh: "阶段与票额", "zh-tw": "階段與投資額度" }, path: "stageRead" },
318
+ { label: { en: "Capital route", zh: "资本路线", "zh-tw": "資本路線" }, path: "capitalRouteRead" },
319
+ ],
320
+ },
321
+ {
322
+ block: "cardList",
323
+ title: { en: "Ranked investor-type map", zh: "资方类型地图(按优先级)", "zh-tw": "投資人類型地圖(按優先順序)" },
324
+ path: "investorGroups",
325
+ layout: "stack",
326
+ card: {
327
+ titleField: "name",
328
+ metaField: "priority",
329
+ body: { field: "profile", label: { en: "Who they are", zh: "这类资方是谁", "zh-tw": "這類投資人是誰" } },
330
+ lists: [
331
+ { field: "fitReasons", label: { en: "Why they fit", zh: "为什么匹配", "zh-tw": "為什麼適合" } },
332
+ { field: "unfitSignals", label: { en: "When to skip", zh: "什么情况不适合", "zh-tw": "什麼情況不適合" } },
333
+ { field: "whereToFind", label: { en: "Where to find them", zh: "去哪里找", "zh-tw": "去哪裡找" } },
334
+ ],
335
+ footer: { field: "outreachMove", label: { en: "First move", zh: "第一步动作", "zh-tw": "第一步動作" } },
336
+ },
337
+ },
338
+ {
339
+ block: "cardList",
340
+ title: {
341
+ en: "Candidate institutions to verify and contact",
342
+ zh: "可查证并触达的候选机构",
343
+ "zh-tw": "可查證並聯絡的候選機構",
344
+ },
345
+ path: "institutionTargets",
346
+ layout: "stack",
347
+ card: {
348
+ titleField: "institutionName",
349
+ metaField: "confidence",
350
+ body: {
351
+ field: "fitReason",
352
+ label: { en: "Why this candidate", zh: "为什么值得查", "zh-tw": "為什麼值得查" },
353
+ },
354
+ lists: [
355
+ { field: "recentSignals", label: { en: "Recent signals to verify", zh: "近期动态/融资信号", "zh-tw": "近期動態/募資訊號" } },
356
+ { field: "contacts", label: { en: "Contact paths", zh: "联系方式与触达路径", "zh-tw": "聯絡方式與開發路徑" } },
357
+ { field: "verificationQueries", label: { en: "Verification searches", zh: "查证搜索语句", "zh-tw": "查證搜尋語句" } },
358
+ ],
359
+ footer: {
360
+ field: "outreachAngle",
361
+ label: { en: "Outreach angle", zh: "触达切入点", "zh-tw": "開發切入點" },
362
+ },
363
+ },
364
+ },
365
+ {
366
+ block: "bulletList",
367
+ title: { en: "Fund types, decoded for your case", zh: "基金类型要点(针对你的情况)", "zh-tw": "基金類型要點(針對你的情況)" },
368
+ path: "fundTypeNotes",
369
+ },
370
+ {
371
+ block: "bulletList",
372
+ title: { en: "Skip these for now", zh: "现阶段先避开", "zh-tw": "現階段先避開" },
373
+ path: "avoidNow",
374
+ tone: "risk",
375
+ },
376
+ {
377
+ block: "bulletList",
378
+ title: { en: "Outreach playbook", zh: "触达行动手册", "zh-tw": "開發行動手冊" },
379
+ path: "outreachPlaybook",
380
+ tone: "positive",
381
+ },
382
+ {
383
+ block: "bulletList",
384
+ title: { en: "Next steps", zh: "下一步", "zh-tw": "下一步" },
385
+ path: "nextSteps",
386
+ },
387
+ {
388
+ block: "bulletList",
389
+ title: { en: "Missing information", zh: "缺失资料", "zh-tw": "缺失資料" },
390
+ path: "missingInfo",
391
+ tone: "risk",
392
+ },
393
+ ],
394
+ widget: {
395
+ formTitle: { en: "Describe your raise", zh: "描述你的融资", "zh-tw": "描述你的募資" },
396
+ formHint: {
397
+ en: "Rough answers are fine — pick the \"not sure\" style option where needed and the plan will make the call for you.",
398
+ zh: "信息粗糙没关系——不确定的选项就选类似\u201c不确定\u201d的选项,报告会替你做判断。",
399
+ "zh-tw": "資料粗略沒關係——不確定的選項就選「不確定」,報告會替你做判斷。",
400
+ },
401
+ submitLabel: { en: "Build my investor target list", zh: "生成资方目标名单", "zh-tw": "生成投資人目標名單" },
402
+ resultTitle: { en: "Your investor target list and outreach plan", zh: "你的资方目标名单与触达计划", "zh-tw": "你的投資人目標名單與開發計畫" },
403
+ pendingTitle: { en: "Mapping your investors", zh: "正在生成资方地图", "zh-tw": "正在生成投資人地圖" },
404
+ pendingHint: {
405
+ en: "Usually takes 60-120 seconds. Ranking investor types, drafting candidate institutions, contact paths and your outreach plan.",
406
+ zh: "通常需要 60-120 秒。正在排序资方类型、生成候选机构、联系方式线索和触达计划。",
407
+ "zh-tw": "通常需要 60-120 秒。正在排序投資人類型、生成候選機構、聯絡方式線索和開發計畫。",
408
+ },
409
+ errorOverrides: {
410
+ submitFailed: {
411
+ title: {
412
+ en: "Planner generation failed",
413
+ zh: "生成计划失败",
414
+ "zh-tw": "生成計畫失敗",
415
+ },
416
+ body: {
417
+ en: "The direct generation service did not return a plan. Your input is preserved, so you can retry after the API recovers.",
418
+ zh: "直连生成服务没有返回计划。输入已保留,可在 API 恢复后重试。",
419
+ "zh-tw": "直連生成服務沒有返回計畫。輸入已保留,可在 API 恢復後重試。",
420
+ },
421
+ },
422
+ validation: {
423
+ title: { en: "Describe the brand first", zh: "请先描述项目", "zh-tw": "請先描述專案" },
424
+ body: {
425
+ en: "The plan is only as good as the input. Write what the product is, who pays, and where you are — test text produces advice that fits nobody.",
426
+ zh: "计划的质量取决于输入。写清产品是什么、谁付钱、进展到哪一步——测试文字只会得到对谁都不适用的建议。",
427
+ "zh-tw": "計畫的品質取決於輸入。寫清產品是什麼、誰付錢、進展到哪一步——測試文字只會得到對誰都不適用的建議。",
428
+ },
429
+ },
430
+ },
431
+ },
432
+ page: {
433
+ workspace: {
434
+ heading: {
435
+ en: "Stop guessing which investors to chase",
436
+ zh: "别再猜该找哪些投资人",
437
+ "zh-tw": "別再猜該找哪些投資人",
438
+ },
439
+ hint: {
440
+ en: "Fill in your brand, stage, raise target and capital route — rough is fine. You get a ranked investor-type map, concrete candidate institutions to verify, contact paths, fund-type trade-offs and an outreach playbook you can run this week. One click copies the whole plan as Markdown to hand to your co-founder, advisor or CRM.",
441
+ zh: "填写项目、阶段、目标融资额和资本路线——粗糙也没关系。你会得到按优先级排序的资方类型地图、可查证的候选机构、联系方式线索、基金类型取舍说明,以及本周就能执行的触达行动手册。整份计划可一键复制为 Markdown,直接交接给联创、顾问或放进 CRM。",
442
+ "zh-tw":
443
+ "填寫專案、階段、目標募資額和資本路線——粗略也沒關係。你會得到按優先順序排列的投資人類型地圖、可查證的候選機構、聯絡方式線索、基金類型取捨說明,以及本週就能執行的開發行動手冊。整份計畫可一鍵複製為 Markdown,直接交接給共同創辦人、顧問或放進 CRM。",
444
+ },
445
+ badge: { en: "Free, no sign-up", zh: "免费免注册", "zh-tw": "免費免註冊" },
446
+ },
447
+ sections: [
448
+ {
449
+ kind: "cards",
450
+ heading: {
451
+ en: "How to find investors with this planner: what you get",
452
+ zh: "这个资方匹配工具会给你什么",
453
+ "zh-tw": "這個投資人配對工具會給你什麼",
454
+ },
455
+ image: {
456
+ src: "/tools/investor-matching-planner-value.webp",
457
+ alt: {
458
+ en: "Investor targeting report with ranked groups, fit reasons and an outreach plan",
459
+ zh: "资方定位报告,展示排序分组、匹配理由和触达计划",
460
+ "zh-tw": "投資人定位報告,展示排序分組、適合理由和開發計畫",
461
+ },
462
+ },
463
+ items: [
464
+ {
465
+ title: { en: "A ranked investor-type map", zh: "排序的资方类型地图", "zh-tw": "排序的投資人類型地圖" },
466
+ body: {
467
+ en: "4-5 investor groups matched to your stage, check size, sector and region — prioritized as main focus, secondary and opportunistic, so you know where the first 20 hours go.",
468
+ zh: "4-5 组按阶段、票额、赛道和地区匹配的资方类型,分成主攻、次要和机会型——你清楚知道前 20 小时该花在哪。",
469
+ "zh-tw": "4-5 組按階段、投資額度、領域和地區篩選出的投資人類型,分成主攻、次要和機會型——你清楚知道前 20 小時該花在哪。",
470
+ },
471
+ },
472
+ {
473
+ title: { en: "Why they fit — and why they don't", zh: "匹配理由和排除信号", "zh-tw": "適合理由和排除訊號" },
474
+ body: {
475
+ en: "Every group comes with case-specific fit reasons plus the rejection triggers and mandate mismatches that mean you should skip them. Fewer dead-end conversations.",
476
+ zh: "每组资方都附上针对你项目的匹配理由,以及会被拒绝的信号和主题错配点——减少注定没结果的沟通。",
477
+ "zh-tw": "每組投資人都附上針對你專案的適合理由,以及會被拒絕的訊號和主題錯配點——減少注定沒結果的溝通。",
478
+ },
479
+ },
480
+ {
481
+ title: { en: "The right venture capital database per group", zh: "每组对应的真实查找渠道", "zh-tw": "每組對應的真實查找管道" },
482
+ body: {
483
+ en: "Each group points to the venture capital database or startup investor directory where it actually lives — OpenVC, VC Sheet, Crunchbase, LinkedIn filters, IT桔子 and more — with search hints.",
484
+ zh: "每组指向可验证的名单来源——OpenVC、VC Sheet、Crunchbase、LinkedIn 筛选、IT桔子等——并附上检索提示。",
485
+ "zh-tw": "每組指向可驗證的名單來源——OpenVC、VC Sheet、Crunchbase、LinkedIn 篩選、IT桔子等——並附上搜尋提示。",
486
+ },
487
+ },
488
+ {
489
+ title: { en: "Candidate institutions and contact paths", zh: "候选机构和联系路径", "zh-tw": "候選機構和聯絡路徑" },
490
+ body: {
491
+ en: "For every priority direction, the result now drafts candidate institutions to verify, recent signals to check, contact routes, X/Twitter or LinkedIn search paths, and the outreach angle to use.",
492
+ zh: "针对每个优先方向,结果会直接给出待查证的候选机构、需要核实的近期动态、联系方式线索、X/Twitter 或 LinkedIn 搜索路径,以及外联切入点。",
493
+ "zh-tw": "針對每個優先方向,結果會直接給出待查證的候選機構、需要核實的近期動態、聯絡方式線索、X/Twitter 或 LinkedIn 搜尋路徑,以及開發切入點。",
494
+ },
495
+ },
496
+ {
497
+ title: { en: "Fund types explained for your case", zh: "针对你情况的基金类型说明", "zh-tw": "針對你情況的基金類型說明" },
498
+ body: {
499
+ en: "RMB vs USD structure, angels vs institutions, CVC strings attached, guidance-fund requirements — decoded against your actual brand instead of a generic glossary.",
500
+ zh: "人民币与美元结构、天使与机构、CVC 的附加条件、引导基金的落地要求——结合你的项目解释取舍,而不是一份通用名词表。",
501
+ "zh-tw": "人民幣與美元結構、天使與機構、CVC 的附加條件、引導基金的在地要求——結合你的專案解釋取捨,而不是一份通用名詞表。",
502
+ },
503
+ },
504
+ {
505
+ title: { en: "An outreach playbook", zh: "触达行动手册", "zh-tw": "開發行動手冊" },
506
+ body: {
507
+ en: "Ordered actions for this week: material prep, list building, warm-intro mapping, cold email structure and follow-up cadence — matched to whether you have intros or are starting cold.",
508
+ zh: "本周可执行的顺序动作:材料准备、名单搭建、引荐关系梳理、冷邮件结构和跟进节奏——按你有无人脉分别给路径。",
509
+ "zh-tw": "本週可執行的順序動作:材料準備、名單搭建、引薦關係梳理、陌生開發信結構和跟進節奏——按你有無人脈分別給路徑。",
510
+ },
511
+ },
512
+ ],
513
+ },
514
+ {
515
+ kind: "cards",
516
+ heading: {
517
+ en: "Fund types in plain language",
518
+ zh: "基金类型速览",
519
+ "zh-tw": "基金類型速覽",
520
+ },
521
+ intro: {
522
+ en: "The capital world sorts into a few archetypes. Knowing which game each one plays is half of targeting.",
523
+ zh: "资本世界大致分为几种原型。知道每种资方在玩什么游戏,瞄准就完成了一半。",
524
+ "zh-tw": "資本世界大致分為幾種原型。知道每種投資人在玩什麼遊戲,瞄準就完成了一半。",
525
+ },
526
+ image: {
527
+ src: "/tools/investor-matching-planner-types.webp",
528
+ alt: {
529
+ en: "Map of fund archetypes: angels, VC funds, CVC, family offices and accelerators",
530
+ zh: "基金原型地图:天使、VC、CVC、家办与加速器",
531
+ "zh-tw": "基金原型地圖:天使、創投、CVC、家辦與加速器",
532
+ },
533
+ },
534
+ items: [
535
+ {
536
+ title: { en: "RMB funds", zh: "人民币基金", "zh-tw": "人民幣基金" },
537
+ body: {
538
+ en: "Raise and invest in RMB, prefer China-registered structures, clearer paths to domestic exits. Often tied to LPs with policy or industry agendas — decisive if your market and revenue are in China.",
539
+ zh: "以人民币募资和投资,偏好境内结构,退出路径以境内为主。LP 常带政策或产业诉求——如果你的市场和收入都在国内,这是主路线。",
540
+ "zh-tw": "以人民幣募資和投資,偏好境內結構,退出路徑以境內為主。LP 常帶政策或產業訴求——如果你的市場和營收都在中國大陸,這是主路線。",
541
+ },
542
+ },
543
+ {
544
+ title: { en: "USD funds", zh: "美元基金", "zh-tw": "美元基金" },
545
+ body: {
546
+ en: "Invest via offshore structures (Cayman/BVI + VIE or ODI), target global markets and overseas listings. Fit if your users, revenue or team are international — but expect structure work before money moves.",
547
+ zh: "通过离岸结构(开曼/BVI + VIE 或 ODI)投资,看全球市场和海外上市退出。用户、收入或团队国际化时匹配——但打款前先过结构关。",
548
+ "zh-tw": "透過離岸結構(開曼/BVI + VIE 或 ODI)投資,看全球市場和海外上市退出。使用者、營收或團隊國際化時適合——但撥款前先過結構關。",
549
+ },
550
+ },
551
+ {
552
+ title: { en: "Angels & angel syndicates", zh: "天使投资人与天使团", "zh-tw": "天使投資人與天使團" },
553
+ body: {
554
+ en: "Individuals writing small, fast checks on founder conviction. The realistic first money at idea/prototype stage — usually reached through people, products and communities, not cold databases.",
555
+ zh: "个人出资、金额小、决策快,赌的是创始人。想法/原型阶段最现实的第一笔钱——通常靠人、产品和社群触达,而不是冷冰冰的数据库。",
556
+ "zh-tw": "個人出資、金額小、決策快,賭的是創辦人。想法/原型階段最現實的第一筆錢——通常靠人、產品和社群開發,而不是冷冰冰的資料庫。",
557
+ },
558
+ },
559
+ {
560
+ title: { en: "CVC / strategic investors", zh: "CVC / 战略投资", "zh-tw": "CVC / 策略投資" },
561
+ body: {
562
+ en: "Corporate money with a strategic agenda: ecosystem, supply chain or product synergy. Can bring channels and credibility — and strings: exclusivity asks, information rights, slower process.",
563
+ zh: "带战略诉求的产业资本:生态、供应链或产品协同。能带渠道和背书——也带附加条件:排他要求、信息权、更慢的流程。",
564
+ "zh-tw": "帶策略訴求的產業資本:生態、供應鏈或產品協同。能帶通路和背書——也帶附加條件:排他要求、資訊取得權、更慢的流程。",
565
+ },
566
+ },
567
+ {
568
+ title: { en: "Government guidance funds", zh: "政府引导基金", "zh-tw": "政府引導基金" },
569
+ body: {
570
+ en: "Policy-driven capital, usually via sub-funds, with localization expectations: registration, jobs or industry fit in the region. Cheap-looking money with real geographic commitments.",
571
+ zh: "政策驱动的资本,多通过子基金出资,带落地要求:注册地、就业或产业契合。看起来便宜的钱,背后是实打实的属地承诺。",
572
+ "zh-tw": "政策驅動的資本,多透過子基金出資,帶在地要求:註冊地、就業或產業契合。看起來便宜的錢,背後是實打實的屬地承諾。",
573
+ },
574
+ },
575
+ {
576
+ title: { en: "Accelerators & family offices", zh: "加速器与家族办公室", "zh-tw": "加速器與家族辦公室" },
577
+ body: {
578
+ en: "Accelerators trade small checks for structure, demo days and networks — great when you lack access. Family offices write flexible checks but are private and referral-driven by nature.",
579
+ zh: "加速器用小额投资换取节奏、Demo Day 和人脉网络——缺资源时很值。家办出资灵活,但天然低调、靠引荐进入。",
580
+ "zh-tw": "加速器用小額投資換取節奏、Demo Day 和人脈網路——缺資源時很值。家辦出資靈活,但天然低調、靠引薦進入。",
581
+ },
582
+ },
583
+ ],
584
+ },
585
+ {
586
+ kind: "bullets",
587
+ heading: {
588
+ en: "How the matching logic works",
589
+ zh: "匹配逻辑是怎么算的",
590
+ "zh-tw": "配對邏輯是怎麼算的",
591
+ },
592
+ groups: [
593
+ {
594
+ items: {
595
+ en: [
596
+ "Stage and check size first: a $500k raise doesn't belong at funds writing $5M checks, and revenue-stage companies waste time with idea-stage angels.",
597
+ "Capital route second: your market, revenue currency and exit path decide RMB vs USD vs mixed — this cut alone removes half the map.",
598
+ "Sector and thesis fit: investors buy into theses; the plan matches your tags against the investor types that actively look for them.",
599
+ "Traction reality check: what you can prove today decides who takes the meeting — the plan is honest when your stage and target don't line up.",
600
+ "Network-aware routing: with warm intros available the plan leads with mapping them; starting cold it leads with communities, content and structured cold outreach.",
601
+ ],
602
+ zh: [
603
+ "先看阶段和票额:融 300 万的项目不该去敲单笔 5000 万的基金,有收入的公司也别浪费时间在只投想法期的天使身上。",
604
+ "再看资本路线:市场、收入币种和退出路径决定人民币、美元还是混合——这一刀就能砍掉一半地图。",
605
+ "赛道与投资主题匹配:投资人买的是主题,报告会把你的标签对到正在主动找这类项目的资方类型上。",
606
+ "牵引力现实校验:今天能证明什么决定谁愿意见你——阶段和目标对不上时,报告会直说。",
607
+ "按人脉分路径:有引荐先梳理引荐网络;冷启动则从社群、内容和结构化冷触达开始。",
608
+ ],
609
+ "zh-tw": [
610
+ "先看階段和投資額度:募 50 萬美元的專案不該去敲單筆 500 萬美元的基金,有營收的公司也別浪費時間在只投想法期的天使身上。",
611
+ "再看資本路線:市場、營收幣種和退出路徑決定人民幣、美元還是混合——這一刀就能砍掉一半地圖。",
612
+ "領域與投資主題契合:投資人買的是主題,報告會把你的標籤對到正在主動找這類專案的投資人類型上。",
613
+ "牽引力現實校驗:今天能證明什麼決定誰願意見你——階段和目標對不上時,報告會直說。",
614
+ "按人脈分路徑:有引薦先梳理引薦網路;冷啟動則從社群、內容和結構化陌生開發開始。",
615
+ ],
616
+ },
617
+ },
618
+ ],
619
+ },
620
+ {
621
+ kind: "bullets",
622
+ heading: {
623
+ en: "How to find venture capitalists and angels: outreach paths ranked by reply rate",
624
+ zh: "触达路径怎么选",
625
+ "zh-tw": "開發路徑怎麼選",
626
+ },
627
+ image: {
628
+ src: "/tools/investor-matching-planner-outreach.webp",
629
+ alt: {
630
+ en: "Founder mapping outreach paths: warm intros, founder referrals, cold email and events",
631
+ zh: "创始人梳理触达路径:引荐、被投创始人、冷邮件和活动",
632
+ "zh-tw": "創辦人梳理開發路徑:引薦、被投創辦人、陌生開發信和活動",
633
+ },
634
+ },
635
+ groups: [
636
+ {
637
+ items: {
638
+ en: [
639
+ "Warm intros beat everything: an introduction from someone the investor trusts multiplies reply rates — map second-degree connections before writing any cold email.",
640
+ "Portfolio founders are the underrated path: founders an investor already backed can refer you in, and they answer DMs more often than partners do.",
641
+ "Cold email works when it's specific: reference why THIS fund (thesis, portfolio, recent posts), pitch in 3 sentences, ask for 20 minutes — then follow up twice, spaced days apart.",
642
+ "LinkedIn and X are for warming, not closing: engage with an investor's content before the ask so your name isn't cold when the email lands.",
643
+ "Events and demo days compress trust-building — one good in-person conversation can replace weeks of email threads.",
644
+ "Track everything in a simple pipeline: who, group, path, last touch, next action. Fundraising is a sales process, and untracked pipelines leak.",
645
+ ],
646
+ zh: [
647
+ "引荐胜过一切:由投资人信任的人介绍,回复率成倍提升——写任何冷邮件之前,先把二度人脉盘一遍。",
648
+ "被投创始人是被低估的路径:投资人已投的创始人可以内推你,而且他们回私信的概率比合伙人高得多。",
649
+ "冷邮件的关键是具体:说清为什么是这家基金(主题、组合、最近的观点),三句话讲完项目,只约 20 分钟——之后隔几天跟进两次。",
650
+ "LinkedIn 和 X 用来预热,不用来成交:先和投资人的内容互动,等邮件到达时你已不是陌生名字。",
651
+ "活动和 Demo Day 能压缩信任建立过程——一次高质量的当面交流抵得上几周的邮件往返。",
652
+ "用简单的管道表跟踪一切:对象、分组、路径、上次接触、下一步动作。融资就是销售流程,不跟踪的管道必然漏水。",
653
+ ],
654
+ "zh-tw": [
655
+ "引薦勝過一切:由投資人信任的人介紹,回覆率成倍提升——寫任何陌生開發信之前,先把二度人脈盤一遍。",
656
+ "被投創辦人是被低估的路徑:投資人已投的創辦人可以內推你,而且他們回私訊的機率比合夥人高得多。",
657
+ "陌生開發信的關鍵是具體:說清為什麼是這家基金(主題、投資組合、最近的觀點),三句話講完專案,只約 20 分鐘——之後隔幾天跟進兩次。",
658
+ "LinkedIn 和 X 用來預熱,不用來成交:先和投資人的內容互動,等信件到達時你已不是陌生名字。",
659
+ "活動和 Demo Day 能壓縮信任建立過程——一次高品質的當面交流抵得上幾週的信件往返。",
660
+ "用簡單的管道表追蹤一切:對象、分組、路徑、上次接觸、下一步動作。募資就是銷售流程,不追蹤的管道必然漏水。",
661
+ ],
662
+ },
663
+ },
664
+ ],
665
+ },
666
+ {
667
+ kind: "bullets",
668
+ heading: {
669
+ en: "When to use this planner",
670
+ zh: "适用场景",
671
+ "zh-tw": "適用場景",
672
+ },
673
+ groups: [
674
+ {
675
+ items: {
676
+ en: [
677
+ "You're preparing a pre-seed, seed or Series A raise and don't know which investors to shortlist first.",
678
+ "You're stuck between RMB funds, USD funds, angels and strategic money and need the trade-offs explained against your own case.",
679
+ "You have a deck ready but no idea who to send it to — or how to reach them without spamming.",
680
+ "You've been cold-emailing broadly with no replies and suspect a targeting problem, not a pitch problem.",
681
+ "You want a structured plan to hand your co-founder or advisor before spending money on databases or an FA.",
682
+ ],
683
+ zh: [
684
+ "你在准备种子前、种子轮或 A 轮融资,不知道第一批该锁定哪些资方。",
685
+ "你在人民币基金、美元基金、天使和战略资本之间摇摆,需要有人结合你的情况讲清取舍。",
686
+ "你的 BP 已经准备好,但不知道该发给谁、怎么联系才不像群发骚扰。",
687
+ "你已经广撒网发了很多冷邮件但没有回复,怀疑问题出在瞄准而不是讲述。",
688
+ "你想在花钱买数据库或请 FA 之前,先拿到一份可以和联创、顾问对齐的结构化计划。",
689
+ ],
690
+ "zh-tw": [
691
+ "你在準備種子前、種子輪或 A 輪募資,不知道第一批該鎖定哪些投資人。",
692
+ "你在人民幣基金、美元基金、天使和策略資本之間搖擺,需要有人結合你的情況講清取捨。",
693
+ "你的簡報已經準備好,但不知道該發給誰、怎麼聯絡才不像群發騷擾。",
694
+ "你已經廣撒網發了很多陌生開發信但沒有回覆,懷疑問題出在瞄準而不是講述。",
695
+ "你想在花錢買資料庫或請 FA 之前,先拿到一份可以和共同創辦人、顧問對齊的結構化計畫。",
696
+ ],
697
+ },
698
+ },
699
+ ],
700
+ },
701
+ {
702
+ kind: "bullets",
703
+ heading: {
704
+ en: "What this tool won't pretend to do",
705
+ zh: "能力边界:这个工具不假装做什么",
706
+ "zh-tw": "能力邊界:這個工具不假裝做什麼",
707
+ },
708
+ image: {
709
+ src: "/tools/investor-matching-planner-standard.webp",
710
+ alt: {
711
+ en: "Boundary markers around an investor plan: verify contacts, no guarantees, plan not database",
712
+ zh: "资方计划的边界标识:需验证联系方式、不承诺结果、是计划不是数据库",
713
+ "zh-tw": "投資人計畫的邊界標示:需驗證聯絡方式、不承諾結果、是計畫不是資料庫",
714
+ },
715
+ },
716
+ groups: [
717
+ {
718
+ items: {
719
+ en: [
720
+ "It is not a live investor database: it gives you candidate institutions, contact paths and verification searches, but you still verify the actual data before outreach.",
721
+ "It never presents specific funds or partners as vetted matches — every institution target is a lead to check, not a guaranteed fit.",
722
+ "It does not promise replies, meetings or funding probability; no honest tool can.",
723
+ "It is not legal, tax or structuring advice — RMB/USD structure decisions ultimately need professional counsel.",
724
+ "If your inputs are too thin to plan against, the report says what's missing instead of inventing a story.",
725
+ ],
726
+ zh: [
727
+ "它不是实时资方数据库:会给候选机构、联系方式线索和查证搜索语句,但触达前仍要验证真实数据。",
728
+ "它不会把任何具体基金或合伙人包装成\u201c已验证匹配\u201d——每个机构目标都是待查证线索,不是保证适配。",
729
+ "它不承诺回复、约见或获投概率;任何诚实的工具都做不到。",
730
+ "它不是法律、税务或架构建议——人民币/美元结构的最终决定需要专业人士参与。",
731
+ "如果你的输入太单薄不足以规划,报告会直接指出缺什么,而不是编一个故事。",
732
+ ],
733
+ "zh-tw": [
734
+ "它不是即時投資人資料庫:會給候選機構、聯絡方式線索和查證搜尋語句,但聯絡前仍要驗證真實資料。",
735
+ "它不會把任何具體基金或合夥人包裝成「已驗證匹配」——每個機構目標都是待查證線索,不是保證適配。",
736
+ "它不承諾回覆、約見或獲投機率;任何誠實的工具都做不到。",
737
+ "它不是法律、稅務或架構建議——人民幣/美元結構的最終決定需要專業人士參與。",
738
+ "如果你的輸入太單薄不足以規劃,報告會直接指出缺什麼,而不是編一個故事。",
739
+ ],
740
+ },
741
+ },
742
+ ],
743
+ },
744
+ ],
745
+ faq: [
746
+ {
747
+ question: {
748
+ en: "Will it give me actual institutions and contact paths?",
749
+ zh: "它会直接给我具体机构和联系方式吗?",
750
+ "zh-tw": "它會直接給我具體機構和聯絡方式嗎?",
751
+ },
752
+ answer: {
753
+ en: "Yes, but as candidate leads to verify. The result includes institution names, why each may fit, recent signals to check, official/contact-page routes, LinkedIn or X/Twitter search paths, portfolio-founder referral angles and copy-paste verification searches. It does not claim those contacts are current or guaranteed to reply.",
754
+ zh: "会,但会以\u201c待查证候选线索\u201d呈现。结果会包含机构名、为什么可能匹配、需要核实的近期动态、官网/联系页路径、LinkedIn 或 X/Twitter 搜索路径、被投创始人引荐角度和可复制的查证搜索语句。它不会声称这些联系方式一定最新,也不会保证回复。",
755
+ "zh-tw": "會,但會以「待查證候選線索」呈現。結果會包含機構名、為什麼可能適合、需要核實的近期動態、官網/聯絡頁路徑、LinkedIn 或 X/Twitter 搜尋路徑、被投創辦人引薦角度和可複製的查證搜尋語句。它不會聲稱這些聯絡方式一定最新,也不會保證回覆。",
756
+ },
757
+ },
758
+ {
759
+ question: {
760
+ en: "How do I choose between RMB and USD funds?",
761
+ zh: "人民币基金和美元基金怎么选?",
762
+ "zh-tw": "人民幣基金和美元基金怎麼選?",
763
+ },
764
+ answer: {
765
+ en: "The short version: where are your market, revenue currency and exit? China-market, RMB-revenue businesses usually route RMB; global products with overseas users lean USD (with offshore structure work). The report makes this call explicitly for your case and explains the structural consequences — and flags when you should keep both routes open.",
766
+ zh: "简版判断:你的市场、收入币种和退出路径在哪?主打国内市场、人民币收入的业务通常走人民币路线;面向全球用户的产品偏美元(需要搭离岸结构)。报告会针对你的情况明确给出判断并解释结构后果——该两条路都留时也会说明。",
767
+ "zh-tw": "簡版判斷:你的市場、營收幣種和退出路徑在哪?主打中國大陸市場、人民幣營收的業務通常走人民幣路線;面向全球使用者的產品偏美元(需要搭離岸結構)。報告會針對你的情況明確給出判斷並解釋結構後果——該兩條路都留時也會說明。",
768
+ },
769
+ },
770
+ {
771
+ question: {
772
+ en: "How do I find investors when I have no connections?",
773
+ zh: "没有人脉怎么找到并联系投资人?",
774
+ "zh-tw": "沒有人脈怎麼找到並聯絡投資人?",
775
+ },
776
+ answer: {
777
+ en: "Cold start is normal — the plan routes around it. Priorities shift toward angels and accelerators reachable through products and communities, portfolio-founder referrals, and specific cold-email structure: why this fund, three sentences, one small ask, two follow-ups. Tell the form you're starting cold and the playbook adapts.",
778
+ zh: "冷启动很常见,计划会绕开这个短板:优先级会转向能通过产品和社群触达的天使与加速器、被投创始人内推,以及具体的冷邮件结构——为什么是这家基金、三句话、一个小请求、两次跟进。在表单里选\u201c冷启动\u201d,行动手册会相应调整。",
779
+ "zh-tw": "冷啟動很常見,計畫會繞開這個短板:優先順序會轉向能透過產品和社群接觸到的天使與加速器、被投創辦人內推,以及具體的陌生開發信結構——為什麼是這家基金、三句話、一個小請求、兩次跟進。在表單裡選「冷啟動」,行動手冊會相應調整。",
780
+ },
781
+ },
782
+ {
783
+ question: {
784
+ en: "How do I find angel investors specifically?",
785
+ zh: "天使投资人具体去哪找?",
786
+ "zh-tw": "天使投資人具體去哪找?",
787
+ },
788
+ answer: {
789
+ en: "Angels rarely sit in databases waiting for cold email — they invest through people and products. The highest-yield places: founder communities and accelerator demo days, AngelList and OpenVC angel filters, operators at companies your product serves, and founders who recently exited in your sector. If angels rank high in your plan, the playbook lists which of these to work first.",
790
+ zh: "天使很少待在数据库里等冷邮件——他们通过人和产品做投资。产出最高的入口:创业者社群和加速器 Demo Day、AngelList 和 OpenVC 的天使筛选、你产品所服务行业里的资深从业者,以及你赛道里刚退出的创始人。如果天使在你的计划里排位靠前,行动手册会告诉你先从哪个入口下手。",
791
+ "zh-tw": "天使很少待在資料庫裡等陌生開發信——他們透過人和產品做投資。產出最高的入口:創業者社群和加速器 Demo Day、AngelList 和 OpenVC 的天使篩選、你產品所服務行業裡的資深從業者,以及你領域裡剛成功出場的創辦人。如果天使在你的計畫裡排位靠前,行動手冊會告訴你先從哪個入口下手。",
792
+ },
793
+ },
794
+ {
795
+ question: {
796
+ en: "How do I find venture capitalists, not just angels?",
797
+ zh: "想找 VC 机构而不只是天使,该怎么找?",
798
+ "zh-tw": "想找創投機構而不只是天使,該怎麼找?",
799
+ },
800
+ answer: {
801
+ en: "How to get venture capital starts with qualifying yourself honestly: most VC funds need a scalable market, evidence of repeatable growth and a check size that fits their fund math. The report tells you whether VC firms belong in your current plan at all — and if yes, which thesis-matched subset to filter for in OpenVC, VC Sheet or Crunchbase, instead of the whole list of vc firms.",
802
+ zh: "想拿 VC 的钱,先诚实地给自己做资格判断:多数 VC 基金需要可规模化的市场、可复制的增长证据,以及和基金体量匹配的票额。报告会告诉你 VC 现在到底该不该进你的计划——如果该,去 OpenVC、VC Sheet 或 Crunchbase 里按什么主题筛选,而不是对着全量 VC 名单硬扫。",
803
+ "zh-tw": "想拿創投的錢,先誠實地給自己做資格判斷:多數創投基金需要可規模化的市場、可複製的成長證據,以及和基金規模相符的投資額度。報告會告訴你創投現在到底該不該進你的計畫——如果該,去 OpenVC、VC Sheet 或 Crunchbase 裡按什麼主題篩選,而不是對著全量創投名單硬掃。",
804
+ },
805
+ },
806
+ {
807
+ question: {
808
+ en: "Can this replace an FA or fundraising advisor?",
809
+ zh: "它能代替 FA 或融资顾问吗?",
810
+ "zh-tw": "它能代替 FA 或募資顧問嗎?",
811
+ },
812
+ answer: {
813
+ en: "For early rounds it replaces the first thing you'd pay them for: knowing who to target and how to reach out. It doesn't negotiate terms, run your process, or make introductions. Copy the plan as Markdown to decide whether you still need an FA at all — or to brief one efficiently.",
814
+ zh: "在早期轮次,它能替代你付费给 FA 的第一件事:搞清该找谁、怎么触达。它不谈条款、不代跑流程、不做引荐。把计划复制成 Markdown,用来判断自己到底还需不需要 FA——或者用它高效地给 FA 交代背景。",
815
+ "zh-tw": "在早期輪次,它能替代你付費給 FA 的第一件事:搞清該找誰、怎麼開發。它不談條款、不代跑流程、不做引薦。把計畫複製成 Markdown,用來判斷自己到底還需不需要 FA——或者用它高效地給 FA 交代背景。",
816
+ },
817
+ },
818
+ {
819
+ question: {
820
+ en: "What if I'm not sure about my stage or capital route?",
821
+ zh: "我连自己的阶段和资本路线都不确定怎么办?",
822
+ "zh-tw": "我連自己的階段和資本路線都不確定怎麼辦?",
823
+ },
824
+ answer: {
825
+ en: "Pick \"not sure\" — that's what it's for. The report reads your traction and raise target, makes the stage and route call for you with reasoning, and tells you when your target amount doesn't match what you can currently prove.",
826
+ zh: "直接选\u201c不确定\u201d——这个选项就是为此设计的。报告会根据你的进展和目标金额替你判断阶段和路线并给出理由,目标金额和当前能证明的东西对不上时也会直接指出。",
827
+ "zh-tw": "直接選「不確定」——這個選項就是為此設計的。報告會根據你的進展和目標金額替你判斷階段和路線並給出理由,目標金額和目前能證明的東西對不上時也會直接指出。",
828
+ },
829
+ },
830
+ {
831
+ question: {
832
+ en: "Is my brand information stored or shared?",
833
+ zh: "我的项目信息会被保存或共享吗?",
834
+ "zh-tw": "我的專案資料會被儲存或共享嗎?",
835
+ },
836
+ answer: {
837
+ en: "Your inputs are sent to the model once to generate this report and are not published anywhere. Still, avoid pasting unreleased financials or secrets you wouldn't put in a first email to an investor.",
838
+ zh: "你的输入只用于本次生成报告,不会被公开发布。但仍建议不要粘贴未公开的财务数据或你不会写进给投资人第一封邮件里的机密。",
839
+ "zh-tw": "你的輸入只用於本次生成報告,不會被公開發布。但仍建議不要貼上未公開的財務數據或你不會寫進給投資人第一封信裡的機密。",
840
+ },
841
+ },
842
+ ],
843
+ cta: {
844
+ hint: {
845
+ en: "Once your targeting plan is ready, tighten your one-liner and brand story before the first outreach — Tomako's naming and slogan tools cover that next step.",
846
+ zh: "定位计划确定后,先把一句话介绍和品牌故事打磨好再开始触达——Tomako 的命名和 Slogan 工具正好接住这一步。",
847
+ "zh-tw": "定位計畫確定後,先把一句話介紹和品牌故事打磨好再開始開發——Tomako 的命名和 Slogan 工具正好接住這一步。",
848
+ },
849
+ primary: {
850
+ href: "/tools/slogan-generator",
851
+ label: { en: "Polish your one-liner", zh: "去打磨一句话介绍", "zh-tw": "去打磨一句話介紹" },
852
+ },
853
+ secondary: {
854
+ href: "/tools",
855
+ label: { en: "Back to all tools", zh: "返回全部工具", "zh-tw": "返回全部工具" },
856
+ },
857
+ },
858
+ },
859
+ assets: {
860
+ hero: {
861
+ src: "/tools/investor-matching-planner-hero.webp",
862
+ alt: {
863
+ en: "Founder looking at a ranked map of investor types with outreach paths",
864
+ zh: "创始人查看按优先级排序的资方类型地图与触达路径",
865
+ "zh-tw": "創辦人查看按優先順序排列的投資人類型地圖與開發路徑",
866
+ },
867
+ },
868
+ },
869
+ };