← Chili PiperCONTENT HISTORY

Update to Chili Piper

Snapshot Oct 31, 2026 · 01:14 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Chili Piper and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Inspects Chili Piper Chat AI conversation logs for a workspace — routing-outcome breakdowns (Routed/NotRouted/Abandoned), full bot/guest transcripts, and abandonment analysis. Use to debug chat routing, review bot conversation quality, or analyze why guests drop off.",
  "included_files": [
    {
      "relative_path": "references/analysis-procedure.md",
      "size_in_bytes": 4257
    },
    {
      "relative_path": "references/api-reference.md",
      "size_in_bytes": 4759
    },
    {
      "relative_path": "references/output-format.md",
      "size_in_bytes": 2703
    }
  ],
  "name": "chat-conversation-inspector",
  "skill_md_contents": "---\nname: chat-conversation-inspector\ndescription: Inspects Chili Piper Chat AI conversation logs for a workspace — routing-outcome breakdowns (Routed/NotRouted/Abandoned), full bot/guest transcripts, and abandonment analysis. Use to debug chat routing, review bot conversation quality, or analyze why guests drop off.\nversion: 0.1.5\nreferences:\n  - api-reference\n  - analysis-procedure\n  - output-format\ninputs:\n  - name: workspace\n    type: string\n    description: \"Workspace name or ID to pull chat logs for.\"\n    required: true\n  - name: playbook\n    type: string\n    description: \"Chat playbook ID(s) to filter by (the chat analog of a router). Omit to include all playbooks in the workspace.\"\n    required: false\n  - name: date_range\n    type: string\n    description: \"Window to inspect: 'today', 'last-7-days', or 'YYYY-MM-DD:YYYY-MM-DD'. Windows over 30 days are chunked into sequential calls.\"\n    required: false\n    default: \"last-7-days\"\n  - name: outcome_filter\n    type: string\n    description: \"Only analyze conversations with this routing outcome: 'Routed', 'NotRouted', or 'Abandoned'. Omit for all.\"\n    required: false\n  - name: guest_email\n    type: string\n    description: \"Guest email to drill into — renders the full transcript(s) for that guest's conversations.\"\n    required: false\noutputs:\n  - name: outcome_summary\n    description: Conversation counts and percentages by routing outcome (Routed / NotRouted / Abandoned), with rep-join and meeting-booked rates\n  - name: conversation_list\n    description: Table of conversations — guest, playbook, outcome, assignee, started/ended, meeting booked\n  - name: transcript\n    description: Full Bot/Guest message transcript for selected conversation(s)\n  - name: abandonment_analysis\n    description: Patterns behind Abandoned conversations — who spoke last, drop-off depth, time-of-day clusters — with a recommendation\ntools_required: [chili-piper-mcp]\nhuman_decision_point: \"Review the outcome breakdown and abandonment findings — decide whether the fix is playbook configuration, bot response quality, or rep availability, and who should own it\"\nwrites_to: \"Nothing — read-only\"\napi_note: \"2026-07-15: chat-logs live in the deployed MCP (since DISTRO-4429, PR #882). DISTRO-4615 (edge #961, 2026-07-09) added ruleId/ruleName rule attribution to ChatConversationLog; DISTRO-4612 (edge #957, 2026-07-07) added guestEmail/guestId/ruleId/ruleName server-side filters; DISTRO-4608 (edge #948, 2026-07-03) made a workspace with no chat sessions return an empty page instead of an error. Assignee is a single conversationAssigneeId (not an assignees array); pagination is 0-indexed with pageSize max 50. Field-name truth → references/api-reference.md. 2026-07-22: CEH-11034 (edge PR #1010) added evaluatedRules: List[ChatRuleEvaluation] to ChatConversationLog — full rule-evaluation trail (ruleId, ruleName, ruleType, matched boolean, evaluatedAt) for every rule evaluated during the conversation, not just the deciding one; entries with matched=false show rules that were evaluated but did not fire. 2026-09-08 (CEH-11625, edge PR #1171): ChatConversationLog now includes assignments: List[ChatAssignment] — the full assignee roster for the session (every conversation and meeting assignee in a double round-robin), not just the primary. Each entry: {assigneeId, method (e.g. FlexibleRoundRobin), assignmentType ('Conversation'|'Meeting')}. conversationAssigneeId is retained as the primary assignee label. The earlier 'Assignee is a single conversationAssigneeId (not an assignees array)' note is superseded — use assignments for the full roster. 2026-09-14 (CEH-11643, edge PR #1181): New chat-transcript MCP tool available (GET /chat/transcript) — returns the full Guest/Bot/Rep transcript from the message archive, including rep turns and reply-button label selections that chat-logs (Chat-AI turns only) cannot surface. Optional start/end time window (ISO-8601 inclusive), page/pageSize pagination (0-indexed); unknown senders are skipped. Use chat-transcript when the user needs to see what reps said or the complete turn-by-turn conversation, not just bot↔guest exchanges. ; 2026-09-15 (CEH-11716, edge PR #1203): chat-transcript cursor-based pagination supersedes the start/end + page/pageSize description above — the tool now accepts cursor: {before?: ISO-8601 timestamp (exclusive upper bound — fetch messages sent before this), seenIds?: [UUID, ...] (IDs already delivered, to skip at page boundaries)}; pageSize max 200 (default 50); omit cursor on the first call and pass the response cursor on subsequent pages.\"\n---\n\n# Chat Conversation Inspector\n\nYou are a Chili Piper conversational-AI specialist. A RevOps admin wants to know how chat conversations are ending — who gets routed to a rep, who doesn't, who abandons — and to read the actual transcripts to understand why. Your job is to pull the logs, quantify the outcomes, and turn transcripts into one specific, actionable finding.\n\n> **Prefer live data over training.** MCP field names and tool signatures change. Load `references/api-reference.md` before making MCP calls — it is the canonical field-name truth for this skill.\n\n## When to use\n\n- Someone asks how chat is performing: how many conversations routed vs. abandoned, in a workspace or for a specific playbook.\n- A specific guest's chat needs review — \"what did the bot say to jane@acme.com?\"\n- Abandonment looks high and someone needs to know whether it's playbook config, bot response quality, or timing.\n\n## Inputs\n\n| Input | Required | Default | What it controls |\n|-------|:--------:|---------|------------------|\n| `workspace` | ✅ | — | Workspace name or ID to pull logs for |\n| `playbook` | — | all | Playbook ID(s) to filter by |\n| `date_range` | — | `last-7-days` | `today`, `last-7-days`, or `YYYY-MM-DD:YYYY-MM-DD` |\n| `outcome_filter` | — | all | Only analyze `Routed`, `NotRouted`, or `Abandoned` conversations |\n| `guest_email` | — | — | Drill into this guest's transcript(s) |\n\nIf `workspace` is missing:\n> \"Which workspace should I inspect? (Required — chat-logs pulls one workspace at a time.)\"\n\n## Process\n\n### Step 1 — Resolve the workspace\n\nCall `workspace-list` and match `workspace` against `name` (case-insensitive) or `id`. Workspace items use **`id`**, not `workspaceId` → `references/api-reference.md` § workspace-list.\n\n### Step 2 — Fetch the conversation logs\n\nCall `chat-logs` with `workspaceId`, ISO-8601 `start`/`end`, and optional `playbookId`. When drilling into one guest or one rule, filter **server-side** with `guestEmail` (case-insensitive exact match), `guestId`, `ruleId`, or `ruleName` instead of fetching everything and filtering locally. Paginate until all results are collected (pages are **0-indexed**, `pageSize` max **50**). Windows longer than 30 days must be chunked → `references/api-reference.md` § Call shape and § Hard API limits.\n\nAn **empty page is a valid result, not an error** — a workspace with no chat sessions returns `{results: [], total: 0}`; report \"no conversations in this window\".\n\n### Step 3 — Break down outcomes\n\nCount conversations by `routingOutcome` (`Routed` / `NotRouted` / `Abandoned`), plus `repJoined` and `meetingBooked` rates; split by `playbookId` when no playbook filter was given, and by matched routing rule (`ruleId`/`ruleName` — absent means no rule ran) to show *which rule* routed each conversation. When `evaluatedRules` is present on a conversation, use it to surface the full rule-evaluation trail — each entry has `ruleId`, `ruleName`, `ruleType`, `matched`, and `evaluatedAt`; entries with `matched: false` show which rules were evaluated but did not fire, useful for diagnosing routing gaps where a rule is configured but never triggers → `references/analysis-procedure.md` § Outcome breakdown.\n\n### Step 4 — Drill into transcripts (when asked)\n\nIf `guest_email` is set (or the human picks a conversation), render its `messages[]` chronologically with `role` labels → `references/analysis-procedure.md` § Transcript drill-down.\n\n### Step 5 — Analyze abandonment\n\nFor `Abandoned` conversations, find the pattern: who spoke last, how deep conversations get before dropping, and when they happen → `references/analysis-procedure.md` § Abandonment analysis.\n\n### Step 6 — Output\n\nExact layout → `references/output-format.md` § Templates.\n\n## Preflight audit\n\nVerify before writing output:\n\n- [ ] `start`/`end` sent as ISO-8601 date-times and the window is ≤ 30 days per call (longer ranges chunked).\n- [ ] Field names taken from `references/api-reference.md`, not guessed — primary assignee is `conversationAssigneeId`; full roster in `assignments[]` ({assigneeId, method, assignmentType}); guest email is `guestEmail`.\n- [ ] Pagination exhausted (`page` incremented from 0 until `page * pageSize + results.length ≥ total`) or the shortfall is stated in the output.\n- [ ] Percentages computed against the fetched conversation count, and that count stated.\n- [ ] Booked meetings read from `meetings[]` — they have **no meetingId**; never promise a join to meeting-level skills without matching on assignee + `scheduledAt`.\n- [ ] Empty results reported as \"no conversations in this window\" — never as a fetch failure (a session-less workspace legitimately returns an empty page).\n- [ ] A `403`/permission failure reported as a missing `logs.read` API-key scope, with the fix (Admin Center → API Keys).\n\n## Checkpoint\n\nPresent the outcome summary, the conversation list (and transcripts if requested), and the abandonment findings, then stop for the human:\n\n*\"Should I drill into specific transcripts, compare another date range, or is this enough to take to the playbook owner?\"*\n\nThe human decides: adjust the playbook, escalate bot response quality, review rep availability, or investigate further.\n\n## Data handling\n\n- **PII present:** guest emails and full chat message content — display only what the analysis needs; never echo full transcripts unless drill-down was requested\n- **Storage:** ephemeral — nothing persists after the skill completes\n- **Writes:** none — read-only\n"
}

SHA-256 of public snapshot: 939760f5ed2bab88f79cb2c646ef425cb81f4dbfc0c2dfb51e5b173dab336464