A daily analyst that tunes your search for you.
Two cron passes, four insight types, single-click apply. Coach reads your real search traffic, proposes concrete changes (synonyms, ranking rules, redirects), and lets you accept or dismiss with one tap.
Five concrete things. Run on a schedule.
Coach is not a vague "AI for search" promise. It's a scheduled service that reads
your search_events table, builds a prompt with your catalog and
traffic, asks Skryx AI for actionable recommendations, deduplicates them against
what's already configured, and writes them to a recommendations queue you triage
in the dashboard.
Each one ships with a single-click apply.
A word your customers use that isn't in your catalog.
Coach reads zero-result queries plus low-CTR queries, cross-references the
catalog sample (200 product titles, brands, categories), and proposes a
synonym pair. Each comes with confidence (high / medium / low)
and the search count that triggered it. Single-click apply creates a
multi_way Synonym row and pushes it to the engine in under a
second.
- Catalog-as-ground-truth: a pair is only proposed if the target term has real products. No hallucinated suggestions.
- Diacritic-normalised dedup: Coach checks normalised forms so "căști ⇄ casti" never gets proposed twice.
- Post-filter against enabled synonyms: won't re-propose pairs you already accepted.
{
"type": "missing_synonym",
"confidence": "high",
"search_count": 24,
"payload": {
"root": "trainers",
"synonyms": ["sneakers", "runners"],
"reason": "0-hit query · catalog has 142 sneaker SKUs"
}
}
A query with real volume and no good answer.
Different from missing_synonym — here Coach thinks there is
actually no nearby product. It surfaces the query so you can either add
stock or set up a redirect synonym to the closest existing category.
- Triggered on queries with ≥ 5 searches AND < 3 hits in the lookback window
- Suggested closest existing category for a redirect, if any
- Visible separately from synonym suggestions so merchandising can triage it
{
"type": "catalog_gap",
"confidence": "medium",
"search_count": 11,
"payload": {
"query": "smartwatch bands",
"closest_match": "smart accessories",
"suggested_action": "add_redirect_or_stock"
}
}
A query whose top result is underperforming.
Coach checks click position vs result position. When position-1 results have
weak CTR while position-3+ results cluster around a category or brand,
that's a ranking opportunity. The payload includes a filter expression and
a weight ready to drop into a RankingRule.
- Suggested filter is safety-validated before save (no Typesense-breaking patterns)
- Weight defaults to 3; you adjust in the modal before applying
- Rule is scoped to the exact query that triggered the insight
{
"type": "ranking_opportunity",
"payload": {
"query": "usb c charger",
"effect": {
"filter_by": "brand:Anker",
"weight": 3
},
"reason": "clicks cluster at position 3+ (brand:Anker)"
}
}
Singular ⇄ plural pairs from your actual catalog.
A separate flow from the LLM-driven Coach. GenerateCatalogSynonymsJob
walks your index, extracts title tokens that appear ≥ 2 times and are ≥ 4
chars, runs them through the Romanian morphology service, and proposes up
to 100 singular/plural pairs at once — but only if both forms
appear in the top 2,000 frequent words. No theoretical pairs.
- Romanian today; English and other languages on the roadmap
- Confidence threshold ≥ 0.85 (irregular plurals are hand-curated; 171 pairs)
- Sorted by
frequency × confidence, capped at 100 - Bulk-apply: tick the pairs you want, dismiss the rest, all in one card
// One CoachRecommendation, many pairs { "type": "morphology", "payload": [ { "singular":"cască", "plural":"căști", "freq":412 }, { "singular":"adaptor", "plural":"adaptoare","freq":208 }, { "singular":"baterie", "plural":"baterii", "freq":183 }, // … up to 100 ] }
Your best-converting queries, surfaced.
Not actionable — informational. Coach highlights the queries that drive the most clicks so you know what's already working and what's safe to leave alone. Useful when prioritising A/B tests and merchandising effort.
- Sorted by click-weighted volume in the lookback window
- Linked through to the analytics drill-down so you can inspect the result set
The pipeline, step by step.
Schedule fires
Daily pulse at 04:00 UTC (last 1 day of searches). Weekly
deep pass on Mondays 05:00 UTC (last 7 days). Both run
withoutOverlapping(60) so a slow run never doubles up.
On-demand "Refresh analysis" button consumes one monthly credit.
Build the prompt
Per index: 200 product titles + brand + category + price (catalog sample), top 20 queries with click counts, top 20 zero-result queries, existing enabled synonyms, terms dismissed in the last 30 days (cooldown).
Ask Skryx AI
Fast, low-temperature (0.2) model call, max 4 000 tokens, instructed to be conservative ("only suggest a synonym if the catalog clearly has a corresponding term"). Strict JSON schema enforced on the response.
Deduplicate
Output is normalised (diacritics folded, pairs sorted) and filtered against
the current Synonym table so already-applied pairs don't reappear. Then
written to coach_recommendations with status = pending.
Surface in UI
Pending count and top suggestion show on the main dashboard widget. Full
list lives at /coach: per-type sections, confidence badges,
search counts, Apply / Dismiss buttons.
Apply or dismiss
Apply: one-line handler creates a Synonym / RankingRule and syncs to the engine in ~100 ms. Dismiss: 30-day cooldown — Coach won't re-propose that term until the cooldown lifts.
Don't wait a week for the first useful insight.
If you finish your Auto-Pilot first-batch configuration and your index has already accumulated 50 or more searches, Coach fires once synchronously after Auto-Pilot completes. New tenants typically see their first batch of recommendations within hours of going live — without waiting for Monday's deep pass.
Growth plan and above. Monthly credits.
Each analysis run consumes one credit from your monthly Coach allowance
(set per plan in plans.features.ai_coach.monthly_limit). Quota
is tracked in ai_usage_current_month and reset on
ai_usage_reset_at. Failed runs refund the credit. AI Coach itself
is gated to Growth plan and above — the dashboard surfaces a clear upgrade
message on lower tiers.