Identify products a dispensary is missing relative to competitor menus, local customer demand, and category best practices — producing a prioritized gap report with procurement recommendations. Use when a store wants to know what it should be stocking that it isn't. Trigger phrases: "what are we missing on the menu", "menu gaps", "what do competitors carry that we don't", "should we add any products", "menu audit", "what's selling nearby that we don't have".
Surface the delta between what a dispensary currently stocks and what the local market demands — so operators can make confident procurement decisions and stop losing customers to competitors carrying products they don't have.
org_id — requiredcurrent_menu — current store inventory snapshot (pulled from POS or searchMenu())location — city/state for competitor scan radiuscategories — optional; default: flower, vapes, gummies, prerolls, beverages, concentrates, topicalscompetitor_data — optional; uses cached CI report or triggers fresh scanCompetitors() if absentA menu gap is only meaningful if local demand exists for the missing product. Three signals confirm demand:
1. Competitor velocity signal Products appearing on 2+ competitor menus with visible popularity (review count, featured placement, "staff pick") indicate local demand. One competitor carrying something = weak signal. Three = strong.
2. Customer request signal Smokey delegation logs, missed product searches, and "do you carry X?" queries from customers are direct demand evidence. Weight these heavily — customers told you what they want.
3. Category trend signal Category-level shifts (beverage cannabis growing, flower declining nationally) provide context, but only act on these if local evidence supports them. Label as "trend" not "gap" if unconfirmed locally.
Gap scoring:
What to NOT flag:
## Menu Gap Analysis — [Store] — [Date]
DATA SOURCES: [CI report dated X / live scan / customer request logs]
COMPETITORS ANALYZED: N
CATEGORIES REVIEWED: [list]
### Priority 1 Gaps (Strong procurement case)
| Product / Category | Seen At | Customer Requests | Estimated Weekly Demand |
|-------------------|---------|------------------|------------------------|
| ... | 3 competitors | 5 logged requests | ~$800/wk est. |
### Priority 2 Gaps (Investigate further)
| Product / Category | Signal | Confidence | Suggested Action |
|-------------------|--------|-----------|-----------------|
### Priority 3 Watch (Trend only — no local confirmation)
| Trend | Evidence | Monitor Until |
|-------|---------|--------------|
### Recommended Actions
| # | Action | Owner | Timeline |
|---|--------|-------|----------|
| 1 | Add [product] — strong local demand, 3 competitors carry it | Operator | This week |
### What's Working
[1–2 sentences on categories where the store's menu is strong or differentiated vs. competitors]
scanCompetitors() first.