create-ailk 0.1.0 → 0.1.1

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 (605) hide show
  1. package/README.md +124 -3
  2. package/component-catalog.md +295 -0
  3. package/dist/cli.js +92 -16
  4. package/dist/component-catalog.d.ts +11 -0
  5. package/dist/component-catalog.js +39 -0
  6. package/dist/copy.d.ts +7 -0
  7. package/dist/copy.js +24 -0
  8. package/dist/derive-architecture.d.ts +13 -0
  9. package/dist/derive-architecture.js +238 -0
  10. package/dist/index.d.ts +7 -2
  11. package/dist/index.js +19 -2
  12. package/dist/lib/extract-module-bundle.d.ts +16 -0
  13. package/dist/lib/extract-module-bundle.js +184 -0
  14. package/dist/lib/fetch-module.d.ts +55 -0
  15. package/dist/lib/fetch-module.js +125 -0
  16. package/dist/lib/module-license-gate.d.ts +48 -0
  17. package/dist/lib/module-license-gate.js +67 -0
  18. package/dist/lib/module-tier.d.ts +35 -0
  19. package/dist/lib/module-tier.js +37 -0
  20. package/dist/module-architecture.d.ts +175 -0
  21. package/dist/module-architecture.js +663 -0
  22. package/dist/parse-args.d.ts +47 -1
  23. package/dist/parse-args.js +143 -2
  24. package/dist/programmatic.d.ts +160 -3
  25. package/dist/programmatic.js +196 -7
  26. package/dist/surfaces.d.ts +211 -0
  27. package/dist/surfaces.js +532 -0
  28. package/dist/sync-routes.d.ts +92 -0
  29. package/dist/sync-routes.js +350 -0
  30. package/package.json +22 -14
  31. package/templates/.claude/rules/architecture.md +6 -2
  32. package/templates/.claude/skills/README.md +9 -9
  33. package/templates/.claude/skills/add-schema/SKILL.md +14 -7
  34. package/templates/.claude/skills/add-schema/references/schema-types.md +109 -6
  35. package/templates/.claude/skills/provision-config/SKILL.md +1 -1
  36. package/templates/.claude/skills/scaffold-commerce/SKILL.md +498 -1
  37. package/templates/.claude/skills/scaffold-commerce/templates/checkout-route.template.ts +370 -0
  38. package/templates/.claude/skills/scaffold-commerce/templates/invoice-route.template.ts +376 -0
  39. package/templates/.claude/skills/scaffold-commerce/templates/payment-link-route.template.ts +471 -0
  40. package/templates/.claude/skills/scaffold-commerce/templates/portal-route.template.ts +365 -0
  41. package/templates/.claude/skills/scaffold-commerce/templates/stripe-config.template.ts +60 -0
  42. package/templates/.claude/skills/scaffold-commerce/templates/subscription-route.template.ts +446 -0
  43. package/templates/.claude/skills/suggest-site-pages/references/categories.md +4 -4
  44. package/templates/.env.example +126 -2
  45. package/templates/CLAUDE.md +11 -5
  46. package/templates/README.md +1 -1
  47. package/templates/apps/api/.env.example +38 -0
  48. package/templates/apps/api/CLAUDE.md +75 -1
  49. package/templates/apps/api/LICENSE +201 -0
  50. package/templates/apps/api/api/index.ts +6 -141
  51. package/templates/apps/api/jest.config.cjs +16 -0
  52. package/templates/apps/api/package.json +22 -6
  53. package/templates/apps/api/src/__tests__/module-exclusion.test.ts +141 -0
  54. package/templates/apps/api/src/__tests__/server.test.ts +46 -0
  55. package/templates/apps/api/src/__tests__/vercel-handler.test.ts +211 -0
  56. package/templates/apps/api/src/bin/abandon-sweep.ts +42 -0
  57. package/templates/apps/api/src/bin/deliverable-resend.ts +144 -0
  58. package/templates/apps/api/src/bin/deliverable-upload.ts +114 -0
  59. package/templates/apps/api/src/bin/followup-sweep.ts +44 -0
  60. package/templates/apps/api/src/bin/listing-csv-sweep.ts +46 -0
  61. package/templates/apps/api/src/bin/seed-presets.ts +58 -0
  62. package/templates/apps/api/src/bin/seed-waitlist-experiments.ts +104 -0
  63. package/templates/apps/api/src/bin/session-retention-sweep.ts +46 -0
  64. package/templates/apps/api/src/cli.ts +5 -11
  65. package/templates/apps/api/src/config/index.ts +35 -0
  66. package/templates/apps/api/src/config/modules.ts +43 -0
  67. package/templates/apps/api/src/lib/__mocks__/prisma-client.js +11 -0
  68. package/templates/apps/api/src/lib/__mocks__/prisma.ts +231 -0
  69. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +2 -2
  70. package/templates/apps/api/src/lib/site.ts +16 -0
  71. package/templates/apps/api/src/lib/stripe.ts +22 -0
  72. package/templates/apps/api/src/lib/tenant-db.ts +225 -0
  73. package/templates/apps/api/src/lib/ws-token.ts +91 -0
  74. package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +7 -1
  75. package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +7 -1
  76. package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +91 -4
  77. package/templates/apps/api/src/middleware/auth.ts +43 -8
  78. package/templates/apps/api/src/middleware/rate-limit.ts +78 -3
  79. package/templates/apps/api/src/middleware/tenant.ts +99 -0
  80. package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +92 -0
  81. package/templates/apps/api/src/openapi/spec.ts +312 -3
  82. package/templates/apps/api/src/routes/aeo/__tests__/index.test.ts +175 -0
  83. package/templates/apps/api/src/routes/aeo/index.ts +107 -0
  84. package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +5 -2
  85. package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +22 -3
  86. package/templates/apps/api/src/routes/auth/tokens.ts +13 -1
  87. package/templates/apps/api/src/routes/billing/__tests__/portal.test.ts +450 -0
  88. package/templates/apps/api/src/routes/billing/__tests__/read.test.ts +262 -0
  89. package/templates/apps/api/src/routes/billing/__tests__/usage.test.ts +436 -0
  90. package/templates/apps/api/src/routes/billing/index.ts +36 -0
  91. package/templates/apps/api/src/routes/billing/portal.ts +182 -0
  92. package/templates/apps/api/src/routes/billing/read.ts +75 -0
  93. package/templates/apps/api/src/routes/billing/usage.ts +153 -0
  94. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +99 -0
  95. package/templates/apps/api/src/routes/checkout/sessions.ts +20 -8
  96. package/templates/apps/api/src/routes/content/create.ts +1 -0
  97. package/templates/apps/api/src/routes/content/delete.ts +1 -0
  98. package/templates/apps/api/src/routes/content/index.ts +42 -6
  99. package/templates/apps/api/src/routes/content/update.ts +1 -0
  100. package/templates/apps/api/src/routes/deliverables/__tests__/index.test.ts +393 -0
  101. package/templates/apps/api/src/routes/deliverables/index.ts +200 -0
  102. package/templates/apps/api/src/routes/flow-checkouts/__tests__/index.test.ts +443 -0
  103. package/templates/apps/api/src/routes/flow-checkouts/index.ts +82 -0
  104. package/templates/apps/api/src/routes/flows/README.md +147 -0
  105. package/templates/apps/api/src/routes/flows/__tests__/index.test.ts +752 -0
  106. package/templates/apps/api/src/routes/flows/__tests__/recommender.test.ts +671 -0
  107. package/templates/apps/api/src/routes/flows/index.ts +202 -0
  108. package/templates/apps/api/src/routes/flows/recommender.ts +443 -0
  109. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +438 -31
  110. package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +10 -10
  111. package/templates/apps/api/src/routes/leads/index.ts +43 -9
  112. package/templates/apps/api/src/routes/project-listings/__tests__/configured-application.test.ts +547 -0
  113. package/templates/apps/api/src/routes/project-listings/__tests__/copy-edit.test.ts +815 -0
  114. package/templates/apps/api/src/routes/project-listings/__tests__/drafts.test.ts +742 -0
  115. package/templates/apps/api/src/routes/project-listings/__tests__/public.test.ts +424 -0
  116. package/templates/apps/api/src/routes/project-listings/__tests__/site-key.test.ts +364 -0
  117. package/templates/apps/api/src/routes/project-listings/__tests__/tenant-isolation.test.ts +566 -0
  118. package/templates/apps/api/src/routes/project-listings/get.ts +70 -0
  119. package/templates/apps/api/src/routes/project-listings/index.ts +105 -0
  120. package/templates/apps/api/src/routes/project-listings/list.ts +47 -0
  121. package/templates/apps/api/src/routes/project-listings/patch-copy.ts +222 -0
  122. package/templates/apps/api/src/routes/project-listings/patch-draft.ts +97 -0
  123. package/templates/apps/api/src/routes/project-listings/patch.ts +136 -0
  124. package/templates/apps/api/src/routes/project-listings/public.ts +52 -0
  125. package/templates/apps/api/src/routes/project-listings/respond.ts +37 -0
  126. package/templates/apps/api/src/routes/project-listings/resume-token.ts +22 -0
  127. package/templates/apps/api/src/routes/project-listings/start.ts +98 -0
  128. package/templates/apps/api/src/routes/project-listings/submit.ts +122 -0
  129. package/templates/apps/api/src/routes/schedule/__tests__/index.test.ts +490 -0
  130. package/templates/apps/api/src/routes/schedule/index.ts +249 -0
  131. package/templates/apps/api/src/routes/slack/__tests__/actions.test.ts +385 -0
  132. package/templates/apps/api/src/routes/slack/actions.ts +177 -0
  133. package/templates/apps/api/src/routes/slack/index.ts +38 -0
  134. package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +16 -6
  135. package/templates/apps/api/src/routes/test/auth/session.ts +8 -6
  136. package/templates/apps/api/src/routes/waitlist-experiments/__tests__/tenant-isolation.test.ts +577 -0
  137. package/templates/apps/api/src/routes/waitlist-experiments/comparison.ts +78 -0
  138. package/templates/apps/api/src/routes/waitlist-experiments/index.ts +41 -0
  139. package/templates/apps/api/src/routes/waitlist-experiments/list.ts +64 -0
  140. package/templates/apps/api/src/routes/waitlist-experiments/respond.ts +42 -0
  141. package/templates/apps/api/src/routes/waitlist-experiments/signup.ts +84 -0
  142. package/templates/apps/api/src/routes/waitlist-experiments/signups.ts +119 -0
  143. package/templates/apps/api/src/routes/waitlist-signups/__tests__/index.test.ts +238 -0
  144. package/templates/apps/api/src/routes/waitlist-signups/index.ts +101 -0
  145. package/templates/apps/api/src/routes/webhooks/README.md +35 -12
  146. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +315 -0
  147. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +270 -0
  148. package/templates/apps/api/src/routes/webhooks/stripe.ts +248 -20
  149. package/templates/apps/api/src/routes/workspaces/__tests__/config-tenant-isolation.test.ts +356 -0
  150. package/templates/apps/api/src/routes/workspaces/__tests__/tenant-isolation.test.ts +671 -0
  151. package/templates/apps/api/src/routes/workspaces/config.ts +125 -0
  152. package/templates/apps/api/src/routes/workspaces/index.ts +194 -0
  153. package/templates/apps/api/src/routes/workspaces/sessions.ts +218 -0
  154. package/templates/apps/api/src/server.ts +293 -7
  155. package/templates/apps/api/src/services/__tests__/abandon-email.test.ts +489 -0
  156. package/templates/apps/api/src/services/__tests__/aeo-score.test.ts +475 -0
  157. package/templates/apps/api/src/services/__tests__/answer-distributions.test.ts +132 -0
  158. package/templates/apps/api/src/services/__tests__/deliverable-fulfillment.test.ts +523 -0
  159. package/templates/apps/api/src/services/__tests__/deliverable-resend.test.ts +359 -0
  160. package/templates/apps/api/src/services/__tests__/entitlements.test.ts +142 -0
  161. package/templates/apps/api/src/services/__tests__/flow-aggregate.test.ts +425 -0
  162. package/templates/apps/api/src/services/__tests__/flow-engine.test.ts +2840 -0
  163. package/templates/apps/api/src/services/__tests__/lead-promotion.test.ts +393 -0
  164. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +8 -8
  165. package/templates/apps/api/src/services/__tests__/listing-csv-sweep.test.ts +560 -0
  166. package/templates/apps/api/src/services/__tests__/playbook-compile.test.ts +406 -0
  167. package/templates/apps/api/src/services/__tests__/playbook-render.test.ts +290 -0
  168. package/templates/apps/api/src/services/__tests__/project-listing-decision.test.ts +736 -0
  169. package/templates/apps/api/src/services/__tests__/project-listing-flow.test.ts +475 -0
  170. package/templates/apps/api/src/services/__tests__/project-listing-issue.test.ts +340 -0
  171. package/templates/apps/api/src/services/__tests__/recommender-capture.test.ts +983 -0
  172. package/templates/apps/api/src/services/__tests__/slack-notify.test.ts +278 -0
  173. package/templates/apps/api/src/services/__tests__/tenant-context-cascade.test.ts +71 -0
  174. package/templates/apps/api/src/services/__tests__/tenant-context.test.ts +379 -0
  175. package/templates/apps/api/src/services/__tests__/usage-aggregation.test.ts +941 -0
  176. package/templates/apps/api/src/services/__tests__/usage-credits.test.ts +588 -0
  177. package/templates/apps/api/src/services/__tests__/usage-metering.test.ts +768 -0
  178. package/templates/apps/api/src/services/__tests__/waitlist-dashboard.test.ts +1314 -0
  179. package/templates/apps/api/src/services/__tests__/waitlist-experiments.test.ts +341 -0
  180. package/templates/apps/api/src/services/__tests__/waitlist-followup.test.ts +567 -0
  181. package/templates/apps/api/src/services/__tests__/waitlist-scoring.test.ts +474 -0
  182. package/templates/apps/api/src/services/__tests__/waitlist-signups.test.ts +354 -0
  183. package/templates/apps/api/src/services/abandon-email.ts +307 -0
  184. package/templates/apps/api/src/services/aeo-score.ts +288 -0
  185. package/templates/apps/api/src/services/answer-distributions.ts +138 -0
  186. package/templates/apps/api/src/services/deliverable-fulfillment.ts +523 -0
  187. package/templates/apps/api/src/services/entitlements.ts +102 -0
  188. package/templates/apps/api/src/services/flow-aggregate.ts +232 -0
  189. package/templates/apps/api/src/services/flow-checkouts.ts +123 -0
  190. package/templates/apps/api/src/services/flow-engine.ts +1278 -0
  191. package/templates/apps/api/src/services/lead-promotion.ts +176 -0
  192. package/templates/apps/api/src/services/lead-routing.ts +3 -3
  193. package/templates/apps/api/src/services/listing-config.ts +102 -0
  194. package/templates/apps/api/src/services/listing-csv-sweep.ts +455 -0
  195. package/templates/apps/api/src/services/playbook-compile.ts +398 -0
  196. package/templates/apps/api/src/services/playbook-render.ts +263 -0
  197. package/templates/apps/api/src/services/project-listing-decision.ts +490 -0
  198. package/templates/apps/api/src/services/project-listing-flow.ts +426 -0
  199. package/templates/apps/api/src/services/project-listing-issue.ts +251 -0
  200. package/templates/apps/api/src/services/project-listings.ts +1124 -0
  201. package/templates/apps/api/src/services/recommender-capture.ts +835 -0
  202. package/templates/apps/api/src/services/scheduling/cal-provider.ts +392 -0
  203. package/templates/apps/api/src/services/scheduling/index.ts +63 -0
  204. package/templates/apps/api/src/services/scheduling/types.ts +88 -0
  205. package/templates/apps/api/src/services/slack-notify.ts +240 -0
  206. package/templates/apps/api/src/services/tenant-context.ts +451 -0
  207. package/templates/apps/api/src/services/usage-aggregation.ts +516 -0
  208. package/templates/apps/api/src/services/usage-credits.ts +340 -0
  209. package/templates/apps/api/src/services/usage-metering.ts +699 -0
  210. package/templates/apps/api/src/services/waitlist-dashboard.ts +947 -0
  211. package/templates/apps/api/src/services/waitlist-experiments.ts +213 -0
  212. package/templates/apps/api/src/services/waitlist-followup.ts +486 -0
  213. package/templates/apps/api/src/services/waitlist-scoring.ts +166 -0
  214. package/templates/apps/api/src/services/waitlist-signups.ts +165 -0
  215. package/templates/apps/api/src/vercel-handler.ts +165 -0
  216. package/templates/apps/api/tsconfig.json +0 -12
  217. package/templates/apps/mcp/CLAUDE.md +19 -9
  218. package/templates/apps/mcp/LICENSE +201 -0
  219. package/templates/apps/mcp/__tests__/create_page.test.ts +1 -0
  220. package/templates/apps/mcp/__tests__/delete_page.test.ts +1 -0
  221. package/templates/apps/mcp/__tests__/module-exclusion.test.ts +105 -0
  222. package/templates/apps/mcp/__tests__/parity.test.ts +70 -6
  223. package/templates/apps/mcp/__tests__/request_callback.test.ts +4 -4
  224. package/templates/apps/mcp/__tests__/schedule_tools.test.ts +242 -0
  225. package/templates/apps/mcp/__tests__/submit_lead.test.ts +4 -4
  226. package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +4 -4
  227. package/templates/apps/mcp/__tests__/tools/purchase.test.ts +47 -0
  228. package/templates/apps/mcp/__tests__/update_page.test.ts +1 -0
  229. package/templates/apps/mcp/package.json +6 -4
  230. package/templates/apps/mcp/src/config/modules.ts +37 -0
  231. package/templates/apps/mcp/src/server.ts +109 -18
  232. package/templates/apps/mcp/src/tools/capture_lead.ts +1 -1
  233. package/templates/apps/mcp/src/tools/create_booking.ts +58 -0
  234. package/templates/apps/mcp/src/tools/create_page.ts +1 -0
  235. package/templates/apps/mcp/src/tools/delete_page.ts +1 -0
  236. package/templates/apps/mcp/src/tools/get_event_meta.ts +55 -0
  237. package/templates/apps/mcp/src/tools/get_flow.ts +61 -0
  238. package/templates/apps/mcp/src/tools/index.ts +25 -0
  239. package/templates/apps/mcp/src/tools/list_availability.ts +67 -0
  240. package/templates/apps/mcp/src/tools/purchase.ts +3 -0
  241. package/templates/apps/mcp/src/tools/submit_flow_step.ts +83 -0
  242. package/templates/apps/mcp/src/tools/update_page.ts +1 -0
  243. package/templates/apps/mcp/tsconfig.json +1 -9
  244. package/templates/apps/web/.env.example +44 -0
  245. package/templates/apps/web/CLAUDE.md +28 -0
  246. package/templates/apps/web/LICENSE +201 -0
  247. package/templates/apps/web/__tests__/__mocks__/code-highlight.jest-stub.ts +24 -0
  248. package/templates/apps/web/__tests__/__mocks__/next-intl-server.ts +33 -0
  249. package/templates/apps/web/__tests__/__mocks__/next-intl.ts +18 -0
  250. package/templates/apps/web/__tests__/__mocks__/server-only.ts +13 -0
  251. package/templates/apps/web/__tests__/__mocks__/style-mock.js +4 -0
  252. package/templates/apps/web/__tests__/__mocks__/vercel-analytics-server.ts +9 -0
  253. package/templates/apps/web/__tests__/jest-support/import-meta-transformer.cjs +90 -0
  254. package/templates/apps/web/__tests__/setup.ts +22 -32
  255. package/templates/apps/web/app/.well-known/ai-plugin.json/route.ts +6 -3
  256. package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +8 -2
  257. package/templates/apps/web/app/[locale]/(authed)/account/__tests__/page.test.tsx +260 -0
  258. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +263 -0
  259. package/templates/apps/web/app/[locale]/(authed)/account/sign-out-button.tsx +39 -0
  260. package/templates/apps/web/app/[locale]/(authed)/layout.tsx +54 -0
  261. package/templates/apps/web/app/[locale]/(authed)/sign-in-gate.tsx +96 -0
  262. package/templates/apps/web/app/[locale]/(authed)/waitlist/[experimentId]/page.tsx +309 -0
  263. package/templates/apps/web/app/[locale]/(authed)/waitlist/[experimentId]/signups/[leadId]/page.tsx +149 -0
  264. package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/comparison.test.tsx +273 -0
  265. package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/gate.test.tsx +172 -0
  266. package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/list.test.tsx +171 -0
  267. package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/signup.test.tsx +179 -0
  268. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ExperimentsTable.tsx +116 -0
  269. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ForbiddenState.tsx +24 -0
  270. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/OfferFunnelTable.tsx +66 -0
  271. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/RollupTicker.tsx +61 -0
  272. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ScoreTrace.tsx +114 -0
  273. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/SignupsTable.tsx +139 -0
  274. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/WaitlistComparisonTabs.tsx +85 -0
  275. package/templates/apps/web/app/[locale]/(authed)/waitlist/components/status-badges.tsx +67 -0
  276. package/templates/apps/web/app/[locale]/(authed)/waitlist/format.ts +111 -0
  277. package/templates/apps/web/app/[locale]/(authed)/waitlist/page.tsx +179 -0
  278. package/templates/apps/web/app/[locale]/about/page.tsx +10 -1
  279. package/templates/apps/web/app/[locale]/blog/[[...slug]]/page.tsx +6 -1
  280. package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +9 -0
  281. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  282. package/templates/apps/web/app/[locale]/careers/page.tsx +9 -1
  283. package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +9 -0
  284. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  285. package/templates/apps/web/app/[locale]/case-studies/page.tsx +13 -1
  286. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +11 -1
  287. package/templates/apps/web/app/[locale]/clients/page.tsx +9 -1
  288. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +21 -1
  289. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +188 -0
  290. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +242 -0
  291. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +29 -0
  292. package/templates/apps/web/app/[locale]/contact/__tests__/intake-analytics.test.ts +51 -0
  293. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +39 -15
  294. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +21 -3
  295. package/templates/apps/web/app/[locale]/contact/intake-analytics.ts +49 -0
  296. package/templates/apps/web/app/[locale]/contact/intake-script.ts +66 -0
  297. package/templates/apps/web/app/[locale]/contact/page.tsx +14 -4
  298. package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +13 -1
  299. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  300. package/templates/apps/web/app/[locale]/courses/page.tsx +9 -1
  301. package/templates/apps/web/app/[locale]/docs/[[...slug]]/page.tsx +1 -0
  302. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +11 -1
  303. package/templates/apps/web/app/[locale]/downloads/page.tsx +13 -1
  304. package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +9 -0
  305. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +12 -2
  306. package/templates/apps/web/app/[locale]/events/page.tsx +9 -1
  307. package/templates/apps/web/app/[locale]/faq/page.tsx +10 -1
  308. package/templates/apps/web/app/[locale]/flows/[slug]/FlowStepperClient.tsx +265 -0
  309. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.permalink.test.tsx +445 -0
  310. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.test.tsx +341 -0
  311. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/checkout.actions.test.ts +287 -0
  312. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/flow.actions.test.ts +302 -0
  313. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/two-route-tool.test.tsx +128 -0
  314. package/templates/apps/web/app/[locale]/flows/[slug]/checkout.actions.ts +254 -0
  315. package/templates/apps/web/app/[locale]/flows/[slug]/flow.actions.ts +144 -0
  316. package/templates/apps/web/app/[locale]/flows/[slug]/page.tsx +108 -0
  317. package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/ResultsClient.tsx +532 -0
  318. package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/ResultsEmailStep.tsx +121 -0
  319. package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/__tests__/ResultsClient.checkout.test.tsx +457 -0
  320. package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/__tests__/page.test.tsx +396 -0
  321. package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/page.tsx +114 -0
  322. package/templates/apps/web/app/[locale]/flows/[slug]/start/page.tsx +52 -0
  323. package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +13 -1
  324. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  325. package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +9 -0
  326. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  327. package/templates/apps/web/app/[locale]/integrations/page.tsx +13 -1
  328. package/templates/apps/web/app/[locale]/launch-service/page.tsx +14 -1
  329. package/templates/apps/web/app/[locale]/layout.tsx +115 -16
  330. package/templates/apps/web/app/[locale]/page.tsx +10 -1
  331. package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +9 -0
  332. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  333. package/templates/apps/web/app/[locale]/partners/page.tsx +9 -1
  334. package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +9 -0
  335. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  336. package/templates/apps/web/app/[locale]/products/page.tsx +9 -1
  337. package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +13 -1
  338. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +10 -0
  339. package/templates/apps/web/app/[locale]/projects/apply/ListingApplicationClient.tsx +110 -0
  340. package/templates/apps/web/app/[locale]/projects/apply/__tests__/ListingApplicationClient.test.tsx +96 -0
  341. package/templates/apps/web/app/[locale]/projects/page.tsx +13 -1
  342. package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +9 -0
  343. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +12 -2
  344. package/templates/apps/web/app/[locale]/resources/page.tsx +13 -1
  345. package/templates/apps/web/app/[locale]/schedule/__tests__/page.test.tsx +117 -0
  346. package/templates/apps/web/app/[locale]/schedule/confirmed/__tests__/page.test.tsx +96 -0
  347. package/templates/apps/web/app/[locale]/schedule/confirmed/page.tsx +92 -0
  348. package/templates/apps/web/app/[locale]/schedule/page.tsx +82 -0
  349. package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +9 -0
  350. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  351. package/templates/apps/web/app/[locale]/services/page.tsx +9 -1
  352. package/templates/apps/web/app/[locale]/sign-in/__tests__/next-path.test.ts +31 -0
  353. package/templates/apps/web/app/[locale]/sign-in/__tests__/page.test.tsx +152 -0
  354. package/templates/apps/web/app/[locale]/sign-in/next-path.ts +0 -0
  355. package/templates/apps/web/app/[locale]/sign-in/page.tsx +83 -0
  356. package/templates/apps/web/app/[locale]/sign-in/sign-in-card.tsx +123 -0
  357. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +13 -1
  358. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  359. package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +13 -1
  360. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  361. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +11 -1
  362. package/templates/apps/web/app/[locale]/testimonials/page.tsx +13 -1
  363. package/templates/apps/web/app/[locale]/thanks/[slug]/__tests__/page.test.tsx +93 -0
  364. package/templates/apps/web/app/[locale]/thanks/[slug]/page.tsx +48 -0
  365. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +11 -1
  366. package/templates/apps/web/app/[locale]/use-cases/page.tsx +13 -1
  367. package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +13 -1
  368. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  369. package/templates/apps/web/app/globals.css +35 -0
  370. package/templates/apps/web/app/llms.txt/route.ts +2 -1
  371. package/templates/apps/web/app/og/route.tsx +10 -2
  372. package/templates/apps/web/auth.ts +8 -0
  373. package/templates/apps/web/components/sign-out-trigger.tsx +42 -0
  374. package/templates/apps/web/content/en/blog/README.txt +25 -0
  375. package/templates/apps/web/content/en/docs/index.mdx +28 -0
  376. package/templates/apps/web/jest.config.cjs +84 -27
  377. package/templates/apps/web/lib/__tests__/site-brand.test.ts +119 -0
  378. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +499 -0
  379. package/templates/apps/web/lib/account-config.ts +13 -0
  380. package/templates/apps/web/lib/server-api.ts +85 -0
  381. package/templates/apps/web/lib/site-brand.tsx +118 -0
  382. package/templates/apps/web/messages/en.json +275 -7
  383. package/templates/apps/web/middleware.ts +11 -3
  384. package/templates/apps/web/next.config.mjs +8 -2
  385. package/templates/apps/web/package.json +16 -7
  386. package/templates/apps/web/postcss.config.mjs +23 -0
  387. package/templates/apps/web/public/.well-known/security.txt +3 -3
  388. package/templates/apps/web/src/lib/routes.ts +15 -2
  389. package/templates/apps/web/tsconfig.json +1 -16
  390. package/templates/content/_site.mdx +24 -25
  391. package/templates/content/en/AboutPage/about.mdx +24 -14
  392. package/templates/content/en/ContactPage/contact.mdx +23 -14
  393. package/templates/content/en/FAQPage/faq.mdx +10 -392
  394. package/templates/content/en/HomePage/home.mdx +14 -285
  395. package/templates/database/CHANGELOG.md +382 -0
  396. package/templates/database/LICENSE +201 -0
  397. package/templates/database/README.md +3 -1
  398. package/templates/database/__tests__/flows-listing-diagnostic.test.ts +392 -0
  399. package/templates/database/__tests__/flows-presets.test.ts +173 -0
  400. package/templates/database/__tests__/prefixed-ids.db.test.ts +146 -0
  401. package/templates/database/__tests__/seed.test.ts +88 -0
  402. package/templates/database/__tests__/user-cascade.test.ts +19 -4
  403. package/templates/database/auth/schema.prisma +521 -0
  404. package/templates/database/config/schema.prisma +234 -0
  405. package/templates/database/content/schema.prisma +263 -0
  406. package/templates/database/flows/listing-diagnostic.ts +182 -0
  407. package/templates/database/flows/presets.ts +315 -0
  408. package/templates/database/inbox/__tests__/schema.test.ts +4 -0
  409. package/templates/database/inbox/schema.prisma +476 -3
  410. package/templates/database/jest.config.cjs +8 -0
  411. package/templates/database/migrations/20260712215647_add_multi_tenant_tenancy/migration.sql +201 -0
  412. package/templates/database/migrations/20260713143320_reanchor_site_config_to_workspace/migration.sql +67 -0
  413. package/templates/database/migrations/20260713174000_add_audit_logs/migration.sql +46 -0
  414. package/templates/database/migrations/20260713190000_drop_telemetry_records/migration.sql +25 -0
  415. package/templates/database/migrations/20260713192000_add_uuidv7_function/migration.sql +49 -0
  416. package/templates/database/migrations/20260713192429_prefixed_uuid_entity_ids/migration.sql +197 -0
  417. package/templates/database/migrations/20260713200000_add_org_billing/migration.sql +32 -0
  418. package/templates/database/migrations/20260714000000_add_lead_promotion_fields/migration.sql +22 -0
  419. package/templates/database/migrations/20260714010000_add_usage_billing_content_models/migration.sql +151 -0
  420. package/templates/database/migrations/20260714020000_add_usage_billing_auth_config_models/migration.sql +223 -0
  421. package/templates/database/migrations/20260714030000_credit_balance_non_negative/migration.sql +22 -0
  422. package/templates/database/migrations/20260714030000_widen_usage_billing_report_aggregates/migration.sql +32 -0
  423. package/templates/database/migrations/20260810233516_add_flow_engine_models/migration.sql +40 -0
  424. package/templates/database/migrations/20260811020000_add_flow_session_abandon_email_columns/migration.sql +4 -0
  425. package/templates/database/migrations/20260811030000_add_flow_session_abandon_email_index/migration.sql +2 -0
  426. package/templates/database/migrations/20260811040000_add_flow_session_segment/migration.sql +2 -0
  427. package/templates/database/migrations/20260811050000_add_deliverable_models/migration.sql +29 -0
  428. package/templates/database/migrations/20260812000000_add_deliverable_grant_send_columns/migration.sql +6 -0
  429. package/templates/database/migrations/20260902222948_add_waitlist_experiment_models/migration.sql +39 -0
  430. package/templates/database/migrations/20260902224500_add_waitlist_id_format_checks/migration.sql +24 -0
  431. package/templates/database/migrations/20260903004112_add_flow_session_flags_aeo_score/migration.sql +3 -0
  432. package/templates/database/migrations/20260903010000_add_playbook_instance/migration.sql +33 -0
  433. package/templates/database/migrations/20260904000000_add_waitlist_followup_send/migration.sql +30 -0
  434. package/templates/database/migrations/20260905230000_add_flow_checkout/migration.sql +47 -0
  435. package/templates/database/migrations/20260906000000_add_flow_checkout_idempotency/migration.sql +16 -0
  436. package/templates/database/migrations/20260907120000_add_project_listing/migration.sql +47 -0
  437. package/templates/database/migrations/20260907130000_add_project_listing_slack_columns/migration.sql +10 -0
  438. package/templates/database/migrations/20260907180000_add_listing_csv_send/migration.sql +26 -0
  439. package/templates/database/migrations/20260909120000_project_listings_platform/migration.sql +90 -0
  440. package/templates/database/migrations/20260909180000_listing_draft_and_fields/migration.sql +174 -0
  441. package/templates/database/migrations/20260910120000_listing_public_site_key/migration.sql +14 -0
  442. package/templates/database/migrations/20260911120000_listing_copy_edit_audit/migration.sql +25 -0
  443. package/templates/database/ops/schema.prisma +27 -0
  444. package/templates/database/package.json +42 -4
  445. package/templates/database/prisma.config.ts +1 -1
  446. package/templates/database/schema.prisma +19 -435
  447. package/templates/database/scripts/db-generate-locked.sh +0 -0
  448. package/templates/database/seed-test.ts +14 -4
  449. package/templates/database/seed.ts +148 -0
  450. package/templates/database/tenancy.ts +45 -0
  451. package/templates/database/tsconfig.flows.json +15 -0
  452. package/templates/database/tsconfig.json +7 -1
  453. package/templates/database/tsconfig.tenancy.json +14 -0
  454. package/templates/package.json +30 -55
  455. package/templates/pnpm-workspace.yaml +0 -3
  456. package/templates/project.yaml +1 -1
  457. package/templates/tsconfig.json +1 -37
  458. package/templates/apps/web/__tests__/auth/adversarial/cookie-attributes.test.ts +0 -94
  459. package/templates/apps/web/__tests__/auth/adversarial/oauth-state-parameter.test.ts +0 -75
  460. package/templates/apps/web/__tests__/auth/adversarial/redirect-uri-allowlist.test.ts +0 -82
  461. package/templates/apps/web/__tests__/auth/env-helpers.test.ts +0 -168
  462. package/templates/apps/web/__tests__/authority-list-routes.test.tsx +0 -208
  463. package/templates/apps/web/__tests__/better-stack.test.ts +0 -66
  464. package/templates/apps/web/__tests__/blog-dir-resolution.test.ts +0 -87
  465. package/templates/apps/web/__tests__/blog-source-populated.test.ts +0 -130
  466. package/templates/apps/web/__tests__/data-testid-coverage.test.tsx +0 -60
  467. package/templates/apps/web/__tests__/google-analytics.test.tsx +0 -104
  468. package/templates/apps/web/__tests__/i18n/middleware.test.ts +0 -119
  469. package/templates/apps/web/__tests__/i18n/routing.test.ts +0 -114
  470. package/templates/apps/web/__tests__/i18n/translations.test.ts +0 -191
  471. package/templates/apps/web/__tests__/json-ld.test.ts +0 -98
  472. package/templates/apps/web/__tests__/knowledge-events-routes.test.tsx +0 -580
  473. package/templates/apps/web/__tests__/layout-stealth.test.ts +0 -39
  474. package/templates/apps/web/__tests__/lighthouse-fixtures/improvement-image-shrink.tsx +0 -103
  475. package/templates/apps/web/__tests__/lighthouse-fixtures/override-fixture.md +0 -114
  476. package/templates/apps/web/__tests__/lighthouse-fixtures/regression-bloat.tsx +0 -94
  477. package/templates/apps/web/__tests__/page.test.tsx +0 -230
  478. package/templates/apps/web/__tests__/products-services-phase1.test.tsx +0 -321
  479. package/templates/apps/web/__tests__/projects-routes.test.tsx +0 -392
  480. package/templates/apps/web/__tests__/resources-downloads-integrations-phase2.test.tsx +0 -475
  481. package/templates/apps/web/__tests__/routes/ai-plugin-json.test.ts +0 -53
  482. package/templates/apps/web/__tests__/routes/blog-route.test.tsx +0 -191
  483. package/templates/apps/web/__tests__/routes/llms-txt.test.ts +0 -123
  484. package/templates/apps/web/__tests__/routes/robots-txt.test.ts +0 -52
  485. package/templates/apps/web/__tests__/routes/sitemap-xml.test.ts +0 -78
  486. package/templates/apps/web/__tests__/routes/well-known-mcp.test.ts +0 -203
  487. package/templates/apps/web/__tests__/section-routes.test.tsx +0 -693
  488. package/templates/apps/web/__tests__/security-headers.test.ts +0 -201
  489. package/templates/apps/web/__tests__/sentry-config.test.ts +0 -116
  490. package/templates/apps/web/__tests__/sitemap-locales.test.ts +0 -415
  491. package/templates/apps/web/__tests__/standalone-informational-routes.test.tsx +0 -844
  492. package/templates/apps/web/app/[locale]/__tests__/layout.test.tsx +0 -120
  493. package/templates/apps/web/app/[locale]/__tests__/page-renderer-migration.test.tsx +0 -202
  494. package/templates/apps/web/app/__tests__/error-boundaries.test.tsx +0 -152
  495. package/templates/apps/web/content/en/blog/index.mdx +0 -15
  496. package/templates/apps/web/content/en/blog/launching-ailk.mdx +0 -20
  497. package/templates/apps/web/content/en/docs/getting-started.mdx +0 -30
  498. package/templates/content/.gitkeep +0 -0
  499. package/templates/content/CLAUDE.md +0 -85
  500. package/templates/content/ar/HomePage/home.mdx +0 -123
  501. package/templates/content/ar/_site.mdx +0 -35
  502. package/templates/content/de/_site.mdx +0 -29
  503. package/templates/content/en/.gitkeep +0 -0
  504. package/templates/content/en/AboutPage/about.schema.json +0 -82
  505. package/templates/content/en/BookCall/book-call.mdx +0 -19
  506. package/templates/content/en/BookCall/book-call.schema.json +0 -121
  507. package/templates/content/en/BreadcrumbList/site-breadcrumbs.mdx +0 -20
  508. package/templates/content/en/CareersList/careers.mdx +0 -24
  509. package/templates/content/en/CaseStudiesList/case-studies.mdx +0 -22
  510. package/templates/content/en/CaseStudiesList/showcase.mdx +0 -8
  511. package/templates/content/en/CaseStudy/ailk-aeo-rollout.mdx +0 -32
  512. package/templates/content/en/CaseStudy/schema-builder-migration.mdx +0 -41
  513. package/templates/content/en/ClientsList/clients.mdx +0 -38
  514. package/templates/content/en/ContactPage/contact.schema.json +0 -100
  515. package/templates/content/en/ContactPoint/primary.mdx +0 -14
  516. package/templates/content/en/Course/aeo-fundamentals.mdx +0 -37
  517. package/templates/content/en/Course/schema-builder-workshop.mdx +0 -62
  518. package/templates/content/en/CoursesList/courses.mdx +0 -22
  519. package/templates/content/en/DownloadsList/downloads.mdx +0 -22
  520. package/templates/content/en/Event/aeo-office-hours-may-2026.mdx +0 -39
  521. package/templates/content/en/Event/ailk-launch-day-2026.mdx +0 -35
  522. package/templates/content/en/EventsList/events.mdx +0 -26
  523. package/templates/content/en/FAQPage/faq.schema.json +0 -231
  524. package/templates/content/en/GlossaryList/glossary.mdx +0 -19
  525. package/templates/content/en/GlossaryList/glossary.schema.json +0 -300
  526. package/templates/content/en/HomePage/home.schema.json +0 -88
  527. package/templates/content/en/HomePage/launch-service.mdx +0 -475
  528. package/templates/content/en/HomePage/launch-service.schema.json +0 -138
  529. package/templates/content/en/HowTo/add-mdx-content.mdx +0 -38
  530. package/templates/content/en/HowTo/configure-aeo-scoring.mdx +0 -35
  531. package/templates/content/en/HowTo/set-up-json-ld.mdx +0 -36
  532. package/templates/content/en/Integration/github-actions.mdx +0 -31
  533. package/templates/content/en/Integration/openai-api.mdx +0 -26
  534. package/templates/content/en/Integration/vercel.mdx +0 -32
  535. package/templates/content/en/IntegrationsList/integrations.mdx +0 -22
  536. package/templates/content/en/JobPosting/content-strategist.mdx +0 -46
  537. package/templates/content/en/JobPosting/developer-advocate.mdx +0 -47
  538. package/templates/content/en/JobPosting/senior-fullstack-engineer.mdx +0 -57
  539. package/templates/content/en/LandingPage/aeo-audit.mdx +0 -19
  540. package/templates/content/en/LandingPage/aeo-audit.schema.json +0 -92
  541. package/templates/content/en/LandingPage/agency-waitlist.mdx +0 -340
  542. package/templates/content/en/LandingPage/agency-waitlist.schema.json +0 -152
  543. package/templates/content/en/LandingPage/developers.mdx +0 -19
  544. package/templates/content/en/LandingPage/developers.schema.json +0 -109
  545. package/templates/content/en/LandingPage/for-agencies.mdx +0 -390
  546. package/templates/content/en/LandingPage/for-agencies.schema.json +0 -107
  547. package/templates/content/en/LandingPage/for-ai-search-agencies.mdx +0 -417
  548. package/templates/content/en/LandingPage/for-ai-search-agencies.schema.json +0 -105
  549. package/templates/content/en/LandingPage/for-businesses.mdx +0 -19
  550. package/templates/content/en/LandingPage/for-businesses.schema.json +0 -96
  551. package/templates/content/en/LandingPage/platform.mdx +0 -369
  552. package/templates/content/en/LandingPage/platform.schema.json +0 -166
  553. package/templates/content/en/LandingPage/vs-ai-website-builders.mdx +0 -19
  554. package/templates/content/en/LandingPage/vs-ai-website-builders.schema.json +0 -102
  555. package/templates/content/en/LandingPage/vs-wordpress.mdx +0 -19
  556. package/templates/content/en/LandingPage/vs-wordpress.schema.json +0 -53
  557. package/templates/content/en/NewsletterSignup/newsletter.mdx +0 -236
  558. package/templates/content/en/NewsletterSignup/newsletter.schema.json +0 -91
  559. package/templates/content/en/Organization/site-owner.mdx +0 -16
  560. package/templates/content/en/Partner/prisma.mdx +0 -31
  561. package/templates/content/en/Partner/supabase.mdx +0 -30
  562. package/templates/content/en/Partner/vercel.mdx +0 -28
  563. package/templates/content/en/PartnersList/partners.mdx +0 -22
  564. package/templates/content/en/Person/founder.mdx +0 -18
  565. package/templates/content/en/Pricing/pricing.mdx +0 -538
  566. package/templates/content/en/Pricing/pricing.schema.json +0 -209
  567. package/templates/content/en/PrivacyPage/privacy.mdx +0 -165
  568. package/templates/content/en/PrivacyPage/privacy.schema.json +0 -64
  569. package/templates/content/en/Product/ailk.mdx +0 -19
  570. package/templates/content/en/Product/ailk.schema.json +0 -94
  571. package/templates/content/en/Product/api-launch-kit.mdx +0 -26
  572. package/templates/content/en/Product/launch-kit.mdx +0 -28
  573. package/templates/content/en/ProductsList/products.mdx +0 -26
  574. package/templates/content/en/Project/ailk-phase-2.mdx +0 -54
  575. package/templates/content/en/ProjectsList/projects.mdx +0 -25
  576. package/templates/content/en/ResourceDetail/aeo-scoring-guide.mdx +0 -27
  577. package/templates/content/en/ResourceDetail/content-model-whitepaper.mdx +0 -28
  578. package/templates/content/en/ResourceDetail/schema-org-quick-reference.mdx +0 -39
  579. package/templates/content/en/ResourcesHub/resources.mdx +0 -22
  580. package/templates/content/en/Service/consulting.mdx +0 -22
  581. package/templates/content/en/Service/implementation.mdx +0 -30
  582. package/templates/content/en/Service/launch-service.mdx +0 -232
  583. package/templates/content/en/Service/launch.mdx +0 -228
  584. package/templates/content/en/ServicesList/services.mdx +0 -84
  585. package/templates/content/en/SoftwareProduct/ailk-aeo.mdx +0 -44
  586. package/templates/content/en/SoftwareProduct/ailk-content-adapters.mdx +0 -47
  587. package/templates/content/en/SoftwareProduct/ailk-schema.mdx +0 -49
  588. package/templates/content/en/TeamList/team.mdx +0 -63
  589. package/templates/content/en/TeamMember/founder.mdx +0 -72
  590. package/templates/content/en/TermsPage/terms.mdx +0 -19
  591. package/templates/content/en/TermsPage/terms.schema.json +0 -99
  592. package/templates/content/en/TestimonialsList/testimonials.mdx +0 -44
  593. package/templates/content/en/UseCasesList/use-cases.mdx +0 -30
  594. package/templates/content/en/Whitepaper/ax-first-product-development.mdx +0 -27
  595. package/templates/content/en/Whitepaper/open-core-commercial-strategy.mdx +0 -27
  596. package/templates/content/en/Whitepaper/structured-data-for-answer-engines.mdx +0 -31
  597. package/templates/content/en-XA/AboutPage/about.mdx +0 -8
  598. package/templates/content/en-XA/FAQPage/faq.mdx +0 -8
  599. package/templates/content/en-XA/HomePage/home.mdx +0 -8
  600. package/templates/content/es/_site.mdx +0 -30
  601. package/templates/content/fr/_site.mdx +0 -30
  602. package/templates/content/ja/_site.mdx +0 -30
  603. package/templates/content/pt-BR/AboutPage/about.mdx +0 -8
  604. package/templates/content/pt-BR/FAQPage/faq.mdx +0 -8
  605. package/templates/content/pt-BR/HomePage/home.mdx +0 -23
