Area: Forums (audit p2) · Surface: GET /search (SearchController), forum thread/post search · Dimension: competitor-gap · Severity: major
Every forum search is exact-token MariaDB FULLTEXT matching. A member searching 'how do I cancel my plan' will not find a thread titled 'stopping a subscription' because no tokens overlap. Discourse AI (Discourse's flagship 2024-2025 feature) and Circle both ship semantic/embedding search that matches intent, not keywords, and is the single biggest driver of 'I found my answer without asking' deflection. We already pay for an LLM and have per-tenant keys; not using them for search is the most visible AI gap in the area. The MIN-4-char FULLTEXT limitation (lines 275, 316, 533) also silently drops short and stopword-heavy queries, which semantic search would solve outright.
Evidence
platform/src/Controllers/SearchController.php:355 `WHERE MATCH(t.title) AGAINST(:q IN BOOLEAN MODE)` and :538 `MATCH(p.body) AGAINST(:q IN BOOLEAN MODE)`. grep for embedding|vector|semantic|rag|cosine across SearchController + Services returns zero hits. Meanwhile the platform has a deep Anthropic stack (platform/src/Services/AnthropicClient.php, AIFeatureCatalog with 30+ forum AI features). Search never calls any of it.
Suggested fix. Add an opt-in semantic search layer: embed thread titles + post bodies (Anthropic/Voyage embeddings) into a vector column, blend cosine similarity with the existing FULLTEXT relevance for a hybrid rank. Gate behind a new ai_forum_semantic_search flag in AIFeatureCatalog. Fall back to current FULLTEXT when the key/flag is off, preserving current behaviour.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus