From creatorwood-sushidata-gtm
Build a competitive research matrix — a Google Sheet comparing competitors across features, with color-coded Yes/No/Limited cells and a supporting Evidence tab. Trigger when the user says: "matrix", "sushi matrix", "build a competitive matrix", "compare competitors", "research matrix", "competitor comparison", or any request to compare multiple companies or products across a set of criteria.
How this skill is triggered — by the user, by Claude, or both
Slash command
/creatorwood-sushidata-gtm:sushi-matrixThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When triggered, elicit what to analyze, run the Sushidata swarm, then deliver the
When triggered, elicit what to analyze, run the Sushidata swarm, then deliver the results as a Google Sheet with two tabs: a color-coded matrix and an Evidence tab.
Read
SETTINGS.mdat the plugin root for BASE_URL.
Ask the user for the following in one message:
low (fast), medium (default), or high (thorough)If the user provides enough context in their trigger message, skip the form and proceed directly.
Source priority: The swarm must prioritize official knowledge base and help center documentation over marketing pages, blog posts, or social content. Marketing copy is unreliable for feature claims.
Never launch the entire matrix in one request. Large matrices time out because Claude has a hard ~45-second execution limit per turn. Always break the work into small batches and complete each batch before starting the next.
| Total cells (competitors × features) | Batch size |
|---|---|
| ≤ 10 | 1 batch — all cells |
| 11–30 | 5 cells per batch |
| 31–60 | 4 cells per batch |
| > 60 | 3 cells per batch |
A "cell" = one competitor × one feature. Calculate total cells before launching. Tell the user the plan:
"This matrix has [N] cells. I'll research them in [X] batches of ~[Y] cells each, so nothing times out."
Each cell's task passed to the matrix endpoint must be a single, tightly scoped question — one competitor, one feature. Do not bundle multiple features or multiple competitors into one cell task. Broad tasks fail to complete in time.
Good: "Does Salesforce Sales Cloud support inline spell-check in email compose?"
Bad: "What are Salesforce's email, calendar, and mobile features?"
POST {BASE_URL}matrix/create
Content-Type: application/json
{
"competitors": [
{ "name": "<name>", "description": "<optional one-liner>" }
],
"categories": [
{
"name": "<category>",
"subcategories": [
{ "name": "<subcategory>", "description": "<optional>" }
]
}
],
"reasoningEffort": "medium"
}
Only include the competitors and features for this batch — not the full set.
Response includes doIds — an array of agent IDs, one per cell in the batch.
Tell the user: "Batch [N] of [X] launched — researching [K] cells…"
POST {BASE_URL}matrix/status
Content-Type: application/json
{ "doIds": ["<doId>", ...] }
Do not start the next batch until the current one is fully drained. Wait for
allDone: trueon the current batch before calling/matrix/createagain. This keeps each turn's work small and prevents timeouts.
allDone is true or 5 minutes have elapsed for this batchallDone, collect whatever completed, note the pending cells, then move on to the next batchBefore building the sheet, run a verification pass on all source URLs returned by the swarm. This catches AI summaries that misrepresent the source (e.g. "loves X and Y" flipped from "loves Y, but X needs work").
POST {BASE_URL}verify/
Content-Type: application/json
{
"items": [
{
"competitor": "<competitor name>",
"feature": "<feature name>",
"verdict": "<Yes | No | Limited>",
"claim": "<the AI-generated summary for this cell>",
"url": "<source URL>",
"snippet": "<text excerpt from the source>"
}
]
}
Send all cells in a single request. Response returns each item with:
verified: true/false — whether the claim is supported by the sourceconfidence: 0–1 — confidence scorenote — explanation if verification failed or confidence is lowHandling results:
verified: true and confidence ≥ 0.85 → include as-isverified: true and confidence < 0.85 → include but flag in the Evidence tab as ⚠️ Low confidenceverified: false → do not include in the matrix; mark the cell as ⚠️ Unverified — needs manual reviewTell the user: "Validating [N] sources against their origin pages…"
Create a Google Sheet with two tabs: Matrix and Evidence.
⚠️ No data foundCell verdict rules:
Color coding (apply to the cell background):
#B7E1CD)#FCE8B2)#F4CCCC)#F3F3F3)Flat table with one row per source used, correlated back to the Matrix tab:
| Feature | Competitor | Verdict | Source URL | Snippet | Relevancy | Verified |
|---|
Snippet = the exact text from the source that justifies the verdictVerified = ✅ if confirmed by the verify step, ⚠️ if low confidence, ❌ if failedShare the Google Sheet link with the user.
Then ask:
"Would you like to schedule a Sushidata swarm to monitor these sources for changes and refresh the matrix automatically?"
Options to offer:
If they say yes, hand off to /schedule to set it up.
After delivering the sheet, offer:
💬 "Tell me everything about [Competitor]" — Full account brief with signals and org chart 💬 "Build a battlecard for [Competitor]" — Positioning, objection handling, GTM signals 💬 "Run a deeper matrix on [category]" — Expand with more features 💬 "Save this matrix" — Persist to your context lake
SETTINGS.mddoId values to the user/matrix/create callnpx claudepluginhub georgeportillo/mitratech-sushidata-plugin --plugin sushidata-gtm-mitratechSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.