Closes the named rev-193 next-sprint candidate (per-category keyword filter on the rev-191 archive pages) at the human-readable axis so visitors landing on a category page can narrow the inventory by keyword without bouncing back to /templates + opens the sixth read shape on the templates v1 cluster (aggregate statistics) at GET /api/v1/onboarding-templates/stats so MCP hosts and AI tooling roundup newsletters rendering 'Loop Desk has N templates across M categories with K memory entries' get the answer in one bearer-less GET instead of fetching the full rev-172 listing and walking every template + closes two more rev-193-named radar candidates at the templates axis (independent CrossFit / functional fitness gyms with coach-of-record continuity + class-format hygiene + injury-incident reporting + 14-day silent-regular retention discipline, and independent escape-room operators with room-rotation cadence + incident-response hygiene + staff-coverage discipline + prop & puzzle health) bringing the templates cluster to sixty-one named verticals + extending the rev-78 OpenAPI typed-coverage cadence to its 102nd unbroken rev. Plus a procurement-friendly print stylesheet on /templates and /templates/by-category mirroring the rev-92 share-page + rev-104 /blog/[slug] print primitives at the templates axis so reviewers downloading a per-vertical or per-category surface as a PDF get a clean single-document takeaway without the marketing chrome bleeding ink.
Per-category keyword filter on /templates/by-category/{category} — closes the named rev-193 next-sprint candidateNew CategoryKeywordFilter client component mounts above the per-category card grid and filters the visible cards by keyword (case-insensitive substring match across rendered card text — name, description, keyword hint chip). Activates only when 3+ templates exist in the category so the smallest categories (Finance & insurance, Creative & media) don't see filter chrome. Mirrors the rev-189 /templates filter at the per-category axis but simpler: no category chip row needed since the URL fixes the category. The `/` keyboard shortcut focuses the filter input mirroring the rev-189 + rev-103 + rev-109 vocabulary across every public marketing search surface. Pure DOM-mutation client-side — SSR'd HTML never changes so crawlers + JSON-LD CollectionPage markup + rev-193 explicit OG image references still see every card unconditionally. Strategic significance: closes the named rev-193 next-sprint candidate at the human-readable axis. The rev-193 v1 keyword search shipped at the protocol-bound side; rev 194 closes the symmetry — visitors landing on /templates/by-category/healthcare_wellness from a search snippet now narrow to 'named-therapist' without bouncing back to /templates and applying both filters.
GET /api/v1/onboarding-templates/stats — sixth read shape on the templates v1 clusterAggregate statistics across the templates cluster — totalTemplates + totalCategories + totalMemoryEntries + totalSignals + averageMemoryEntriesPerTemplate + averageMemoryImportance + per-kind / per-priority breakdowns + perCategory[] (templateCount, memoryEntries, signalEntries, averageMemoryEntriesPerTemplate per industry bucket) + launchTimeline (first / latest launch dates + rev). MCP hosts and AI tooling roundup newsletters rendering 'Loop Desk has N templates across M categories with K memory entries' get the answer in one bearer-less GET instead of fetching the rev-172 full listing and walking every template. Closes the sixth read shape on the v1 templates cluster (full listing rev 172 + per-template detail rev 189 + per-category drill-down rev 190 + standalone-taxonomy rev 192 + keyword search rev 193 + stats rev 194). Mirrors the rev-178 /changelog/cadence aggregate-stats pattern at the templates axis on the dimension axis (cadence aggregates by time window; templates aggregate across the corpus). Cache-control public, max-age=300, s-maxage=1800. Strategic significance: the templates v1 cluster reaches its sixth read shape — the upcoming MCP server's templates-axis tooling has nothing left to design across all six axes including aggregate-stats.
Two more onboarding templates — independent CrossFit / functional fitness gyms + independent escape-room operatorsCloses two more rev-193-named radar candidates at two more underserved owner-led service segments. CrossFit / functional fitness gyms (4 high-importance memory entries: coach-of-record continuity per programming block (primary + backup logged so a coach holiday doesn't break the programming arc), class-format hygiene with skill / strength / conditioning split + scaling levels published before class, injury-incident reporting with same-day report + 3/7/14-day check-ins, retention warning on 14-day attendance gap by 3+/week regulars triggering same-week coach text outreach + 1 sample silent-attendance-gap signal). Independent escape-room operators (4 high-importance memory entries: room-rotation cadence with every room refreshing a puzzle or theme element every 18 months minimum, incident-response hygiene with same-shift escalation + 24-hour follow-up on safety incidents, staff-coverage discipline with primary + named on-call backup GM per shift, daily prop test + weekly maintenance log + 1 sample stalled-room signal naming the canonical 24-month-old room with declining repeat-customer share-of-bookings). Two new `OnboardingTemplateKey` enum values (`crossfit_gym`, `escape_room`) extend the rev-19 enum without migration. The templates cluster is now sixty-one named verticals deep. The new templates use simpler, less-named-prefix-heavy language than the rev-185+ templates so they read as procurement-friendly evidence rather than AI-degraded text. Strategic significance: closes two more underserved owner-led segments where retention discipline (the load-bearing primitive in functional fitness) and prop / experience integrity (the load-bearing primitive in escape rooms) are the differentiators against generic AI tools.
Print-friendly stylesheet on /templates + /templates/by-category — procurement takeaway PDFNew `@media print` block in `globals.css` hides every operator-only or interactive surface (top nav, filter chip rows, search inputs, scroll-to-top FAB, bottom CTA button cluster, 'Browse other categories' cross-nav grid, prev/next nav, share chips) so the print reads as the template content alone. Title + lede + per-template card body get print typography; cards force `page-break-inside: avoid` so each one stays intact across page breaks. External links print their full URL inline via `a[href^='http']::after` so the offline reader can trace every reference without scanning the screen version. Mirrors the rev-92 share-page print + rev-93 work-log print + rev-94 timeline print + rev-104 /blog/[slug] print + rev-125 memory CSV procurement-evidence patterns at the templates axis on the public marketing surface. Procurement reviewers + B2B buyers downloading a per-vertical or per-category templates surface as a PDF for SOC 2 / ISO 42001 evidence packages now get a clean single-document takeaway. Cumulative micro-polish — every rev 22+ has carried at least one. Strategic significance: the public marketing surface's print primitive cluster reaches its sixth surface (rev 92 share / rev 93 work-log / rev 94 timeline / rev 104 blog post / rev 194 templates index / rev 194 by-category archive). The full procurement-evidence print story is now end-to-end across every public read shape.
Start free — there are no metered credits to run out.