@@ -1,38 +1,37 @@
1
1
  ---
2
2
  version: "1"
3
- siteName: AI Launch Kit
4
- baseUrl: https://ailaunchkit.ai
3
+ siteName: "{{COMPANY_NAME}}"
4
+ baseUrl: https://{{COMPANY_DOMAIN}}
5
5
  defaultLocale: en
6
6
  siteIdentity:
7
7
  kind: Organization
8
- name: AI Launch Kit
9
- url: https://ailaunchkit.ai
10
- logo: https://ailaunchkit.ai/opengraph-image.png
8
+ name: "{{COMPANY_NAME}}"
9
+ url: https://{{COMPANY_DOMAIN}}
11
10
  description: >
12
- AI Launch Kit is the open-source website foundation for the agent-first
13
- internet. Apache 2.0, agent-ready, AEO-scored, deployable in days.
14
- sameAs:
15
- - https://github.com/tailwind-ai/ai-launch-kit
16
- foundingDate: "2024"
17
- founderName: Sam Henry
11
+ One or two sentences describing what your organization does. This text is
12
+ read by answer engines as your canonical self-description, so make it
13
+ concrete — what you do, for whom.
14
+ sameAs: []
18
15
  analytics:
19
- vercelAnalytics: true
20
- brand:
21
- logomark:
22
- light: /logomark-light.svg
23
- dark: /logomark-dark.svg
24
- alt: AI Launch Kit
16
+ vercelAnalytics: false
25
17
  ---
