create-ailk 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 (533) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +39 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +80 -0
  5. package/dist/copy.d.ts +8 -0
  6. package/dist/copy.js +109 -0
  7. package/dist/index.d.ts +10 -0
  8. package/dist/index.js +10 -0
  9. package/dist/lib/pro-callout.d.ts +12 -0
  10. package/dist/lib/pro-callout.js +20 -0
  11. package/dist/parse-args.d.ts +13 -0
  12. package/dist/parse-args.js +81 -0
  13. package/dist/programmatic.d.ts +49 -0
  14. package/dist/programmatic.js +89 -0
  15. package/dist/substitute.d.ts +31 -0
  16. package/dist/substitute.js +45 -0
  17. package/dist/validate.d.ts +8 -0
  18. package/dist/validate.js +70 -0
  19. package/package.json +47 -0
  20. package/templates/.claude/.gitkeep +0 -0
  21. package/templates/.claude/agents/web.md +80 -0
  22. package/templates/.claude/rules/architecture.md +62 -0
  23. package/templates/.claude/rules/preserve-existing-style.md +51 -0
  24. package/templates/.claude/skills/README.md +43 -0
  25. package/templates/.claude/skills/add-schema/SKILL.md +270 -0
  26. package/templates/.claude/skills/add-schema/references/conflict-handling.md +200 -0
  27. package/templates/.claude/skills/add-schema/references/file-finding.md +123 -0
  28. package/templates/.claude/skills/add-schema/references/schema-types.md +131 -0
  29. package/templates/.claude/skills/audit-site/SKILL.md +213 -0
  30. package/templates/.claude/skills/audit-site/references/common-errors.md +113 -0
  31. package/templates/.claude/skills/audit-site/references/findings-glossary.md +138 -0
  32. package/templates/.claude/skills/audit-site/references/severity-levels.md +114 -0
  33. package/templates/.claude/skills/provision-config/SKILL.md +243 -0
  34. package/templates/.claude/skills/provision-config/references/env-vars-template.md +184 -0
  35. package/templates/.claude/skills/provision-config/references/runbook-template.md +248 -0
  36. package/templates/.claude/skills/provision-config/references/vercel-json-template.md +98 -0
  37. package/templates/.claude/skills/scaffold-auth/SKILL.md +261 -0
  38. package/templates/.claude/skills/scaffold-auth/references/env-vars.md +91 -0
  39. package/templates/.claude/skills/scaffold-auth/references/oauth-app-setup.md +171 -0
  40. package/templates/.claude/skills/scaffold-commerce/SKILL.md +310 -0
  41. package/templates/.claude/skills/scaffold-commerce/references/lookup-keys-template.md +71 -0
  42. package/templates/.claude/skills/scaffold-commerce/references/marketplace-brand-pages.md +83 -0
  43. package/templates/.claude/skills/scaffold-commerce/templates/marketplace-cta-route.tsx.tmpl +72 -0
  44. package/templates/.claude/skills/scaffold-page/SKILL.md +243 -0
  45. package/templates/.claude/skills/scaffold-page/references/page-types.md +169 -0
  46. package/templates/.claude/skills/scaffold-page/templates/content.mdx.tmpl +28 -0
  47. package/templates/.claude/skills/scaffold-page/templates/route.tsx.tmpl +28 -0
  48. package/templates/.claude/skills/suggest-site-pages/SKILL.md +242 -0
  49. package/templates/.claude/skills/suggest-site-pages/references/categories.md +287 -0
  50. package/templates/.env.example +205 -0
  51. package/templates/.gitkeep +2 -0
  52. package/templates/CLAUDE.md +142 -0
  53. package/templates/CONVENTIONS.md +222 -0
  54. package/templates/README.md +110 -0
  55. package/templates/apps/api/.env.example +40 -0
  56. package/templates/apps/api/CLAUDE.md +63 -0
  57. package/templates/apps/api/api/index.ts +144 -0
  58. package/templates/apps/api/jest.config.cjs +74 -0
  59. package/templates/apps/api/package.json +54 -0
  60. package/templates/apps/api/src/__tests__/factories/content-fixture.ts +138 -0
  61. package/templates/apps/api/src/__tests__/factories/index.ts +70 -0
  62. package/templates/apps/api/src/__tests__/factories/lead-fixture.ts +82 -0
  63. package/templates/apps/api/src/__tests__/index.test.ts +118 -0
  64. package/templates/apps/api/src/__tests__/server.test.ts +207 -0
  65. package/templates/apps/api/src/__tests__/services/enrichment-shim.test.ts +126 -0
  66. package/templates/apps/api/src/__tests__/setup.ts +24 -0
  67. package/templates/apps/api/src/cli.ts +30 -0
  68. package/templates/apps/api/src/config/__tests__/index.test.ts +97 -0
  69. package/templates/apps/api/src/config/index.ts +56 -0
  70. package/templates/apps/api/src/index.ts +32 -0
  71. package/templates/apps/api/src/lib/__mocks__/prisma-client.js +15 -0
  72. package/templates/apps/api/src/lib/__mocks__/prisma.ts +45 -0
  73. package/templates/apps/api/src/lib/__tests__/content-adapter.test.ts +178 -0
  74. package/templates/apps/api/src/lib/__tests__/error-serializer.test.ts +100 -0
  75. package/templates/apps/api/src/lib/__tests__/errors.test.ts +94 -0
  76. package/templates/apps/api/src/lib/__tests__/file-fallback.test.ts +144 -0
  77. package/templates/apps/api/src/lib/__tests__/fixtures/HomePage/home.mdx +8 -0
  78. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +227 -0
  79. package/templates/apps/api/src/lib/__tests__/outbound-http.test.ts +125 -0
  80. package/templates/apps/api/src/lib/__tests__/prisma.test.ts +165 -0
  81. package/templates/apps/api/src/lib/__tests__/require-paid-tier.test.ts +129 -0
  82. package/templates/apps/api/src/lib/__tests__/stripe.test.ts +74 -0
  83. package/templates/apps/api/src/lib/content-adapter.ts +86 -0
  84. package/templates/apps/api/src/lib/error-serializer.ts +77 -0
  85. package/templates/apps/api/src/lib/errors.ts +95 -0
  86. package/templates/apps/api/src/lib/file-fallback.ts +87 -0
  87. package/templates/apps/api/src/lib/lead-capture-store.ts +110 -0
  88. package/templates/apps/api/src/lib/locales.ts +201 -0
  89. package/templates/apps/api/src/lib/outbound-http.ts +122 -0
  90. package/templates/apps/api/src/lib/prisma.ts +21 -0
  91. package/templates/apps/api/src/lib/require-paid-tier.ts +53 -0
  92. package/templates/apps/api/src/lib/stripe.ts +30 -0
  93. package/templates/apps/api/src/lib/webhook-idempotency.ts +92 -0
  94. package/templates/apps/api/src/middleware/__tests__/adversarial/bearer-token-format.test.ts +111 -0
  95. package/templates/apps/api/src/middleware/__tests__/adversarial/cookie-or-bearer-precedence.test.ts +172 -0
  96. package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-bearer-skip.test.ts +119 -0
  97. package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-cookie-path.test.ts +138 -0
  98. package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +149 -0
  99. package/templates/apps/api/src/middleware/__tests__/adversarial/session-timeout.test.ts +139 -0
  100. package/templates/apps/api/src/middleware/__tests__/auth.bearer-path.test.ts +175 -0
  101. package/templates/apps/api/src/middleware/__tests__/auth.both-present-precedence.test.ts +76 -0
  102. package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +153 -0
  103. package/templates/apps/api/src/middleware/__tests__/auth.neither-present.test.ts +72 -0
  104. package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +292 -0
  105. package/templates/apps/api/src/middleware/auth.ts +246 -0
  106. package/templates/apps/api/src/middleware/rate-limit.ts +132 -0
  107. package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +129 -0
  108. package/templates/apps/api/src/openapi/index.ts +12 -0
  109. package/templates/apps/api/src/openapi/spec.ts +408 -0
  110. package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +193 -0
  111. package/templates/apps/api/src/routes/auth/__tests__/auth-user.functional.test.ts +201 -0
  112. package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +294 -0
  113. package/templates/apps/api/src/routes/auth/__tests__/user.test.ts +486 -0
  114. package/templates/apps/api/src/routes/auth/tokens.ts +199 -0
  115. package/templates/apps/api/src/routes/auth/user.ts +244 -0
  116. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +588 -0
  117. package/templates/apps/api/src/routes/checkout/index.ts +13 -0
  118. package/templates/apps/api/src/routes/checkout/sessions.ts +185 -0
  119. package/templates/apps/api/src/routes/content/__tests__/create.test.ts +239 -0
  120. package/templates/apps/api/src/routes/content/__tests__/delete.test.ts +201 -0
  121. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +141 -0
  122. package/templates/apps/api/src/routes/content/__tests__/list-pages.test.ts +122 -0
  123. package/templates/apps/api/src/routes/content/__tests__/list-types.test.ts +44 -0
  124. package/templates/apps/api/src/routes/content/__tests__/locale.test.ts +118 -0
  125. package/templates/apps/api/src/routes/content/__tests__/rate-limit.test.ts +51 -0
  126. package/templates/apps/api/src/routes/content/__tests__/update.test.ts +252 -0
  127. package/templates/apps/api/src/routes/content/create.ts +114 -0
  128. package/templates/apps/api/src/routes/content/delete.ts +81 -0
  129. package/templates/apps/api/src/routes/content/get-page.ts +98 -0
  130. package/templates/apps/api/src/routes/content/index.ts +32 -0
  131. package/templates/apps/api/src/routes/content/list-pages.ts +83 -0
  132. package/templates/apps/api/src/routes/content/list-types.ts +19 -0
  133. package/templates/apps/api/src/routes/content/rate-limit.ts +13 -0
  134. package/templates/apps/api/src/routes/content/slug.ts +9 -0
  135. package/templates/apps/api/src/routes/content/update.ts +111 -0
  136. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +415 -0
  137. package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +165 -0
  138. package/templates/apps/api/src/routes/leads/index.ts +130 -0
  139. package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +296 -0
  140. package/templates/apps/api/src/routes/test/auth/session.ts +141 -0
  141. package/templates/apps/api/src/routes/webhooks/README.md +57 -0
  142. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-idempotency.test.ts +247 -0
  143. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-rate-limit.test.ts +198 -0
  144. package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +633 -0
  145. package/templates/apps/api/src/routes/webhooks/index.ts +41 -0
  146. package/templates/apps/api/src/routes/webhooks/stripe.ts +253 -0
  147. package/templates/apps/api/src/server.ts +157 -0
  148. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +395 -0
  149. package/templates/apps/api/src/services/enrichment-shim.ts +53 -0
  150. package/templates/apps/api/src/services/lead-routing.ts +338 -0
  151. package/templates/apps/api/tsconfig.json +34 -0
  152. package/templates/apps/api/vercel.json +17 -0
  153. package/templates/apps/mcp/.env.example +52 -0
  154. package/templates/apps/mcp/CLAUDE.md +84 -0
  155. package/templates/apps/mcp/__tests__/abuse/daily-cap.test.ts +52 -0
  156. package/templates/apps/mcp/__tests__/abuse/email-validator.test.ts +46 -0
  157. package/templates/apps/mcp/__tests__/abuse/honeypot.test.ts +36 -0
  158. package/templates/apps/mcp/__tests__/abuse/user-agent-deny.test.ts +54 -0
  159. package/templates/apps/mcp/__tests__/aeo-cli-parity.test.ts +110 -0
  160. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +213 -0
  161. package/templates/apps/mcp/__tests__/audit.test.ts +217 -0
  162. package/templates/apps/mcp/__tests__/catalog-drift.test.ts +52 -0
  163. package/templates/apps/mcp/__tests__/create_page.test.ts +201 -0
  164. package/templates/apps/mcp/__tests__/delete_page.test.ts +176 -0
  165. package/templates/apps/mcp/__tests__/get_business_hours.test.ts +82 -0
  166. package/templates/apps/mcp/__tests__/get_faq.test.ts +80 -0
  167. package/templates/apps/mcp/__tests__/get_locations.test.ts +65 -0
  168. package/templates/apps/mcp/__tests__/get_offerings.test.ts +90 -0
  169. package/templates/apps/mcp/__tests__/get_pricing.test.ts +80 -0
  170. package/templates/apps/mcp/__tests__/get_site_info.test.ts +81 -0
  171. package/templates/apps/mcp/__tests__/http-transport.test.ts +323 -0
  172. package/templates/apps/mcp/__tests__/lib/errors.test.ts +75 -0
  173. package/templates/apps/mcp/__tests__/lib/require-paid-tier.test.ts +75 -0
  174. package/templates/apps/mcp/__tests__/list_pages.test.ts +112 -0
  175. package/templates/apps/mcp/__tests__/locale.test.ts +135 -0
  176. package/templates/apps/mcp/__tests__/parity.test.ts +205 -0
  177. package/templates/apps/mcp/__tests__/purchase-disabled.test.ts +34 -0
  178. package/templates/apps/mcp/__tests__/read_content.test.ts +153 -0
  179. package/templates/apps/mcp/__tests__/request_callback.test.ts +163 -0
  180. package/templates/apps/mcp/__tests__/search_content.test.ts +153 -0
  181. package/templates/apps/mcp/__tests__/server.test.ts +115 -0
  182. package/templates/apps/mcp/__tests__/submit_lead.test.ts +165 -0
  183. package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +161 -0
  184. package/templates/apps/mcp/__tests__/tools/purchase.test.ts +227 -0
  185. package/templates/apps/mcp/__tests__/tools/scaffold.test.ts +237 -0
  186. package/templates/apps/mcp/__tests__/update_page.test.ts +195 -0
  187. package/templates/apps/mcp/jest.config.cjs +82 -0
  188. package/templates/apps/mcp/package.json +37 -0
  189. package/templates/apps/mcp/src/abuse/daily-cap.ts +47 -0
  190. package/templates/apps/mcp/src/abuse/email-validator.ts +25 -0
  191. package/templates/apps/mcp/src/abuse/honeypot.ts +21 -0
  192. package/templates/apps/mcp/src/abuse/index.ts +111 -0
  193. package/templates/apps/mcp/src/abuse/user-agent-deny.ts +58 -0
  194. package/templates/apps/mcp/src/http-transport.ts +303 -0
  195. package/templates/apps/mcp/src/index.ts +67 -0
  196. package/templates/apps/mcp/src/lib/audit-single-page.ts +194 -0
  197. package/templates/apps/mcp/src/lib/errors.ts +61 -0
  198. package/templates/apps/mcp/src/lib/locales.ts +171 -0
  199. package/templates/apps/mcp/src/lib/require-paid-tier.ts +44 -0
  200. package/templates/apps/mcp/src/lib/resolve-locale.ts +30 -0
  201. package/templates/apps/mcp/src/server.ts +139 -0
  202. package/templates/apps/mcp/src/tools/audit.ts +103 -0
  203. package/templates/apps/mcp/src/tools/capture_lead.ts +52 -0
  204. package/templates/apps/mcp/src/tools/create_page.ts +95 -0
  205. package/templates/apps/mcp/src/tools/delete_page.ts +73 -0
  206. package/templates/apps/mcp/src/tools/get_business_hours.ts +66 -0
  207. package/templates/apps/mcp/src/tools/get_faq.ts +69 -0
  208. package/templates/apps/mcp/src/tools/get_locations.ts +85 -0
  209. package/templates/apps/mcp/src/tools/get_offerings.ts +66 -0
  210. package/templates/apps/mcp/src/tools/get_pricing.ts +74 -0
  211. package/templates/apps/mcp/src/tools/get_site_info.ts +84 -0
  212. package/templates/apps/mcp/src/tools/index.ts +125 -0
  213. package/templates/apps/mcp/src/tools/list_pages.ts +72 -0
  214. package/templates/apps/mcp/src/tools/purchase.ts +89 -0
  215. package/templates/apps/mcp/src/tools/read_content.ts +61 -0
  216. package/templates/apps/mcp/src/tools/request_callback.ts +51 -0
  217. package/templates/apps/mcp/src/tools/scaffold.ts +119 -0
  218. package/templates/apps/mcp/src/tools/search_content.ts +59 -0
  219. package/templates/apps/mcp/src/tools/subscribe_newsletter.ts +47 -0
  220. package/templates/apps/mcp/src/tools/update_page.ts +91 -0
  221. package/templates/apps/mcp/tsconfig.json +19 -0
  222. package/templates/apps/web/.env.example +47 -0
  223. package/templates/apps/web/CLAUDE.md +81 -0
  224. package/templates/apps/web/__tests__/auth/adversarial/cookie-attributes.test.ts +94 -0
  225. package/templates/apps/web/__tests__/auth/adversarial/oauth-state-parameter.test.ts +75 -0
  226. package/templates/apps/web/__tests__/auth/adversarial/redirect-uri-allowlist.test.ts +82 -0
  227. package/templates/apps/web/__tests__/auth/env-helpers.test.ts +168 -0
  228. package/templates/apps/web/__tests__/authority-list-routes.test.tsx +208 -0
  229. package/templates/apps/web/__tests__/better-stack.test.ts +66 -0
  230. package/templates/apps/web/__tests__/blog-dir-resolution.test.ts +87 -0
  231. package/templates/apps/web/__tests__/blog-source-populated.test.ts +130 -0
  232. package/templates/apps/web/__tests__/data-testid-coverage.test.tsx +60 -0
  233. package/templates/apps/web/__tests__/google-analytics.test.tsx +104 -0
  234. package/templates/apps/web/__tests__/i18n/middleware.test.ts +119 -0
  235. package/templates/apps/web/__tests__/i18n/routing.test.ts +114 -0
  236. package/templates/apps/web/__tests__/i18n/translations.test.ts +191 -0
  237. package/templates/apps/web/__tests__/json-ld.test.ts +98 -0
  238. package/templates/apps/web/__tests__/knowledge-events-routes.test.tsx +580 -0
  239. package/templates/apps/web/__tests__/layout-stealth.test.ts +39 -0
  240. package/templates/apps/web/__tests__/lighthouse-fixtures/improvement-image-shrink.tsx +103 -0
  241. package/templates/apps/web/__tests__/lighthouse-fixtures/override-fixture.md +114 -0
  242. package/templates/apps/web/__tests__/lighthouse-fixtures/regression-bloat.tsx +94 -0
  243. package/templates/apps/web/__tests__/page.test.tsx +230 -0
  244. package/templates/apps/web/__tests__/products-services-phase1.test.tsx +321 -0
  245. package/templates/apps/web/__tests__/projects-routes.test.tsx +392 -0
  246. package/templates/apps/web/__tests__/resources-downloads-integrations-phase2.test.tsx +475 -0
  247. package/templates/apps/web/__tests__/routes/ai-plugin-json.test.ts +53 -0
  248. package/templates/apps/web/__tests__/routes/blog-route.test.tsx +191 -0
  249. package/templates/apps/web/__tests__/routes/llms-txt.test.ts +123 -0
  250. package/templates/apps/web/__tests__/routes/robots-txt.test.ts +52 -0
  251. package/templates/apps/web/__tests__/routes/sitemap-xml.test.ts +78 -0
  252. package/templates/apps/web/__tests__/routes/well-known-mcp.test.ts +203 -0
  253. package/templates/apps/web/__tests__/section-routes.test.tsx +693 -0
  254. package/templates/apps/web/__tests__/security-headers.test.ts +201 -0
  255. package/templates/apps/web/__tests__/sentry-config.test.ts +116 -0
  256. package/templates/apps/web/__tests__/setup.ts +82 -0
  257. package/templates/apps/web/__tests__/sitemap-locales.test.ts +415 -0
  258. package/templates/apps/web/__tests__/standalone-informational-routes.test.tsx +844 -0
  259. package/templates/apps/web/app/.well-known/ai-plugin.json/route.ts +81 -0
  260. package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +110 -0
  261. package/templates/apps/web/app/.well-known/mcp.json/route.ts +58 -0
  262. package/templates/apps/web/app/[locale]/__tests__/layout.test.tsx +120 -0
  263. package/templates/apps/web/app/[locale]/__tests__/page-renderer-migration.test.tsx +202 -0
  264. package/templates/apps/web/app/[locale]/about/page.tsx +31 -0
  265. package/templates/apps/web/app/[locale]/blog/[[...slug]]/page.tsx +173 -0
  266. package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +45 -0
  267. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +117 -0
  268. package/templates/apps/web/app/[locale]/careers/page.tsx +25 -0
  269. package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +44 -0
  270. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +113 -0
  271. package/templates/apps/web/app/[locale]/case-studies/page.tsx +25 -0
  272. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +63 -0
  273. package/templates/apps/web/app/[locale]/clients/page.tsx +27 -0
  274. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +130 -0
  275. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +152 -0
  276. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +92 -0
  277. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +79 -0
  278. package/templates/apps/web/app/[locale]/contact/error.tsx +24 -0
  279. package/templates/apps/web/app/[locale]/contact/page.tsx +38 -0
  280. package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +34 -0
  281. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +119 -0
  282. package/templates/apps/web/app/[locale]/courses/page.tsx +25 -0
  283. package/templates/apps/web/app/[locale]/dev/purchase/__tests__/actions.test.ts +160 -0
  284. package/templates/apps/web/app/[locale]/dev/purchase/error.tsx +25 -0
  285. package/templates/apps/web/app/[locale]/dev/purchase/page.tsx +117 -0
  286. package/templates/apps/web/app/[locale]/dev/purchase/purchase.actions.ts +58 -0
  287. package/templates/apps/web/app/[locale]/docs/[[...slug]]/page.tsx +118 -0
  288. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +72 -0
  289. package/templates/apps/web/app/[locale]/downloads/page.tsx +25 -0
  290. package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +47 -0
  291. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +130 -0
  292. package/templates/apps/web/app/[locale]/events/page.tsx +25 -0
  293. package/templates/apps/web/app/[locale]/faq/page.tsx +36 -0
  294. package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +34 -0
  295. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +78 -0
  296. package/templates/apps/web/app/[locale]/how-to/page.tsx +40 -0
  297. package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +43 -0
  298. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +129 -0
  299. package/templates/apps/web/app/[locale]/integrations/page.tsx +25 -0
  300. package/templates/apps/web/app/[locale]/launch-service/page.tsx +31 -0
  301. package/templates/apps/web/app/[locale]/layout.tsx +241 -0
  302. package/templates/apps/web/app/[locale]/page.tsx +41 -0
  303. package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +44 -0
  304. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +113 -0
  305. package/templates/apps/web/app/[locale]/partners/page.tsx +25 -0
  306. package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +43 -0
  307. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +129 -0
  308. package/templates/apps/web/app/[locale]/products/page.tsx +25 -0
  309. package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +39 -0
  310. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +138 -0
  311. package/templates/apps/web/app/[locale]/projects/page.tsx +30 -0
  312. package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +51 -0
  313. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +117 -0
  314. package/templates/apps/web/app/[locale]/resources/page.tsx +27 -0
  315. package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +43 -0
  316. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +129 -0
  317. package/templates/apps/web/app/[locale]/services/page.tsx +25 -0
  318. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +34 -0
  319. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +81 -0
  320. package/templates/apps/web/app/[locale]/software/page.tsx +39 -0
  321. package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +34 -0
  322. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +82 -0
  323. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +39 -0
  324. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +63 -0
  325. package/templates/apps/web/app/[locale]/testimonials/page.tsx +27 -0
  326. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +63 -0
  327. package/templates/apps/web/app/[locale]/use-cases/page.tsx +27 -0
  328. package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +34 -0
  329. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +82 -0
  330. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +39 -0
  331. package/templates/apps/web/app/__tests__/error-boundaries.test.tsx +152 -0
  332. package/templates/apps/web/app/api/auth/[...all]/route.ts +16 -0
  333. package/templates/apps/web/app/error-fallback.tsx +75 -0
  334. package/templates/apps/web/app/error.tsx +23 -0
  335. package/templates/apps/web/app/layout.tsx +18 -0
  336. package/templates/apps/web/app/llms.txt/route.ts +101 -0
  337. package/templates/apps/web/app/not-found.tsx +48 -0
  338. package/templates/apps/web/app/og/__tests__/route.test.ts +164 -0
  339. package/templates/apps/web/app/og/route.tsx +135 -0
  340. package/templates/apps/web/app/robots.txt/route.ts +36 -0
  341. package/templates/apps/web/app/sitemap.xml/route.ts +146 -0
  342. package/templates/apps/web/auth.ts +141 -0
  343. package/templates/apps/web/components/ThemeToggle.tsx +60 -0
  344. package/templates/apps/web/components/google-analytics.tsx +34 -0
  345. package/templates/apps/web/content/en/blog/index.mdx +15 -0
  346. package/templates/apps/web/content/en/blog/launching-ailk.mdx +20 -0
  347. package/templates/apps/web/content/en/docs/getting-started.mdx +30 -0
  348. package/templates/apps/web/i18n/request.ts +36 -0
  349. package/templates/apps/web/jest.config.cjs +100 -0
  350. package/templates/apps/web/lib/__mocks__/next-mdx-remote-rsc.js +12 -0
  351. package/templates/apps/web/lib/__mocks__/source-server.js +31 -0
  352. package/templates/apps/web/lib/__tests__/og.test.ts +65 -0
  353. package/templates/apps/web/lib/auth-env.ts +66 -0
  354. package/templates/apps/web/lib/blog-list-data.ts +95 -0
  355. package/templates/apps/web/lib/blog-post-data.ts +79 -0
  356. package/templates/apps/web/lib/nav-config.ts +13 -0
  357. package/templates/apps/web/lib/observability/better-stack.ts +27 -0
  358. package/templates/apps/web/lib/og.ts +23 -0
  359. package/templates/apps/web/lib/prisma-for-auth.ts +34 -0
  360. package/templates/apps/web/lib/source.ts +34 -0
  361. package/templates/apps/web/messages/en.json +131 -0
  362. package/templates/apps/web/middleware.ts +80 -0
  363. package/templates/apps/web/next.config.mjs +167 -0
  364. package/templates/apps/web/package.json +62 -0
  365. package/templates/apps/web/public/.well-known/security.txt +17 -0
  366. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  367. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  368. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  369. package/templates/apps/web/public/favicon-16x16.png +0 -0
  370. package/templates/apps/web/public/favicon-32x32.png +0 -0
  371. package/templates/apps/web/public/favicon.ico +0 -0
  372. package/templates/apps/web/public/favicon.svg +4 -0
  373. package/templates/apps/web/public/logo-dark.svg +21 -0
  374. package/templates/apps/web/public/logo-light.svg +21 -0
  375. package/templates/apps/web/public/logomark-dark.svg +4 -0
  376. package/templates/apps/web/public/logomark-light.svg +4 -0
  377. package/templates/apps/web/public/og-default.png +0 -0
  378. package/templates/apps/web/public/site.webmanifest +19 -0
  379. package/templates/apps/web/scripts/assert-content-bundled.ts +55 -0
  380. package/templates/apps/web/security-headers.config.ts +132 -0
  381. package/templates/apps/web/sentry.client.config.ts +27 -0
  382. package/templates/apps/web/sentry.edge.config.ts +15 -0
  383. package/templates/apps/web/sentry.server.config.ts +20 -0
  384. package/templates/apps/web/source.config.ts +78 -0
  385. package/templates/apps/web/src/components/SiteNav.tsx +21 -0
  386. package/templates/apps/web/src/lib/routes.ts +37 -0
  387. package/templates/apps/web/tsconfig.json +35 -0
  388. package/templates/apps/web/types/messages.d.ts +19 -0
  389. package/templates/content/.gitkeep +0 -0
  390. package/templates/content/CLAUDE.md +85 -0
  391. package/templates/content/_site.mdx +38 -0
  392. package/templates/content/ar/HomePage/home.mdx +123 -0
  393. package/templates/content/ar/_site.mdx +35 -0
  394. package/templates/content/de/_site.mdx +29 -0
  395. package/templates/content/en/.gitkeep +0 -0
  396. package/templates/content/en/AboutPage/about.mdx +19 -0
  397. package/templates/content/en/AboutPage/about.schema.json +82 -0
  398. package/templates/content/en/BookCall/book-call.mdx +19 -0
  399. package/templates/content/en/BookCall/book-call.schema.json +121 -0
  400. package/templates/content/en/BreadcrumbList/site-breadcrumbs.mdx +20 -0
  401. package/templates/content/en/CareersList/careers.mdx +24 -0
  402. package/templates/content/en/CaseStudiesList/case-studies.mdx +22 -0
  403. package/templates/content/en/CaseStudiesList/showcase.mdx +8 -0
  404. package/templates/content/en/CaseStudy/ailk-aeo-rollout.mdx +32 -0
  405. package/templates/content/en/CaseStudy/schema-builder-migration.mdx +41 -0
  406. package/templates/content/en/ClientsList/clients.mdx +38 -0
  407. package/templates/content/en/ContactPage/contact.mdx +19 -0
  408. package/templates/content/en/ContactPage/contact.schema.json +100 -0
  409. package/templates/content/en/ContactPoint/primary.mdx +14 -0
  410. package/templates/content/en/Course/aeo-fundamentals.mdx +37 -0
  411. package/templates/content/en/Course/schema-builder-workshop.mdx +62 -0
  412. package/templates/content/en/CoursesList/courses.mdx +22 -0
  413. package/templates/content/en/DownloadsList/downloads.mdx +22 -0
  414. package/templates/content/en/Event/aeo-office-hours-may-2026.mdx +39 -0
  415. package/templates/content/en/Event/ailk-launch-day-2026.mdx +35 -0
  416. package/templates/content/en/EventsList/events.mdx +26 -0
  417. package/templates/content/en/FAQPage/faq.mdx +420 -0
  418. package/templates/content/en/FAQPage/faq.schema.json +231 -0
  419. package/templates/content/en/GlossaryList/glossary.mdx +19 -0
  420. package/templates/content/en/GlossaryList/glossary.schema.json +300 -0
  421. package/templates/content/en/HomePage/home.mdx +312 -0
  422. package/templates/content/en/HomePage/home.schema.json +88 -0
  423. package/templates/content/en/HomePage/launch-service.mdx +475 -0
  424. package/templates/content/en/HomePage/launch-service.schema.json +138 -0
  425. package/templates/content/en/HowTo/add-mdx-content.mdx +38 -0
  426. package/templates/content/en/HowTo/configure-aeo-scoring.mdx +35 -0
  427. package/templates/content/en/HowTo/set-up-json-ld.mdx +36 -0
  428. package/templates/content/en/Integration/github-actions.mdx +31 -0
  429. package/templates/content/en/Integration/openai-api.mdx +26 -0
  430. package/templates/content/en/Integration/vercel.mdx +32 -0
  431. package/templates/content/en/IntegrationsList/integrations.mdx +22 -0
  432. package/templates/content/en/JobPosting/content-strategist.mdx +46 -0
  433. package/templates/content/en/JobPosting/developer-advocate.mdx +47 -0
  434. package/templates/content/en/JobPosting/senior-fullstack-engineer.mdx +57 -0
  435. package/templates/content/en/LandingPage/aeo-audit.mdx +19 -0
  436. package/templates/content/en/LandingPage/aeo-audit.schema.json +92 -0
  437. package/templates/content/en/LandingPage/agency-waitlist.mdx +340 -0
  438. package/templates/content/en/LandingPage/agency-waitlist.schema.json +152 -0
  439. package/templates/content/en/LandingPage/developers.mdx +19 -0
  440. package/templates/content/en/LandingPage/developers.schema.json +109 -0
  441. package/templates/content/en/LandingPage/for-agencies.mdx +390 -0
  442. package/templates/content/en/LandingPage/for-agencies.schema.json +107 -0
  443. package/templates/content/en/LandingPage/for-ai-search-agencies.mdx +417 -0
  444. package/templates/content/en/LandingPage/for-ai-search-agencies.schema.json +105 -0
  445. package/templates/content/en/LandingPage/for-businesses.mdx +19 -0
  446. package/templates/content/en/LandingPage/for-businesses.schema.json +96 -0
  447. package/templates/content/en/LandingPage/platform.mdx +369 -0
  448. package/templates/content/en/LandingPage/platform.schema.json +166 -0
  449. package/templates/content/en/LandingPage/vs-ai-website-builders.mdx +19 -0
  450. package/templates/content/en/LandingPage/vs-ai-website-builders.schema.json +102 -0
  451. package/templates/content/en/LandingPage/vs-wordpress.mdx +19 -0
  452. package/templates/content/en/LandingPage/vs-wordpress.schema.json +53 -0
  453. package/templates/content/en/NewsletterSignup/newsletter.mdx +236 -0
  454. package/templates/content/en/NewsletterSignup/newsletter.schema.json +91 -0
  455. package/templates/content/en/Organization/site-owner.mdx +16 -0
  456. package/templates/content/en/Partner/prisma.mdx +31 -0
  457. package/templates/content/en/Partner/supabase.mdx +30 -0
  458. package/templates/content/en/Partner/vercel.mdx +28 -0
  459. package/templates/content/en/PartnersList/partners.mdx +22 -0
  460. package/templates/content/en/Person/founder.mdx +18 -0
  461. package/templates/content/en/Pricing/pricing.mdx +538 -0
  462. package/templates/content/en/Pricing/pricing.schema.json +209 -0
  463. package/templates/content/en/PrivacyPage/privacy.mdx +165 -0
  464. package/templates/content/en/PrivacyPage/privacy.schema.json +64 -0
  465. package/templates/content/en/Product/ailk.mdx +19 -0
  466. package/templates/content/en/Product/ailk.schema.json +94 -0
  467. package/templates/content/en/Product/api-launch-kit.mdx +26 -0
  468. package/templates/content/en/Product/launch-kit.mdx +28 -0
  469. package/templates/content/en/ProductsList/products.mdx +26 -0
  470. package/templates/content/en/Project/ailk-phase-2.mdx +54 -0
  471. package/templates/content/en/ProjectsList/projects.mdx +25 -0
  472. package/templates/content/en/ResourceDetail/aeo-scoring-guide.mdx +27 -0
  473. package/templates/content/en/ResourceDetail/content-model-whitepaper.mdx +28 -0
  474. package/templates/content/en/ResourceDetail/schema-org-quick-reference.mdx +39 -0
  475. package/templates/content/en/ResourcesHub/resources.mdx +22 -0
  476. package/templates/content/en/Service/consulting.mdx +22 -0
  477. package/templates/content/en/Service/implementation.mdx +30 -0
  478. package/templates/content/en/Service/launch-service.mdx +232 -0
  479. package/templates/content/en/Service/launch.mdx +228 -0
  480. package/templates/content/en/ServicesList/services.mdx +84 -0
  481. package/templates/content/en/SoftwareProduct/ailk-aeo.mdx +44 -0
  482. package/templates/content/en/SoftwareProduct/ailk-content-adapters.mdx +47 -0
  483. package/templates/content/en/SoftwareProduct/ailk-schema.mdx +49 -0
  484. package/templates/content/en/TeamList/team.mdx +63 -0
  485. package/templates/content/en/TeamMember/founder.mdx +72 -0
  486. package/templates/content/en/TermsPage/terms.mdx +19 -0
  487. package/templates/content/en/TermsPage/terms.schema.json +99 -0
  488. package/templates/content/en/TestimonialsList/testimonials.mdx +44 -0
  489. package/templates/content/en/UseCasesList/use-cases.mdx +30 -0
  490. package/templates/content/en/Whitepaper/ax-first-product-development.mdx +27 -0
  491. package/templates/content/en/Whitepaper/open-core-commercial-strategy.mdx +27 -0
  492. package/templates/content/en/Whitepaper/structured-data-for-answer-engines.mdx +31 -0
  493. package/templates/content/en-XA/AboutPage/about.mdx +8 -0
  494. package/templates/content/en-XA/FAQPage/faq.mdx +8 -0
  495. package/templates/content/en-XA/HomePage/home.mdx +8 -0
  496. package/templates/content/es/_site.mdx +30 -0
  497. package/templates/content/fr/_site.mdx +30 -0
  498. package/templates/content/ja/_site.mdx +30 -0
  499. package/templates/content/pt-BR/AboutPage/about.mdx +8 -0
  500. package/templates/content/pt-BR/FAQPage/faq.mdx +8 -0
  501. package/templates/content/pt-BR/HomePage/home.mdx +23 -0
  502. package/templates/database/CHANGELOG.md +5 -0
  503. package/templates/database/README.md +234 -0
  504. package/templates/database/__tests__/user-cascade.test.ts +125 -0
  505. package/templates/database/auth/.gitkeep +0 -0
  506. package/templates/database/config/.gitkeep +0 -0
  507. package/templates/database/content/.gitkeep +0 -0
  508. package/templates/database/inbox/.gitkeep +0 -0
  509. package/templates/database/inbox/README.md +3 -0
  510. package/templates/database/inbox/__tests__/schema.test.ts +40 -0
  511. package/templates/database/inbox/schema.prisma +52 -0
  512. package/templates/database/jest.config.cjs +29 -0
  513. package/templates/database/migrations/20260508000000_add_inbox_namespace/migration.sql +328 -0
  514. package/templates/database/migrations/20260513000000_better_auth_migration/migration.sql +100 -0
  515. package/templates/database/migrations/20260515000000_add_user_billing_fields/migration.sql +28 -0
  516. package/templates/database/migrations/20260516000000_add_user_tier_care_plan_seat/migration.sql +25 -0
  517. package/templates/database/migrations/20260518000000_add_telemetry_records/migration.sql +42 -0
  518. package/templates/database/migrations/20260525000000_theme_wiring/migration.sql +67 -0
  519. package/templates/database/migrations/20260710000000_retire_commercial_tier/migration.sql +21 -0
  520. package/templates/database/migrations/migration_lock.toml +3 -0
  521. package/templates/database/ops/.gitkeep +0 -0
  522. package/templates/database/package.json +45 -0
  523. package/templates/database/prisma.config.ts +20 -0
  524. package/templates/database/schema.prisma +487 -0
  525. package/templates/database/scripts/db-generate-locked.sh +80 -0
  526. package/templates/database/seed-test.ts +85 -0
  527. package/templates/database/tsconfig.build.json +16 -0
  528. package/templates/database/tsconfig.json +9 -0
  529. package/templates/package.json +125 -0
  530. package/templates/pnpm-workspace.yaml +6 -0
  531. package/templates/project.yaml +59 -0
  532. package/templates/tsconfig.base.json +18 -0
  533. package/templates/tsconfig.json +45 -0
