Weekly support trends
Every Monday, Claude Code reads the newest ticket export in your folder, counts tickets by category with a script, then reads the subjects to find the themes behind the numbers. It compares with last week’s report, calls out anything rising fast, and recommends the help articles and bug fixes that would remove the most tickets.
- Find export Shell
- Find themes Claude Code · Sonnet
- Post to Slack Shell
What each step does
Find export
ShellPicks the newest CSV and last week’s report.
Find themes
Claude Code · SonnetCounts tickets with a script, clusters subjects into themes, compares with last week and saves the report.
Post to Slack
ShellPosts the report to the support channel.
From copy to first run
- Copy the pipeline JSON with the button above.
- In Jimothy, open Pipelines → New pipeline, paste it under “Or import a pipeline JSON” and click Import.
- Under Workspace, choose the folder where you save the weekly ticket export.
- Fill in the variables below under Pipeline settings → Variables.
- Triggers → Add trigger → Schedule, cron 0 8 * * 1 (Mondays at 08:00).
Export last week’s tickets as CSV with at least id, created date, subject, tags or category, and status. Reports are kept in reports/ inside the folder, so each week compares with the last.
What to fill in
The prompts and commands read these as {{vars.<name>}}. The examples are placeholders: replace them with your own.
| Variable | What to put in it | Example |
|---|---|---|
slackWebhookUrl | A Slack incoming webhook for the support channel. | — |
Show the pipeline JSON
{
"jimothyPipeline": 1,
"name": "Weekly support trends",
"description": "Finds the themes in the week’s tickets, what’s rising, and which docs or bugs would cut volume most.",
"icon": "sparkles",
"color": "#b45309",
"repo": {
"mode": "inplace",
"localPath": ""
},
"concurrency": 1,
"variables": {
"slackWebhookUrl": ""
},
"steps": [
{
"id": "find",
"name": "Find export",
"type": "shell",
"description": "Picks the newest CSV and last week’s report.",
"timeoutMinutes": 1,
"command": "f=$(ls -t -- *.csv 2>/dev/null | head -1); [ -n \"$f\" ] || { echo \"Put the ticket export (.csv) in $(pwd)\"; exit 1; }; echo \"Export: $f\"; last=$(ls -t reports/support-*.md 2>/dev/null | head -1); echo \"Last report: $last\""
},
{
"id": "analyze",
"name": "Find themes",
"type": "agent",
"description": "Counts tickets with a script, clusters subjects into themes, compares with last week and saves the report.",
"harnessId": "claude-code",
"model": "sonnet",
"dependsOn": [
"find"
],
"timeoutMinutes": 30,
"prompt": "{{steps.find.output}}\n\n1. With a script, count tickets in the export by category or tag and by status.\n2. Read the subjects (and descriptions, if present) and group them into themes that explain the volume, with a count and two example ticket ids each.\n3. If there's a last report, compare and flag themes that grew by more than 50% or are new.\n4. Recommend up to three help articles and up to three bug fixes that would remove the most tickets, with the tickets they'd cover.\n\nSave the report to reports/support-<today as YYYY-MM-DD>.md (create the folder if needed) and don't modify any other file. Your final answer is the same report as a Slack message (*bold*, - bullets), under 350 words."
},
{
"id": "post",
"name": "Post to Slack",
"type": "shell",
"description": "Posts the report to the support channel.",
"dependsOn": [
"analyze"
],
"timeoutMinutes": 2,
"command": "printf '{\"text\":%s}' {{steps.analyze.output | json}} | curl -fsS -X POST -H 'Content-Type: application/json' --data @- {{vars.slackWebhookUrl}}"
}
]
}More for support, and beyond
Bug report → engineering ticket
Turns a customer’s bug report into an engineering-ready GitHub issue: reproduction steps, the code likely involved and possible duplicates.
SupportHelp article from a solved ticket
When an agent tags a solved ticket for the knowledge base, drafts a help article from the conversation, or an update to the existing one.
SupportAt-risk customer alert
Scores every new ticket or bad CSAT rating for churn risk and alerts the account owner, with a suggested save play, only when it’s high.