26
18
 
27
19
  <!--
28
- This file is your site's canonical configuration. Edit the frontmatter
29
- above to set your site name, base URL, default locale, and identity
30
- (Organization, Person, or LocalBusiness).
20
+ This file is your site's canonical configuration. Edit the frontmatter above to
21
+ set your site name, base URL, default locale, and identity.
31
22
 
32
- For the agent-operator workflow, use the `set_site_identity` MCP tool
33
- instead of editing this file directly — it validates input and writes
34
- with optimistic locking.
23
+ `siteIdentity.kind` takes one of three values:
35
24
 
36
- See docs/site-config.md (introduced in Phase 3) for the full schema
37
- reference and the three identity kinds.
25
+ - Organization — a company, agency, nonprofit, or team
26
+ - Person — a solo practitioner, consultant, or personal site
27
+ - LocalBusiness — a business with a physical location customers visit
28
+
29
+ `sameAs` is the list of URLs that are unambiguously the same entity as you —
30
+ your LinkedIn company page, your GitHub org, your X profile. Answer engines use
31
+ it to reconcile your site with the rest of your presence, so it is worth
32
+ filling in.
33
+
34
+ For the agent-operator workflow, use the `set_site_identity` MCP tool rather
35
+ than editing this file directly — it validates input and writes with optimistic
36
+ locking.
38
37
  -->