@@ -0,0 +1,417 @@
1
+ ---
2
+ type: "LandingPage"
3
+ slug: "for-ai-search-agencies"
4
+ title: "Your AEO work keeps fighting the platform, not the client."
5
+ description: "AILK is the open-source foundation AI-search agencies deploy client sites on — schema-typed, agent-callable, audited pre-launch. Book a Launch Service call."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "badge": "Apache 2.0 — the team runs three brands on this substrate",
14
+ "headline": "Your AEO work keeps fighting the platform, not the client.",
15
+ "subheadline": "Every citation win gets re-fought on the next plugin update. AILK is the foundation built to hold the work you've already done — schema-typed, agent-callable, audited before launch.",
16
+ "primaryCta":
17
+ {
18
+ "label": "Book a Launch Service Call",
19
+ "href": "/launch-service",
20
+ },
21
+ "secondaryCta":
22
+ {
23
+ "label": "Start a Pro trial",
24
+ "href": "/pricing",
25
+ "variant": "link",
26
+ },
27
+ },
28
+ },
29
+ {
30
+ "id": "problem-page-is-the-citation-unit",
31
+ "type": "content-block",
32
+ "data":
33
+ {
34
+ "headline": "Why is the page the unit of citation, not the site?",
35
+ "body": "Because that's what the model reads. When ChatGPT recommends a business, it assembled that answer from pages — read, attributed, quoted. Your client's whole site never enters the decision; the page the model trusted enough to cite does.\n\nThat changes what a foundation has to do. A website used to be a marketing surface humans visited. Now it's also infrastructure AI systems read on a buyer's behalf, and most of the web wasn't built for that second reader. WordPress dates to a time when Google was the only entry point. SaaS starters were shaped for dashboards, not marketing pages. Closed builders were shaped for lock-in, not portability.\n\nThe schema you tighten, the entity references you clean up, the FAQ blocks you add: none of it outlasts the foundation underneath it. If the foundation can't hold structure, the work doesn't compound. It gets refought.",
36
+ },
37
+ },
38
+ {
39
+ "id": "agitation-fighting-the-stack",
40
+ "type": "content-block",
41
+ "data":
42
+ {
43
+ "headline": "What's wrong with WordPress plus a stack of AEO plugins?",
44
+ "body": "Nothing, until you need the pieces to work together. WordPress runs roughly 40% of the web, and a schema plugin, an FAQ plugin, and an entity plugin are each individually real. The problem is what happens between them.\n\nThey don't integrate. A theme update breaks the schema plugin's markup. A caching plugin serves a stale FAQ block. An entity plugin conflicts with whatever the SEO plugin already wrote into the head tag. None of this shows up as an error. The site doesn't crash — it just quietly stops being cited. Nobody notices until a client asks why a competitor showed up in an AI answer instead.\n\nYour citation work depends on whichever combination happens to be installed this month. You audit a client site and fix the gaps. Three plugin updates later, the same gaps are back. Not because your strategy was wrong — because the foundation under it was never built to hold structure at all. It was built for a search engine that indexed pages, not a model that extracts passages from them.\n\nThe fix isn't a better plugin. It's a foundation where schema, entity markup, and FAQ structure ship as defaults — not a stack you maintain by hand, engagement after engagement.",
45
+ },
46
+ },
47
+ {
48
+ "id": "stack-comparison",
49
+ "type": "comparison-table",
50
+ "data":
51
+ {
52
+ "headline": "How does AILK compare to your current stack?",
53
+ "description": "Four alternatives an agency reaches for, measured against the five things a foundation has to do once AI search is part of the deliverable. AILK is the only column with all five.",
54
+ "columns":
55
+ [
56
+ { "key": "wordpress", "name": "WordPress + Plugins" },
57
+ { "key": "saas", "name": "SaaS Starters" },
58
+ { "key": "closed", "name": "Closed Builders" },
59
+ { "key": "aigen", "name": "AI-Generated Builders" },
60
+ { "key": "ailk", "name": "AILK", "highlighted": true },
61
+ ],
62
+ "groups":
63
+ [
64
+ {
65
+ "groupName": "Foundation checklist",
66
+ "rows":
67
+ [
68
+ {
69
+ "featureName": "Typed schema registry",
70
+ "values":
71
+ {
72
+ "wordpress": "Multiple plugins, don't integrate",
73
+ "saas": false,
74
+ "closed": "Weak, not editable",
75
+ "aigen": "Invisible after generation",
76
+ "ailk": "60 page types, built in",
77
+ },
78
+ },
79
+ {
80
+ "featureName": "Agent-callable surface",
81
+ "values":
82
+ {
83
+ "wordpress": false,
84
+ "saas": false,
85
+ "closed": false,
86
+ "aigen": false,
87
+ "ailk": "Agents read it the same way people do",
88
+ },
89
+ },
90
+ {
91
+ "featureName": "AEO structure scored pre-launch",
92
+ "values":
93
+ {
94
+ "wordpress": false,
95
+ "saas": false,
96
+ "closed": false,
97
+ "aigen": false,
98
+ "ailk": "ailk audit runs in CI, free",
99
+ },
100
+ },
101
+ {
102
+ "featureName": "Full ownership, no lock-in",
103
+ "values":
104
+ {
105
+ "wordpress": true,
106
+ "saas": true,
107
+ "closed": false,
108
+ "aigen": false,
109
+ "ailk": true,
110
+ },
111
+ },
112
+ {
113
+ "featureName": "Fits a two-week engagement",
114
+ "values":
115
+ {
116
+ "wordpress": "Weeks fighting plugin conflicts",
117
+ "saas": "Wrong shape — built for SaaS dashboards",
118
+ "closed": "Fast, but locked to the vendor",
119
+ "aigen": "Fast, but not citable after",
120
+ "ailk": "Days, built for this exact use case",
121
+ },
122
+ },
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ },
128
+ {
129
+ "id": "perfect-world-criteria",
130
+ "type": "content-block",
131
+ "data":
132
+ {
133
+ "headline": "What would the ideal AI-search foundation actually do?",
134
+ "body": "Five things, and none of them are features bolted on top — they're structural.\n\nA model scanning any page should know what it's about and whose it is, without guessing. Agents now do research on a buyer's behalf too, so the foundation has to treat them as a first-class audience instead of a degraded API. AEO problems are silent by default; a real foundation catches them the way a linter catches a type error — in CI, before launch, not three months after a client asks why they've gone quiet.\n\nThen there's who owns it. A foundation that locks you in shapes its roadmap around the lock-in, which matters directly to an agency reselling client engagements. And there's the clock: an SMB engagement runs weeks, not quarters, and a foundation built around a custom multi-month build breaks those economics before the work even starts.\n\nMost foundations fail at least three of these five. AILK was built to fail none.",
135
+ },
136
+ },
137
+ {
138
+ "id": "introducing-ailk",
139
+ "type": "feature",
140
+ "data":
141
+ {
142
+ "headline": "AI Launch Kit is the open-source foundation for the agent-first internet",
143
+ "description": "AILK is Apache 2.0, agent-ready, and scored for AEO structure before it ships. The starter carries a typed schema registry, an agent-callable surface with CI-enforced parity to the human site, and an audit CLI. It runs the same checks in your pipeline that a client site would otherwise fail silently in production. It's built by the Working Theory team, who run their own brands on it — so the architecture answers a problem they hit first, not one they guessed at.",
144
+ "features":
145
+ [
146
+ {
147
+ "title": "Structure, not a plugin stack",
148
+ "description": "Schema, entity markup, and FAQ structure ship as defaults across 60 page types.",
149
+ },
150
+ {
151
+ "title": "Built for the engagement, not the demo",
152
+ "description": "Deploys in days, iterates in hours — sized for SMB-scale work, not a quarter-long build.",
153
+ },
154
+ {
155
+ "title": "Yours, fully",
156
+ "description": "Apache 2.0. No vendor reshapes your roadmap and no platform takes a cut of the engagement.",
157
+ },
158
+ ],
159
+ },
160
+ },
161
+ {
162
+ "id": "capabilities-for-agencies",
163
+ "type": "items",
164
+ "data":
165
+ {
166
+ "headline": "What capabilities does AILK ship that AI-search agencies actually need?",
167
+ "description": "Five things the alternatives don't ship — each one a reason the citation work stops getting refought.",
168
+ "columns": 2,
169
+ "items":
170
+ [
171
+ {
172
+ "title": "A typed schema registry, built in",
173
+ "description": "Sixty page types, each with schema validation and JSON-LD generated from the page content. FAQ, entity, and identity markup ship by default — no plugin combination to keep patched.",
174
+ },
175
+ {
176
+ "title": "Agents get the same site people do",
177
+ "description": "Every capability on the site is also available to an agent acting on a buyer's behalf, kept in sync automatically. Your client shows up correctly whether a human or an agent is looking.",
178
+ },
179
+ {
180
+ "title": "The audit runs before launch, not after",
181
+ "description": "The ailk audit CLI checks structural AEO readiness in your pipeline, catching missing schema and ambiguous entities before a client site ships — not after a client starts asking questions.",
182
+ },
183
+ {
184
+ "title": "Apache 2.0, no asterisk",
185
+ "description": "Not source-available, not free-until-it-matters. The foundation is complete. Paid tiers add capability on top — they never gate what you already have.",
186
+ },
187
+ {
188
+ "title": "Scaffolding that stays fast after launch",
189
+ "description": "Standing up a new client site and adding a service page six months later are the same guided workflow. The marginal cost of a page approaches zero.",
190
+ },
191
+ ],
192
+ },
193
+ },
194
+ {
195
+ "id": "citation-work-compounds",
196
+ "type": "content-block",
197
+ "data":
198
+ {
199
+ "headline": "How does the citation work start compounding instead of getting refought?",
200
+ "body": "Because the structure holds between engagements instead of drifting. On a WordPress-plus-plugins stack, every campaign re-fights the same weak markup and the same plugin conflicts. The client's citation position resets every time a theme or plugin updates underneath it.\n\nOn AILK, that structure — schema, entity references, FAQ blocks — belongs to the page type itself, not a layer bolted on afterward. A citation win from last quarter is still standing today, because nothing beneath it moved. Your next engagement on the same substrate starts from that baseline instead of from zero.\n\nThat's the actual difference between a foundation and a stack: a stack requires maintenance to stay correct. A foundation stays correct by default. For an agency whose deliverable is AI search visibility, that difference is the entire margin on the engagement. The hours you used to spend re-fighting the platform go into the citation work itself.",
201
+ },
202
+ },
203
+ {
204
+ "id": "benefit-proof-points",
205
+ "type": "stats",
206
+ "data":
207
+ {
208
+ "headline": "What changes once the foundation stops being the bottleneck",
209
+ "variant": "grid",
210
+ "items":
211
+ [
212
+ {
213
+ "value": "CI-enforced",
214
+ "label": "Agent and human surfaces stay in parity automatically — no manual sync work per engagement.",
215
+ },
216
+ {
217
+ "value": "Pre-launch",
218
+ "label": "ailk audit catches structural gaps in the pipeline, before a client site ships, not after.",
219
+ },
220
+ {
221
+ "value": "Apache 2.0",
222
+ "label": "You own the codebase outright. No platform reshapes the roadmap or takes a cut.",
223
+ },
224
+ {
225
+ "value": "≈0 marginal cost",
226
+ "label": "Adding a page after launch is the same guided workflow as building the first one.",
227
+ },
228
+ ],
229
+ },
230
+ },
231
+ {
232
+ "id": "agency-objections",
233
+ "type": "faq",
234
+ "data":
235
+ {
236
+ "headline": "Common questions from AEO-practitioner agencies evaluating AILK",
237
+ "items":
238
+ [
239
+ {
240
+ "question": "AILK is pre-launch. Why bet on it now?",
241
+ "answer": "Apache 2.0 bounds your downside directly: if AILK never finds traction, you keep the codebase and you keep the client. The structural claims are also things you can verify yourself rather than take on faith. The schema registry, the audit CLI, the agent-callable surface are all things you can inspect before committing an engagement to them.",
242
+ },
243
+ {
244
+ "question": "We manage a portfolio of client sites — where's fleet management?",
245
+ "answer": "Fleet management, cross-site rollup, and white-label licensing are planned as a future Enterprise multi-tenant entitlement, not shipped yet. At launch, you deliver per-site on the OSS foundation plus Pro. If managing a whole portfolio as one fleet is a hard requirement today, this isn't yet the right fit for that specific need.",
246
+ },
247
+ {
248
+ "question": "How does this relate to Working Theory Platform? Are we locked in?",
249
+ "answer": "You're not. AILK works fully standalone — it doesn't require Working Theory Platform, and Working Theory Platform doesn't require it. For customers who also want a full growth-marketing system, Platform publishes into AILK with the deepest integration. Better together, never exclusive.",
250
+ },
251
+ {
252
+ "question": "Will this replace our existing citation-tracking workflow?",
253
+ "answer": "No — it's the foundation your citation-tracking work runs on top of, not a replacement for it. AILK ships the structural side (schema, entity markup, agent-readiness). That way, the pages you're already tracking hold their citation position instead of drifting every time the underlying stack updates.",
254
+ },
255
+ ],
256
+ },
257
+ },
258
+ {
259
+ "id": "pricing-teaser",
260
+ "type": "objection",
261
+ "data":
262
+ {
263
+ "items":
264
+ [
265
+ {
266
+ "objection": "What does it cost to move an AEO engagement onto AILK?",
267
+ "response": "The foundation itself is free — Apache 2.0, no license fee. Launch Service, the fixed-scope two-week deploy, is $2,495. Ongoing per-user access is $249/year on Pro. Full tier breakdown, including Pro Plus, is on the pricing page.",
268
+ },
269
+ ],
270
+ "actions":
271
+ [
272
+ {
273
+ "kind": "link",
274
+ "label": "See full pricing",
275
+ "href": "/pricing",
276
+ },
277
+ ],
278
+ },
279
+ },
280
+ {
281
+ "id": "book-launch-service",
282
+ "type": "cta",
283
+ "data":
284
+ {
285
+ "headline": "Book a Launch Service call and stop fighting the foundation.",
286
+ "description": "A fixed-scope, two-week deploy onto the substrate your citation work can actually compound on. Bring the next client site; we'll show you what changes.",
287
+ "primaryCta":
288
+ {
289
+ "label": "Book a Launch Service Call",
290
+ "href": "/launch-service",
291
+ },
292
+ "secondaryCta":
293
+ {
294
+ "label": "Start a Pro trial instead",
295
+ "href": "/pricing",
296
+ "variant": "link",
297
+ },
298
+ },
299
+ },
300
+ ]
301
+ status: "Approved"
302
+ pageKey: "WebPage (/for-ai-search-agencies)"
303
+ entity: "ailaunchkit"
304
+ urlSlug: "for-ai-search-agencies"
305
+ lastUpdated: "2026-07-06"
306
+ pageLevelSchemaType: "LandingPage"
307
+ ---
308
+
309
+ import { JsonLd } from "@/components/JsonLd";
310
+
311
+ <JsonLd
312
+ data={{
313
+ "@context": "https://schema.org",
314
+ "@graph": [
315
+ {
316
+ "@type": "Product",
317
+ additionalType: "SoftwareApplication",
318
+ "@id": "https://ailaunchkit.ai/#product",
319
+ name: "AI Launch Kit",
320
+ alternateName: [
321
+ "AI Launch Kit by Working Theory",
322
+ "AILK by Working Theory",
323
+ "AILK",
324
+ "@ailaunchkit",
325
+ "@ailk",
326
+ "@working-theory",
327
+ "ai-launch-kit",
328
+ ],
329
+ url: "https://ailaunchkit.ai",
330
+ description:
331
+ "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.",
332
+ sameAs: [
333
+ "https://github.com/working-theory-labs/ai-launch-kit",
334
+ "https://x.com/ailaunchkit",
335
+ "https://www.npmjs.com/org/ailk",
336
+ "https://youtube.com/@working-theory",
337
+ "https://linkedin.com/company/working-theory",
338
+ ],
339
+ foundingDate: "2026",
340
+ manufacturer: {
341
+ "@id": "https://workingtheory.ai/#organization",
342
+ "@type": "Organization",
343
+ name: "SalesSmyth LLC",
344
+ },
345
+ brand: {
346
+ "@id": "https://workingtheory.ai/#brand",
347
+ "@type": "Brand",
348
+ name: "Working Theory",
349
+ },
350
+ creator: {
351
+ "@id": "https://samhenry.org/#person",
352
+ "@type": "Person",
353
+ name: "Sam Henry",
354
+ },
355
+ category: "Open-source website foundation",
356
+ applicationCategory: "DeveloperApplication",
357
+ operatingSystem: "Cross-platform (Node.js)",
358
+ license: "https://www.apache.org/licenses/LICENSE-2.0",
359
+ codeRepository: "https://github.com/working-theory-labs/ai-launch-kit",
360
+ offers: [
361
+ {
362
+ "@type": "Offer",
363
+ name: "Free (OSS, Apache 2.0)",
364
+ price: "0",
365
+ priceCurrency: "USD",
366
+ },
367
+ {
368
+ "@type": "Offer",
369
+ name: "Pro",
370
+ price: "249",
371
+ priceCurrency: "USD",
372
+ priceSpecification: {
373
+ "@type": "UnitPriceSpecification",
374
+ price: "249",
375
+ priceCurrency: "USD",
376
+ unitText: "per user per year",
377
+ },
378
+ },
379
+ {
380
+ "@type": "Offer",
381
+ name: "Pro Plus",
382
+ price: "449",
383
+ priceCurrency: "USD",
384
+ priceSpecification: {
385
+ "@type": "UnitPriceSpecification",
386
+ price: "449",
387
+ priceCurrency: "USD",
388
+ unitText: "per user per month",
389
+ },
390
+ },
391
+ {
392
+ "@type": "Offer",
393
+ name: "Launch Service",
394
+ price: "2495",
395
+ priceCurrency: "USD",
396
+ },
397
+ ],
398
+ },
399
+ {
400
+ "@type": "WebPage",
401
+ "@id": "https://ailaunchkit.ai/for-ai-search-agencies#webpage",
402
+ url: "https://ailaunchkit.ai/for-ai-search-agencies",
403
+ name: "Your AEO work keeps fighting the platform, not the client.",
404
+ description:
405
+ "AILK is the open-source foundation AI-search agencies deploy client sites on — schema-typed, agent-callable, audited pre-launch. Book a Launch Service call.",
406
+ isPartOf: { "@id": "https://ailaunchkit.ai/#product" },
407
+ about: { "@id": "https://ailaunchkit.ai/#product" },
408
+ audience: {
409
+ "@type": "Audience",
410
+ audienceType: "AI-search and AEO-practitioner agencies",
411
+ },
412
+ },
413
+ ],
414
+ }}
415
+ />
416
+
417
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
@@ -0,0 +1,105 @@
1
+ {
2
+ "@context": "https://schema.org",
3
+ "@graph": [
4
+ {
5
+ "@type": "Product",
6
+ "additionalType": "SoftwareApplication",
7
+ "@id": "https://ailaunchkit.ai/#product",
8
+ "name": "AI Launch Kit",
9
+ "alternateName": [
10
+ "AI Launch Kit by Working Theory",
11
+ "AILK by Working Theory",
12
+ "AILK",
13
+ "@ailaunchkit",
14
+ "@ailk",
15
+ "@working-theory",
16
+ "ai-launch-kit"
17
+ ],
18
+ "url": "https://ailaunchkit.ai",
19
+ "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.",
20
+ "sameAs": [
21
+ "https://github.com/working-theory-labs/ai-launch-kit",
22
+ "https://x.com/ailaunchkit",
23
+ "https://www.npmjs.com/org/ailk",
24
+ "https://youtube.com/@working-theory",
25
+ "https://linkedin.com/company/working-theory"
26
+ ],
27
+ "foundingDate": "2026",
28
+ "manufacturer": {
29
+ "@id": "https://workingtheory.ai/#organization",
30
+ "@type": "Organization",
31
+ "name": "SalesSmyth LLC"
32
+ },
33
+ "brand": {
34
+ "@id": "https://workingtheory.ai/#brand",
35
+ "@type": "Brand",
36
+ "name": "Working Theory"
37
+ },
38
+ "creator": {
39
+ "@id": "https://samhenry.org/#person",
40
+ "@type": "Person",
41
+ "name": "Sam Henry"
42
+ },
43
+ "category": "Open-source website foundation",
44
+ "applicationCategory": "DeveloperApplication",
45
+ "operatingSystem": "Cross-platform (Node.js)",
46
+ "license": "https://www.apache.org/licenses/LICENSE-2.0",
47
+ "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit",
48
+ "offers": [
49
+ {
50
+ "@type": "Offer",
51
+ "name": "Free (OSS, Apache 2.0)",
52
+ "price": "0",
53
+ "priceCurrency": "USD"
54
+ },
55
+ {
56
+ "@type": "Offer",
57
+ "name": "Pro",
58
+ "price": "249",
59
+ "priceCurrency": "USD",
60
+ "priceSpecification": {
61
+ "@type": "UnitPriceSpecification",
62
+ "price": "249",
63
+ "priceCurrency": "USD",
64
+ "unitText": "per user per year"
65
+ }
66
+ },
67
+ {
68
+ "@type": "Offer",
69
+ "name": "Pro Plus",
70
+ "price": "449",
71
+ "priceCurrency": "USD",
72
+ "priceSpecification": {
73
+ "@type": "UnitPriceSpecification",
74
+ "price": "449",
75
+ "priceCurrency": "USD",
76
+ "unitText": "per user per month"
77
+ }
78
+ },
79
+ {
80
+ "@type": "Offer",
81
+ "name": "Launch Service",
82
+ "price": "2495",
83
+ "priceCurrency": "USD"
84
+ }
85
+ ]
86
+ },
87
+ {
88
+ "@type": "WebPage",
89
+ "@id": "https://ailaunchkit.ai/for-ai-search-agencies#webpage",
90
+ "url": "https://ailaunchkit.ai/for-ai-search-agencies",
91
+ "name": "Your AEO work keeps fighting the platform, not the client.",
92
+ "description": "AILK is the open-source foundation AI-search agencies deploy client sites on — schema-typed, agent-callable, audited pre-launch. Book a Launch Service call.",
93
+ "isPartOf": {
94
+ "@id": "https://ailaunchkit.ai/#product"
95
+ },
96
+ "about": {
97
+ "@id": "https://ailaunchkit.ai/#product"
98
+ },
99
+ "audience": {
100
+ "@type": "Audience",
101
+ "audienceType": "AI-search and AEO-practitioner agencies"
102
+ }
103
+ }
104
+ ]
105
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: "LandingPage"
3
+ slug: "for-businesses"
4
+ title: "Your agency sent you here for a reason."
5
+ description: "Your agency flagged your website for a reason — AI now reads and recommends businesses the way search engines used to rank them. See what changes and what it costs to fix."
6
+ sections: [{"id": "hero", "type": "hero", "data": {"headline": "Your agency sent you here for a reason.", "subheadline": "The way people find businesses is changing fast. An aging website costs you customers you never even see leave. Here's what your agency found — and the two options in front of you.", "primaryCta": {"label": "Schedule with your agency", "href": "/contact", "variant": "default"}, "secondaryCta": {"label": "Book Launch Service directly", "href": "/launch-service", "variant": "outline"}}}, {"id": "insight-page-is-what-gets-quoted", "type": "content-block", "data": {"headline": "Why does your website even matter to ChatGPT?", "body": "When someone asks ChatGPT, Google, or Perplexity to recommend a business like yours, the AI reads real web pages first and repeats only the ones it trusts. Your website has quietly become the source material an AI reads on a customer's behalf — often before that customer ever visits your site directly, or calls you at all.\n\nThat's a new kind of front door. A shopper asking an AI assistant \"which local law firm handles small-business contracts\" never sees your homepage the way a human visitor does. The AI reads your pages, decides what your business actually offers, and picks a name to say out loud. Give it too little to trust, and it names a competitor instead.\n\nYour agency flagged this because it's now part of the job: making sure your business is the one the AI actually names."}}, {"id": "your-current-site-the-honest-read", "type": "content-block", "data": {"headline": "You're running on WordPress. It works. So what's the problem?", "body": "WordPress runs roughly four in ten websites on the internet, including possibly yours. It works. It's worked for years. That's not the problem your agency is pointing at.\n\nThe problem is what WordPress was built for. It was built for a world where Google was the only front door: type a search, click a blue link, land on a page built to rank. AI-assisted answers didn't exist yet. Every plugin bolted on since then patches a gap the original platform never had to solve: the schema plugin, the FAQ plugin, the speed plugin. None of them talk to each other cleanly.\n\nYour agency spends real hours fighting those plugin conflicts instead of doing the work you're paying them for: getting your business found and recommended. The cost doesn't show up on an invoice line — it shows up every time a competitor gets named instead of you."}}, {"id": "what-the-foundation-should-do", "type": "items", "data": {"headline": "If we were building your site from scratch today, what would be true?", "description": "Five things would be true about your site if it were built for how people actually find businesses now.", "items": [{"title": "AI would read it correctly", "description": "When ChatGPT or Google's AI reads a page, it would know exactly what your business does and who runs it — no guessing, no crediting your work to someone else."}, {"title": "It would work for visitors who aren't human", "description": "More research now happens through AI assistants acting on a customer's behalf. Your site would treat that visitor as seriously as a person clicking around at 9pm."}, {"title": "It would catch its own problems before launch", "description": "Instead of finding out you're invisible to AI search three months after the fact, a tool would flag the gap before the site ever goes live."}, {"title": "It would belong to you, not a platform", "description": "If you ever left your agency, your host, or any single vendor, the site would go with you — not get held hostage by a login you don't control."}, {"title": "It would fit inside a normal project, not a year-long build", "description": "Getting this right wouldn't take a six-month custom project. Weeks, not quarters."}]}}, {"id": "introducing-the-foundation-your-agency-chose", "type": "feature", "data": {"headline": "That's the foundation we'd specify. It now exists.", "description": "Your agency isn't guessing. What's described above is real, shipped software — built by the same team that runs its own businesses on it. They don't build it from nothing; they specify it, and a two-week engagement called Launch Service puts your business on it.", "features": [{"title": "Built for how AI reads a page", "description": "Every page is structured so AI systems can identify your business correctly and quote it with confidence — the exact gap that costs businesses citations today."}, {"title": "Delivered in two weeks, not months", "description": "Launch Service is a fixed-scope, two-week deploy at a flat $2,495 — not an open-ended custom build with a moving deadline."}, {"title": "Owned by you", "description": "There's no platform fee taking a cut of your business and no vendor holding your site hostage. If you ever leave, the site leaves with you."}]}}, {"id": "why-trust-this-recommendation", "type": "objection", "data": {"headline": "Should you trust your agency's recommendation here?", "items": [{"objection": "My agency is telling me to move to something I've never heard of. Why should I trust that?", "response": "Because vetting your website's foundation is now part of what a good AI-search agency does for you — the same way they'd flag a slow host or a broken contact form. They're not selling you the foundation; they're specifying it. And the downside is bounded either way: a two-week, fixed-price engagement at $2,495, and you own everything that comes out of it."}]}}, {"id": "common-questions", "type": "faq", "data": {"headline": "Questions business owners ask before saying yes", "items": [{"question": "Do I have to leave my agency to do this?", "answer": "No. Your agency stays your point of contact for content, strategy, and results. Launch Service replaces the foundation underneath your site — it doesn't replace the agency relationship you already trust."}, {"question": "What does this actually cost?", "answer": "Launch Service is a flat $2,495 for the full two-week build. There's no ongoing platform fee taking a cut of your business."}, {"question": "How long does this take?", "answer": "Two weeks from kickoff to a live site — not a multi-month custom project."}, {"question": "What if I don't understand the technical side?", "answer": "You don't need to. Your agency handles the specifics; you get a site that works better for how customers find you now, explained in plain terms at every step."}, {"question": "What happens to my current site?", "answer": "Your current content and business information move over — you're not starting from a blank page. The foundation underneath changes; the business you've built on top of it doesn't disappear."}]}}, {"id": "next-step", "type": "cta", "data": {"headline": "Talk to your agency, or start the two-week build directly.", "description": "Your agency can walk you through this in person, or book the two-week build yourself. Curious what a modern small-business site actually looks like? Read a plain-language walkthrough first.", "primaryCta": {"label": "Schedule with your agency", "href": "/contact", "variant": "default"}, "secondaryCta": {"label": "Book Launch Service directly", "href": "/launch-service", "variant": "outline"}}}]
7
+ status: "Approved"
8
+ pageKey: "WebPage (/for-businesses)"
9
+ entity: "ailaunchkit"
10
+ urlSlug: "for-businesses"
11
+ lastUpdated: "2026-07-06"
12
+ pageLevelSchemaType: "LandingPage"
13
+ ---
14
+
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"}], "contributor": [{"@type": "SoftwareApplication", "name": "Claudio Planck", "description": "AI engineering agent contributing to architecture, code review, and implementation across the AILK substrate."}, {"@type": "SoftwareApplication", "name": "Anders Stewart", "description": "AI VP Engineering agent owning implementation strategy across the AILK substrate."}]}, {"@type": "WebPage", "@id": "https://ailaunchkit.ai/for-businesses#webpage", "url": "https://ailaunchkit.ai/for-businesses", "name": "Your agency sent you here for a reason.", "description": "Your agency flagged your website for a reason — AI now reads and recommends businesses the way search engines used to rank them. See what changes and what it costs to fix.", "isPartOf": {"@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). */}
@@ -0,0 +1,96 @@
1
+ {
2
+ "@context": "https://schema.org",
3
+ "@graph": [
4
+ {
5
+ "@type": [
6
+ "Product",
7
+ "SoftwareApplication"
8
+ ],
9
+ "@id": "https://ailaunchkit.ai/#product",
10
+ "name": "AI Launch Kit",
11
+ "alternateName": [
12
+ "AI Launch Kit by Working Theory",
13
+ "AILK by Working Theory",
14
+ "AILK",
15
+ "@ailaunchkit",
16
+ "@ailk",
17
+ "@working-theory",
18
+ "ai-launch-kit"
19
+ ],
20
+ "url": "https://ailaunchkit.ai",
21
+ "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.",
22
+ "sameAs": [
23
+ "https://github.com/working-theory-labs/ai-launch-kit",
24
+ "https://x.com/ailaunchkit",
25
+ "https://www.npmjs.com/org/ailk",
26
+ "https://youtube.com/@working-theory",
27
+ "https://linkedin.com/company/working-theory"
28
+ ],
29
+ "foundingDate": "2026",
30
+ "category": "Open-source website foundation",
31
+ "applicationCategory": "DeveloperApplication",
32
+ "operatingSystem": "Cross-platform (Node.js)",
33
+ "license": "https://www.apache.org/licenses/LICENSE-2.0",
34
+ "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit",
35
+ "manufacturer": {
36
+ "@id": "https://workingtheory.ai/#organization"
37
+ },
38
+ "brand": {
39
+ "@id": "https://workingtheory.ai/#organization"
40
+ },
41
+ "creator": {
42
+ "@id": "https://samhenry.org/#person"
43
+ },
44
+ "offers": [
45
+ {
46
+ "@type": "Offer",
47
+ "name": "Free (OSS, Apache 2.0)",
48
+ "price": "0",
49
+ "priceCurrency": "USD"
50
+ },
51
+ {
52
+ "@type": "Offer",
53
+ "name": "Pro",
54
+ "price": "249",
55
+ "priceCurrency": "USD",
56
+ "unitText": "per user per year"
57
+ },
58
+ {
59
+ "@type": "Offer",
60
+ "name": "Pro Plus",
61
+ "price": "449",
62
+ "priceCurrency": "USD",
63
+ "unitText": "per user per month"
64
+ },
65
+ {
66
+ "@type": "Offer",
67
+ "name": "Launch Service",
68
+ "price": "2495",
69
+ "priceCurrency": "USD"
70
+ }
71
+ ],
72
+ "contributor": [
73
+ {
74
+ "@type": "SoftwareApplication",
75
+ "name": "Claudio Planck",
76
+ "description": "AI engineering agent contributing to architecture, code review, and implementation across the AILK substrate."
77
+ },
78
+ {
79
+ "@type": "SoftwareApplication",
80
+ "name": "Anders Stewart",
81
+ "description": "AI VP Engineering agent owning implementation strategy across the AILK substrate."
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "@type": "WebPage",
87
+ "@id": "https://ailaunchkit.ai/for-businesses#webpage",
88
+ "url": "https://ailaunchkit.ai/for-businesses",
89
+ "name": "Your agency sent you here for a reason.",
90
+ "description": "Your agency flagged your website for a reason — AI now reads and recommends businesses the way search engines used to rank them. See what changes and what it costs to fix.",
91
+ "isPartOf": {
92
+ "@id": "https://ailaunchkit.ai/#product"
93
+ }
94
+ }
95
+ ]
96
+ }