@@ -1,19 +1,29 @@
1
1
  ---
2
2
  type: "AboutPage"
3
3
  slug: "about"
4
- title: "Sam Henry, Working Theory, and SalesSmyth all run on AILK."
5
- description: "Sam Henry, Working Theory, and SalesSmyth all run on AI Launch Kit. Meet the team building the open-source foundation for the agent-first internet."
6
- sections: [{"id": "hero", "type": "hero", "data": {"headline": "Sam Henry, Working Theory, and SalesSmyth all run on AILK.", "subheadline": "Building the foundation first forced the architecture — a typed schema registry, CI-enforced parity, agent-ready surfaces — before it was a product for anyone else.", "body": "Apache 2.0. The architecture is observable in the repo, not on a slide deck — the parity test runs in CI and `.well-known/mcp.json` is live at every deployed URL, including this one.", "primaryCta": {"label": "See the substrate", "href": "/ailk", "variant": "default"}, "secondaryCta": {"label": "Read the foundation thinking", "href": "/blog/ai-seo-foundation", "variant": "outline"}, "variant": "default"}}, {"id": "why-we-exist", "type": "content-block", "data": {"headline": "Why does AILK exist?", "body": "AILK exists because the page — not the site — is the unit of citation in AI search. Most of the web wasn't built for the audience now reading it on a buyer's behalf. When ChatGPT recommends a business, it assembles that recommendation from pages it has read, attributed to a source, and judged trustworthy enough to quote.\n\nWordPress was built when Google was the only entry point. SaaS starters shipped for dashboards and auth — not marketing pages. Closed builders locked customers in by design; that was always the business model. None of them were built for a model to read a page, recognize the brand behind it, and trust the structure enough to cite it.\n\nWe needed that foundation ourselves, first. Sam Henry needed it for his own site. Working Theory needed it to publish a growth-marketing system. SalesSmyth, for GTM consulting. None of the existing options cleared the bar, so the foundation got built — and then opened, Apache 2.0, for anyone building the same kind of site.", "variant": "wide"}}, {"id": "what-a-foundation-must-do", "type": "items", "data": {"headline": "What does a foundation have to do in the agent-first internet?", "description": "Five requirements. None of them are AILK features — they're what any site needs to publish into a world where AI systems read pages and recommend brands.", "columns": 3, "items": [{"title": "Be read correctly", "description": "A model should know what the page is about and which business it belongs to without guessing. If it has to guess, it cites someone else."}, {"title": "Work for non-human visitors", "description": "Agents now research on behalf of buyers. The foundation exposes itself to them as a first-class audience, not a degraded API."}, {"title": "Surface its own gaps", "description": "AEO problems are silent — the site doesn't crash, it just doesn't get cited. A foundation should catch structural gaps the way a linter catches type errors."}, {"title": "Belong to the people running on it", "description": "Foundations that lock customers in shape their roadmap around lock-in. Apache 2.0 keeps that pressure off the roadmap."}, {"title": "Fit inside the engagement", "description": "An SMB site engagement runs weeks, not quarters. A foundation that requires a multi-month custom build breaks the economics."}], "variant": "default"}}, {"id": "the-team", "type": "team", "data": {"headline": "Who built AILK?", "description": "AILK is built by the Working Theory Labs team, led by Sam Henry, with two agent team members contributing directly to the codebase. Full bios live where they belong — Sam Henry's at samhenry.org, the wider Working Theory Labs team at workingtheory.ai.", "variant": "with-small-images", "members": [{"name": "Sam Henry", "role": "Creator, AI Launch Kit · Founder, SalesSmyth LLC", "kind": "human", "bio": "Built AILK first for his own site, then opened it. Full background at samhenry.org."}, {"name": "Working Theory Labs team", "role": "Product and engineering — the team behind AILK", "kind": "human", "bio": "The team building the Working Theory product line, including AILK. Full roster at workingtheory.ai."}, {"name": "Claudio Planck", "role": "Agent team member — architecture, code review, and implementation", "kind": "agent", "bio": "AI engineering agent contributing across the AILK substrate."}, {"name": "Anders Stewart", "role": "Agent team member — implementation strategy", "kind": "agent", "bio": "AI VP Engineering agent, coordinating with the human team on shipped work."}]}}, {"id": "relationships", "type": "content-block", "data": {"headline": "How does AILK relate to Working Theory and SalesSmyth?", "body": "AILK is made by SalesSmyth LLC, the company behind the Working Theory product line. It's published under the Working Theory brand. That's why you'll see \"AI Launch Kit by Working Theory\" across the site. Sam Henry created AILK and founded SalesSmyth LLC. Working Theory Platform is a sister product — growth marketing as a system — and publishes into AILK with the deepest integration of any tool in the portfolio. AILK works fully standalone for developers and agencies who never touch Working Theory Platform. Neither product requires the other.", "variant": "default"}}, {"id": "dogfooding-proof", "type": "social-proof", "data": {"headline": "Does the team actually run on AILK?", "variant": "cards", "items": [{"author": "Sam Henry", "content": "Publishes on AILK — the reason the schema registry and the peer-surfaces architecture exist in their current shape. We hit the problem first.", "source": "generic"}, {"author": "Working Theory", "content": "Runs its growth-marketing product line on AILK, publishing into the substrate with the deepest integration in the portfolio.", "source": "generic"}, {"author": "SalesSmyth", "content": "The GTM-consulting brand behind AILK runs its own site on the same foundation it ships to customers.", "source": "generic"}]}}, {"id": "about-faq", "type": "faq", "data": {"headline": "Common questions about AILK and the team behind it", "presentation": "expanded", "items": [{"question": "Is AILK the same company as Working Theory?", "answer": "No. SalesSmyth LLC is the company that makes AILK. Working Theory is the product line — the brand AILK is published under, not a separate company. \"AI Launch Kit by Working Theory\" names the relationship: one maker, one brand, one product."}, {"question": "Who is Sam Henry and what's his role in AILK?", "answer": "Sam Henry created AILK and founded SalesSmyth LLC, the company behind it. He built the foundation for his own site first, then opened it under Apache 2.0. His full background is at samhenry.org; this page covers his role in AILK, not his biography."}, {"question": "Does the AILK team actually use the product?", "answer": "Yes. Sam Henry, Working Theory, and SalesSmyth all publish on AILK today. The schema registry and the peer-surfaces architecture exist in their current shape because the team hit these problems first — not because of a marketing claim."}, {"question": "Do I have to use Working Theory Platform to use AILK?", "answer": "No. AILK works fully standalone for developers and agencies. Working Theory Platform is a separate product — growth marketing as a system — that publishes into AILK with the deepest integration available. It's the recommended substrate for Platform customers who need a website, not a requirement for anyone else."}]}}, {"id": "cta-see-substrate", "type": "cta", "data": {"headline": "See the substrate AILK runs on.", "description": "The same architecture Sam Henry, Working Theory, and SalesSmyth publish on — schema registry, peer surfaces, audit CLI, all Apache 2.0.", "primaryCta": {"label": "See the substrate", "href": "/ailk", "variant": "default"}, "secondaryCta": {"label": "Read the foundation thinking", "href": "/blog/ai-seo-foundation", "variant": "outline"}, "variant": "default"}}]
7
- status: "Approved"
8
- pageKey: "AboutPage"
9
- entity: "ailaunchkit"
10
- urlSlug: "about-page"
11
- lastUpdated: "2026-07-06"
12
- pageLevelSchemaType: "AboutPage"
4
+ title: "About {{COMPANY_NAME}}"
5
+ description: "Replace this with a sentence about who you are and why you do this work."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "headline": "About {{COMPANY_NAME}}",
14
+ "subheadline": "Replace this with the short version of your story.",
15
+ },
16
+ },
17
+ {
18
+ "id": "why-we-exist",
19
+ "type": "content-block",
20
+ "data":
21
+ {
22
+ "headline": "Why we exist",
23
+ "body": "Replace this paragraph with the reason your organization exists — the problem you kept running into, or the gap you decided to fill. Concrete beats aspirational.",
24
+ },
25
+ },
26
+ ]
13
27
  ---
14
28
 
15
- import { JsonLd } from '@/components/JsonLd'
16
-
17
- <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": "Product", "additionalType": "SoftwareApplication", "@id": "https://ailaunchkit.ai/#product", "name": "AI Launch Kit", "alternateName": ["AI Launch Kit by Working Theory", "AILK by Working Theory", "AILK", "@ailaunchkit", "@ailk", "@working-theory", "ai-launch-kit"], "url": "https://ailaunchkit.ai", "description": "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.", "sameAs": ["https://github.com/working-theory-labs/ai-launch-kit", "https://x.com/ailaunchkit", "https://www.npmjs.com/org/ailk", "https://youtube.com/@working-theory", "https://linkedin.com/company/working-theory"], "foundingDate": "2026", "category": "Open-source website foundation", "applicationCategory": "DeveloperApplication", "operatingSystem": "Cross-platform (Node.js)", "license": "https://www.apache.org/licenses/LICENSE-2.0", "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit", "manufacturer": {"@type": "Organization", "@id": "https://ailaunchkit.ai/#salessmyth", "name": "SalesSmyth LLC"}, "brand": {"@type": "Brand", "@id": "https://workingtheory.ai/#brand", "name": "Working Theory", "url": "https://workingtheory.ai"}, "creator": {"@type": "Person", "@id": "https://samhenry.org/#person", "name": "Sam Henry", "url": "https://samhenry.org"}, "contributor": [{"@type": "SoftwareApplication", "name": "Claudio Planck", "description": "AI engineering agent contributing across the AILK substrate."}, {"@type": "SoftwareApplication", "name": "Anders Stewart", "description": "AI VP Engineering agent, coordinating with the human team on shipped work."}]}, {"@type": "AboutPage", "@id": "https://ailaunchkit.ai/about/#webpage", "url": "https://ailaunchkit.ai/about", "name": "About", "description": "Sam Henry, Working Theory, and SalesSmyth all run on AI Launch Kit. Meet the team building the open-source foundation for the agent-first internet.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "Organization", "@id": "https://ailaunchkit.ai/#salessmyth", "name": "SalesSmyth LLC"}, "about": {"@id": "https://ailaunchkit.ai/#product"}}]}} />
18
-
19
- {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
29
+ {/* Rendered from frontmatter `sections[]`. A `team` section is a good next addition here once you have people to list. */}
@@ -1,19 +1,28 @@
1
1
  ---
2
2
  type: "ContactPage"
3
3
  slug: "contact"
4
- title: "Contact AI Launch Kit"
5
- description: "Contact AI Launch Kit by email, intro call, or GitHub Issues — reach the Working Theory team for Pro, Pro Plus, Launch Service, or OSS support."
6
- sections: [{"id": "contact-hero", "type": "hero", "data": {"headline": "Contact AI Launch Kit", "subheadline": "Email us, book an intro call, or open a GitHub issue — whichever matches what you need.", "primaryCta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}, "secondaryCta": {"label": "Book an intro call", "href": "/book-call", "variant": "outline"}}}, {"id": "contact-framing", "type": "content-block", "data": {"body": "Evaluating Pro, Pro Plus, or Launch Service? Email or book an intro call directly. Running the Apache 2.0 foundation and need OSS support? Open a GitHub issue, where the codebase context already lives. Both paths reach the Working Theory team. Pick the one that matches what you're doing."}}, {"id": "contact-channels-primary", "type": "contact-channels", "data": {"items": [{"icon": "mail", "headline": "Email", "description": "hello@ailaunchkit.ai — the direct line to the Working Theory team. Use this for pricing questions, Launch Service scoping, or anything that doesn't fit a GitHub issue.", "cta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}}, {"icon": "calendar", "headline": "Book an intro call", "description": "For Pro, Pro Plus, or Launch Service — a short call to scope what you need before you commit to a tier.", "cta": {"label": "Book an intro call", "href": "/book-call"}}, {"icon": "github", "headline": "GitHub Issues", "description": "For OSS support, bugs, and feature requests against the AI Launch Kit repo. The direct path for anything code-related.", "cta": {"label": "Open a GitHub issue", "href": "https://github.com/working-theory-labs/ai-launch-kit/issues"}}]}}, {"id": "contact-cta-book-call", "type": "cta", "data": {"headline": "Ready to talk Pro, Pro Plus, or Launch Service?", "primaryCta": {"label": "Book an intro call", "href": "/book-call"}, "secondaryCta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai", "variant": "ghost"}}}, {"id": "contact-faq", "type": "faq", "data": {"items": [{"question": "Is there a phone number for AI Launch Kit?", "answer": "No. AI Launch Kit doesn't operate a phone line — communication runs async through email and GitHub Issues. Email hello@ailaunchkit.ai or open a GitHub issue and the Working Theory team will follow up."}, {"question": "Where is AI Launch Kit located?", "answer": "AI Launch Kit operates remote. There's no office to visit. The team works across time zones and reaches customers and contributors by email, GitHub, and booked calls."}, {"question": "Should I email or open a GitHub issue?", "answer": "Pricing, Pro, Pro Plus, Launch Service — email or book a call. Bug, feature request, or a question about the OSS codebase — open a GitHub issue. The repo context is already there."}]}}]
7
- status: "Approved"
8
- pageKey: "ContactPage"
9
- entity: "ailaunchkit"
10
- urlSlug: "contact-page"
11
- lastUpdated: "2026-07-06"
12
- pageLevelSchemaType: "ContactPage"
4
+ title: "Contact {{COMPANY_NAME}}"
5
+ description: "How to reach {{COMPANY_NAME}}. Replace this with the channels you actually monitor."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "headline": "Contact {{COMPANY_NAME}}",
14
+ "subheadline": "Replace this with how you prefer to be reached, and how quickly you reply.",
15
+ },
16
+ },
17
+ {
18
+ "id": "channels",
19
+ "type": "content-block",
20
+ "data":
21
+ {
22
+ "body": "Replace this with your contact channels — email, a booking link, a form. List only the ones you actually monitor: a published channel nobody watches is worse than no channel.",
23
+ },
24
+ },
25
+ ]
13
26
  ---
14
27
 
15
- import { JsonLd } from '@/components/JsonLd'
16
-
17
- <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": ["Product", "SoftwareApplication"], "@id": "https://ailaunchkit.ai/#product", "name": "AI Launch Kit", "alternateName": ["AI Launch Kit by Working Theory", "AILK by Working Theory", "AILK", "@ailaunchkit", "@ailk", "@working-theory", "ai-launch-kit"], "url": "https://ailaunchkit.ai", "description": "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.", "sameAs": ["https://github.com/working-theory-labs/ai-launch-kit", "https://x.com/ailaunchkit", "https://www.npmjs.com/org/ailk", "https://youtube.com/@working-theory", "https://linkedin.com/company/working-theory"], "foundingDate": "2026", "category": "Open-source website foundation", "applicationCategory": "DeveloperApplication", "operatingSystem": "Cross-platform (Node.js)", "license": "https://www.apache.org/licenses/LICENSE-2.0", "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit", "manufacturer": {"@id": "https://workingtheory.ai/#organization"}, "brand": {"@id": "https://workingtheory.ai/#organization"}, "creator": {"@id": "https://samhenry.org/#person"}, "offers": [{"@type": "Offer", "name": "Free (OSS, Apache 2.0)", "price": "0", "priceCurrency": "USD"}, {"@type": "Offer", "name": "Pro", "price": "249", "priceCurrency": "USD", "unitText": "per user per year"}, {"@type": "Offer", "name": "Pro Plus", "price": "449", "priceCurrency": "USD", "unitText": "per user per month"}, {"@type": "Offer", "name": "Launch Service", "price": "2495", "priceCurrency": "USD"}]}, {"@type": "ContactPage", "@id": "https://ailaunchkit.ai/contact#webpage", "url": "https://ailaunchkit.ai/contact", "name": "Contact AI Launch Kit", "description": "Contact AI Launch Kit by email, intro call, or GitHub Issues — reach the Working Theory team for Pro, Pro Plus, Launch Service, or OSS support.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "Organization", "name": "AI Launch Kit by Working Theory", "email": "hello@ailaunchkit.ai", "sameAs": ["https://github.com/working-theory-labs/ai-launch-kit"], "contactPoint": [{"@type": "ContactPoint", "contactType": "customer support", "email": "hello@ailaunchkit.ai", "availableLanguage": "English"}]}}]}} />
18
-
19
- {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
28
+ {/* Rendered from frontmatter `sections[]`. Swap the content-block above for a `contact-channels` section once you know your channels. */}
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  type: "FAQPage"
3
3
  slug: "faq"
4
- title: "AI Launch Kit — Frequently Asked Questions"
5
- description: "Answers to the real questions about AI Launch Kit — pre-launch risk, fleet management, Working Theory ties, Next.js requirements, WordPress migration, and Apache 2.0 licensing."
4
+ title: "{{COMPANY_NAME}} — Frequently Asked Questions"
5
+ description: "Answers to the questions people actually ask about {{COMPANY_NAME}}."
6
6
  sections:
7
7
  [
8
8
  {
@@ -10,411 +10,29 @@ sections:
10
10
  "type": "hero",
11
11
  "data":
12
12
  {
13
- "headline": "AI Launch Kit — Frequently Asked Questions",
14
- "subheadline": "Straight answers, no marketing spin pre-launch risk, fleet management, Working Theory, Next.js, WordPress migration, licensing. What ships today. What's still ahead.",
13
+ "headline": "Frequently Asked Questions",
14
+ "subheadline": "Replace these with the questions you are actually asked.",
15
15
  },
16
16
  },
17
17
  {
18
- "id": "faq-pre-launch-concerns",
18
+ "id": "faq",
19
19
  "type": "faq",
20
20
  "data":
21
21
  {
22
- "headline": "Pre-launch concerns",
23
22
  "items":
24
23
  [
25
24
  {
26
- "question": "You're pre-launch. Why bet on this?",
27
- "answer": "The architecture is observable in the repo, not a pitch deck. The typed schema registry is a directory of 60 entries, the parity test runs in CI, and the audit CLI runs today. You're not taking our word for any of it.",
25
+ "question": "Replace this with a real question you get asked.",
26
+ "answer": "Answer it directly, in the first sentence. An FAQ answer that opens with context and buries the answer in paragraph three does not get quoted.",
28
27
  },
29
28
  {
30
- "question": "Is the architecture real, or just a pitch?",
31
- "answer": "It's real and checkable. `apps/web`, `apps/mcp`, and `apps/api` run as peer apps in one repo, with a CI-enforced parity test and a live `.well-known/mcp.json` endpoint. Clone the repo and verify it yourself the `ailk audit` CLI runs against any AILK site, including this one.",
32
- },
33
- {
34
- "question": "What happens if AILK doesn't find traction?",
35
- "answer": "You keep everything. AILK ships under Apache 2.0, so the codebase belongs to you regardless of what happens to the company behind it. No lock-in, no dependency on a vendor's survival — the license itself bounds the downside.",
36
- },
37
- {
38
- "question": "Do you have customer proof yet?",
39
- "answer": "Not yet from outside the founding team, and we're not pretending otherwise. Sam Henry, Working Theory, and SalesSmyth all publish on AILK today — that's real dogfooding, not a case study. Independent customer proof builds over the next 90–180 days as Launch Service and Pro customers come on.",
40
- },
41
- ],
42
- },
43
- },
44
- {
45
- "id": "faq-fleet-management",
46
- "type": "faq",
47
- "data":
48
- {
49
- "headline": "Fleet management",
50
- "items":
51
- [
52
- {
53
- "question": "We run a portfolio of client sites. Where's fleet management?",
54
- "answer": "Deferred. Fleet management, cross-site rollup, white-label, and per-seat licensing are planned as a future Enterprise multi-tenant entitlement, not a separate tier. At launch, agencies deliver on OSS plus Pro, managed per-site rather than as a fleet.",
55
- },
56
- {
57
- "question": "When will Fleet Management ship?",
58
- "answer": "No fixed date. It lands in that same post-launch window, and the exact timing depends on demand for the entitlement. It ships once the core substrate is proven at single-site scale first.",
59
- },
60
- ],
61
- },
62
- },
63
- {
64
- "id": "faq-multi-site",
65
- "type": "faq",
66
- "data":
67
- {
68
- "headline": "Multi-site management",
69
- "items":
70
- [
71
- {
72
- "question": "How do I manage multiple client sites today, before fleet management ships?",
73
- "answer": "Per-site, on OSS or Pro. Each client site is its own AILK deploy with its own repo, schema registry, and audit run. There's no fleet dashboard yet — that's the gap fleet management closes. Nothing stops you from running several client sites in parallel today.",
74
- },
75
- {
76
- "question": "Is there a discount for managing many sites on Pro?",
77
- "answer": "Not currently. Pro is priced per user per year ($249), not per site, so an agency running several client sites on one Pro seat pays the same rate regardless of site count. Volume-based agency pricing arrives with the Enterprise multi-tenant entitlement.",
78
- },
79
- ],
80
- },
81
- },
82
- {
83
- "id": "faq-working-theory-relationship",
84
- "type": "faq",
85
- "data":
86
- {
87
- "headline": "Working Theory relationship",
88
- "items":
89
- [
90
- {
91
- "question": "How does this relate to Working Theory Platform? Am I locked in?",
92
- "answer": "You're not locked in. AILK works fully standalone. Working Theory Platform is a separate product — growth marketing as a system that publishes into AILK with the deepest integration available. Neither product requires the other.",
93
- },
94
- {
95
- "question": "Do I need Working Theory Platform to use AILK?",
96
- "answer": "No. Clone AILK, deploy it, run it — none of that touches Working Theory Platform. Platform is the recommended layer for customers who also want ongoing growth marketing; it isn't a requirement to use AILK.",
29
+ "question": "What makes a good FAQ entry?",
30
+ "answer": "A question phrased the way someone would actually ask it, and an answer that stands alone without the rest of the page. This page emits FAQPage JSON-LD, so each pair is machine-readable on its own.",
97
31
  },
98
32
  ],
99
33
  },
100
34
  },
101
- {
102
- "id": "faq-nextjs-requirement",
103
- "type": "faq",
104
- "data":
105
- {
106
- "headline": "Next.js requirement",
107
- "items":
108
- [
109
- {
110
- "question": "We're not Next.js native. Is this still for us?",
111
- "answer": "Yes, if AI search visibility is the deliverable you're selling. Launch Service is the path — a fixed-scope two-week deploy onto the substrate. Your team owns content and citation work from there. Next.js fluency helps. It isn't required.",
112
- },
113
- {
114
- "question": "Do I need to write MDX myself?",
115
- "answer": "No. Launch Service handles the build; your team works in content and citation strategy from there, with no MDX or build pipeline required on your end. Teams that want to write MDX directly can — it's the foundation's native content format.",
116
- },
117
- ],
118
- },
119
- },
120
- {
121
- "id": "faq-migration-from-wordpress",
122
- "type": "faq",
123
- "data":
124
- {
125
- "headline": "Migration from WordPress",
126
- "items":
127
- [
128
- {
129
- "question": "Can I migrate my existing WordPress site to AILK?",
130
- "answer": "Yes, though AILK isn't positioned as a migration tool — it's a foundation you rebuild on. Content and schema get recreated on AILK's typed page structure rather than imported wholesale, since the underlying data models don't match a plugin-based WordPress stack.",
131
- },
132
- {
133
- "question": "What happens to my existing SEO rankings during a move off WordPress?",
134
- "answer": "Rankings depend on redirect discipline and content parity, not the platform switch itself. A well-executed move preserves URLs where possible and 301s the rest. It typically improves the schema and entity markup that WordPress plugin stacks handle inconsistently.",
135
- },
136
- {
137
- "question": "How long does a WordPress migration take?",
138
- "answer": "Launch Service runs a fixed two-week scope for a new AILK deploy. Actual migration timeline depends on how much existing content needs to be recreated. A small brochure site fits inside two weeks; larger content libraries take longer to fully port over.",
139
- },
140
- ],
141
- },
142
- },
143
- {
144
- "id": "faq-pricing-and-licensing",
145
- "type": "faq",
146
- "data":
147
- {
148
- "headline": "Pricing & licensing",
149
- "items":
150
- [
151
- {
152
- "question": "What's the difference between Free, Pro, and Pro Plus?",
153
- "answer": "Free is the Apache 2.0 OSS foundation — complete, not crippled. Pro adds capability at $249 per user per year. Pro Plus adds ongoing care at $449 per user per month. Paid tiers build on the free foundation; they never gate access to it.",
154
- },
155
- {
156
- "question": "Is the OSS version really free forever?",
157
- "answer": 'Yes. AILK''s OSS layer is Apache 2.0 — not source-available, not "free until you make money," and not deliberately crippled to push a paid tier. It''s structurally complete today, and it stays that way regardless of what paid tiers add later.',
158
- },
159
- {
160
- "question": "What license does AILK use?",
161
- "answer": "Apache 2.0, the permissive open-source license, published on GitHub with no dual-licensing traps. Clone it. Modify it. Deploy it commercially — no royalty obligations back to Working Theory.",
162
- },
163
- ],
164
- },
165
- },
166
- {
167
- "id": "faq-closing-cta",
168
- "type": "cta",
169
- "data":
170
- {
171
- "headline": "Still have questions?",
172
- "description": "Talk to us directly about Launch Service, Pro, or Enterprise fleet management — or skip the conversation and clone the OSS foundation yourself.",
173
- "primaryCta":
174
- { "label": "Book Launch Service call", "href": "/launch-service" },
175
- "secondaryCta":
176
- {
177
- "label": "Clone OSS",
178
- "href": "/developers",
179
- "variant": "outline",
180
- },
181
- },
182
- },
183
35
  ]
184
- status: "Approved"
185
- pageKey: "FAQPage"
186
- entity: "ailaunchkit"
187
- urlSlug: "faq-page"
188
- lastUpdated: "2026-07-06"
189
- pageLevelSchemaType: "FAQPage"
190
36
  ---
191
37
 
192
- import { JsonLd } from "@/components/JsonLd";
193
-
194
- <JsonLd
195
- data={{
196
- "@context": "https://schema.org",
197
- "@graph": [
198
- {
199
- "@type": "Product",
200
- additionalType: "https://schema.org/SoftwareApplication",
201
- "@id": "https://ailaunchkit.ai/#product",
202
- name: "AI Launch Kit",
203
- alternateName: [
204
- "AI Launch Kit by Working Theory",
205
- "AILK by Working Theory",
206
- "AILK",
207
- "@ailaunchkit",
208
- "@ailk",
209
- "@working-theory",
210
- "ai-launch-kit",
211
- ],
212
- url: "https://ailaunchkit.ai",
213
- description:
214
- "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.",
215
- sameAs: [
216
- "https://github.com/working-theory-labs/ai-launch-kit",
217
- "https://x.com/ailaunchkit",
218
- "https://www.npmjs.com/org/ailk",
219
- "https://youtube.com/@working-theory",
220
- "https://linkedin.com/company/working-theory",
221
- ],
222
- foundingDate: "2026",
223
- category: "Open-source website foundation",
224
- applicationCategory: "DeveloperApplication",
225
- operatingSystem: "Cross-platform (Node.js)",
226
- license: "https://www.apache.org/licenses/LICENSE-2.0",
227
- codeRepository: "https://github.com/working-theory-labs/ai-launch-kit",
228
- manufacturer: {
229
- "@type": "Organization",
230
- "@id": "https://ailaunchkit.ai/#organization",
231
- name: "SalesSmyth LLC",
232
- },
233
- brand: {
234
- "@type": "Brand",
235
- name: "Working Theory",
236
- url: "https://workingtheory.ai",
237
- },
238
- creator: { "@type": "Person", name: "Sam Henry" },
239
- offers: [
240
- {
241
- "@type": "Offer",
242
- name: "Free (OSS)",
243
- price: "0",
244
- priceCurrency: "USD",
245
- },
246
- { "@type": "Offer", name: "Pro", price: "249", priceCurrency: "USD" },
247
- {
248
- "@type": "Offer",
249
- name: "Pro Plus",
250
- price: "449",
251
- priceCurrency: "USD",
252
- },
253
- {
254
- "@type": "Offer",
255
- name: "Launch Service",
256
- price: "2495",
257
- priceCurrency: "USD",
258
- },
259
- ],
260
- },
261
- {
262
- "@type": "FAQPage",
263
- "@id": "https://ailaunchkit.ai/faq#webpage",
264
- url: "https://ailaunchkit.ai/faq",
265
- name: "AI Launch Kit — Frequently Asked Questions",
266
- description:
267
- "Answers to the real questions about AI Launch Kit — pre-launch risk, fleet management, Working Theory ties, Next.js requirements, WordPress migration, and Apache 2.0 licensing.",
268
- isPartOf: { "@id": "https://ailaunchkit.ai/#product" },
269
- mainEntity: [
270
- {
271
- "@type": "Question",
272
- name: "You're pre-launch. Why bet on this?",
273
- acceptedAnswer: {
274
- "@type": "Answer",
275
- text: "The architecture is observable in the repo, not a pitch deck. The typed schema registry is a directory of 60 entries, the parity test runs in CI, and the audit CLI runs today. You're not taking our word for any of it.",
276
- },
277
- },
278
- {
279
- "@type": "Question",
280
- name: "Is the architecture real, or just a pitch?",
281
- acceptedAnswer: {
282
- "@type": "Answer",
283
- text: "It's real and checkable. `apps/web`, `apps/mcp`, and `apps/api` run as peer apps in one repo, with a CI-enforced parity test and a live `.well-known/mcp.json` endpoint. Clone the repo and verify it yourself — the `ailk audit` CLI runs against any AILK site, including this one.",
284
- },
285
- },
286
- {
287
- "@type": "Question",
288
- name: "What happens if AILK doesn't find traction?",
289
- acceptedAnswer: {
290
- "@type": "Answer",
291
- text: "You keep everything. AILK ships under Apache 2.0, so the codebase belongs to you regardless of what happens to the company behind it. No lock-in, no dependency on a vendor's survival — the license itself bounds the downside.",
292
- },
293
- },
294
- {
295
- "@type": "Question",
296
- name: "Do you have customer proof yet?",
297
- acceptedAnswer: {
298
- "@type": "Answer",
299
- text: "Not yet from outside the founding team, and we're not pretending otherwise. Sam Henry, Working Theory, and SalesSmyth all publish on AILK today — that's real dogfooding, not a case study. Independent customer proof builds over the next 90–180 days as Launch Service and Pro customers come on.",
300
- },
301
- },
302
- {
303
- "@type": "Question",
304
- name: "We run a portfolio of client sites. Where's fleet management?",
305
- acceptedAnswer: {
306
- "@type": "Answer",
307
- text: "Deferred. Fleet management, cross-site rollup, white-label, and per-seat licensing are planned as a future Enterprise multi-tenant entitlement, not a separate tier. At launch, agencies deliver on OSS plus Pro, managed per-site rather than as a fleet.",
308
- },
309
- },
310
- {
311
- "@type": "Question",
312
- name: "When will Fleet Management ship?",
313
- acceptedAnswer: {
314
- "@type": "Answer",
315
- text: "No fixed date. It lands in that same post-launch window, and the exact timing depends on demand for the entitlement. It ships once the core substrate is proven at single-site scale first.",
316
- },
317
- },
318
- {
319
- "@type": "Question",
320
- name: "How do I manage multiple client sites today, before fleet management ships?",
321
- acceptedAnswer: {
322
- "@type": "Answer",
323
- text: "Per-site, on OSS or Pro. Each client site is its own AILK deploy with its own repo, schema registry, and audit run. There's no fleet dashboard yet — that's the gap fleet management closes. Nothing stops you from running several client sites in parallel today.",
324
- },
325
- },
326
- {
327
- "@type": "Question",
328
- name: "Is there a discount for managing many sites on Pro?",
329
- acceptedAnswer: {
330
- "@type": "Answer",
331
- text: "Not currently. Pro is priced per user per year ($249), not per site, so an agency running several client sites on one Pro seat pays the same rate regardless of site count. Volume-based agency pricing arrives with the Enterprise multi-tenant entitlement.",
332
- },
333
- },
334
- {
335
- "@type": "Question",
336
- name: "How does this relate to Working Theory Platform? Am I locked in?",
337
- acceptedAnswer: {
338
- "@type": "Answer",
339
- text: "You're not locked in. AILK works fully standalone. Working Theory Platform is a separate product — growth marketing as a system that publishes into AILK with the deepest integration available. Neither product requires the other.",
340
- },
341
- },
342
- {
343
- "@type": "Question",
344
- name: "Do I need Working Theory Platform to use AILK?",
345
- acceptedAnswer: {
346
- "@type": "Answer",
347
- text: "No. Clone AILK, deploy it, run it — none of that touches Working Theory Platform. Platform is the recommended layer for customers who also want ongoing growth marketing; it isn't a requirement to use AILK.",
348
- },
349
- },
350
- {
351
- "@type": "Question",
352
- name: "We're not Next.js native. Is this still for us?",
353
- acceptedAnswer: {
354
- "@type": "Answer",
355
- text: "Yes, if AI search visibility is the deliverable you're selling. Launch Service is the path — a fixed-scope two-week deploy onto the substrate. Your team owns content and citation work from there. Next.js fluency helps. It isn't required.",
356
- },
357
- },
358
- {
359
- "@type": "Question",
360
- name: "Do I need to write MDX myself?",
361
- acceptedAnswer: {
362
- "@type": "Answer",
363
- text: "No. Launch Service handles the build; your team works in content and citation strategy from there, with no MDX or build pipeline required on your end. Teams that want to write MDX directly can — it's the foundation's native content format.",
364
- },
365
- },
366
- {
367
- "@type": "Question",
368
- name: "Can I migrate my existing WordPress site to AILK?",
369
- acceptedAnswer: {
370
- "@type": "Answer",
371
- text: "Yes, though AILK isn't positioned as a migration tool — it's a foundation you rebuild on. Content and schema get recreated on AILK's typed page structure rather than imported wholesale, since the underlying data models don't match a plugin-based WordPress stack.",
372
- },
373
- },
374
- {
375
- "@type": "Question",
376
- name: "What happens to my existing SEO rankings during a move off WordPress?",
377
- acceptedAnswer: {
378
- "@type": "Answer",
379
- text: "Rankings depend on redirect discipline and content parity, not the platform switch itself. A well-executed move preserves URLs where possible and 301s the rest. It typically improves the schema and entity markup that WordPress plugin stacks handle inconsistently.",
380
- },
381
- },
382
- {
383
- "@type": "Question",
384
- name: "How long does a WordPress migration take?",
385
- acceptedAnswer: {
386
- "@type": "Answer",
387
- text: "Launch Service runs a fixed two-week scope for a new AILK deploy. Actual migration timeline depends on how much existing content needs to be recreated. A small brochure site fits inside two weeks; larger content libraries take longer to fully port over.",
388
- },
389
- },
390
- {
391
- "@type": "Question",
392
- name: "What's the difference between Free, Pro, and Pro Plus?",
393
- acceptedAnswer: {
394
- "@type": "Answer",
395
- text: "Free is the Apache 2.0 OSS foundation — complete, not crippled. Pro adds capability at $249 per user per year. Pro Plus adds ongoing care at $449 per user per month. Paid tiers build on the free foundation; they never gate access to it.",
396
- },
397
- },
398
- {
399
- "@type": "Question",
400
- name: "Is the OSS version really free forever?",
401
- acceptedAnswer: {
402
- "@type": "Answer",
403
- text: "Yes. AILK's OSS layer is Apache 2.0 — not source-available, not \"free until you make money,\" and not deliberately crippled to push a paid tier. It's structurally complete today, and it stays that way regardless of what paid tiers add later.",
404
- },
405
- },
406
- {
407
- "@type": "Question",
408
- name: "What license does AILK use?",
409
- acceptedAnswer: {
410
- "@type": "Answer",
411
- text: "Apache 2.0, the permissive open-source license, published on GitHub with no dual-licensing traps. Clone it. Modify it. Deploy it commercially — no royalty obligations back to Working Theory.",
412
- },
413
- },
414
- ],
415
- },
416
- ],
417
- }}
418
- />
419
-
420
- {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
38
+ {/* Rendered from frontmatter `sections[]`. Each question/answer pair is emitted as schema.org FAQPage structured data — keep answers self-contained. */}