Template · Support

Help article from a solved ticket

Tag a solved ticket kb and your helpdesk posts it to a webhook. Claude Code reads the conversation, searches your help center for an article that already covers it, and writes either a new article or the changes to the existing one, with no customer details. You approve it, and it goes to your help center as a draft.

Download .json

WebhookSUP-3402How do I map custom fields in the NetSuite sync?tag: kb
Pipeline
  1. Draft article Claude Code · Sonnet
  2. Approve article You
  3. Send to help center Shell
Help centerMapping custom NetSuite fieldsNew article, 6 steps, linked from IntegrationsDraft
The pipeline

What each step does

  1. Draft article

    Claude Code · Sonnet

    Checks your help center for an existing article and drafts a new one or an update.

  2. Approve article

    You

    Shows you the article. Reject with a comment and it is rewritten.

  3. Send to help center

    Shell

    Sends the draft to your help center through a webhook.

Set it up

From copy to first run

  1. Copy the pipeline JSON with the button above.
  2. In Jimothy, open Pipelines → New pipeline, paste it under “Or import a pipeline JSON” and click Import.
  3. Fill in the variables below under Pipeline settings → Variables.
  4. Triggers → Add trigger → Webhook. Have your helpdesk post solved tickets tagged kb with title (subject), description (the full conversation) and key.
Variables

What to fill in

The prompts and commands read these as {{vars.<name>}}. The examples are placeholders: replace them with your own.

VariableWhat to put in itExample
helpCenterUrlYour help center’s address, searched for existing articles.https://help.acme.example
styleHow your help articles are written.Title as the question customers ask. One-line answer first, then numbered steps with exa…
helpCenterWebhookUrlWhere drafts go, e.g. a Zapier hook that creates a draft in Zendesk Guide, Intercom or HelpScout Docs.—
Show the pipeline JSON
{
  "jimothyPipeline": 1,
  "name": "Help article from a solved ticket",
  "description": "Drafts a help article, or an update to an existing one, from a solved support conversation.",
  "icon": "sparkles",
  "color": "#d97706",
  "repo": {
    "mode": "scratch"
  },
  "concurrency": 2,
  "variables": {
    "helpCenterUrl": "https://help.acme.example",
    "style": "Title as the question customers ask. One-line answer first, then numbered steps with exact button and menu names. Second person, present tense. No screenshots referenced.",
    "helpCenterWebhookUrl": ""
  },
  "steps": [
    {
      "id": "draft",
      "name": "Draft article",
      "type": "agent",
      "description": "Checks your help center for an existing article and drafts a new one or an update.",
      "harnessId": "claude-code",
      "model": "sonnet",
      "timeoutMinutes": 20,
      "prompt": "A support ticket was solved and tagged for the knowledge base.\n\nSubject: {{issue.title}}\nConversation:\n{{issue.description | truncate:30000}}\n\nSearch {{vars.helpCenterUrl}} for an article that already covers this. Then write either:\n- \"UPDATE: <article URL>\" on the first line, followed by the full revised article, if one exists; or\n- \"NEW\" on the first line, followed by a new article.\n\nStyle: {{vars.style}}\nUse the agent's working answer from the conversation, not the customer's guesses. Leave out every customer detail: names, emails, company names, account ids. Markdown, starting with a # title after the first line.{{#if steps.approve.output}}\n\nYour previous draft was rejected with this feedback. Rewrite it:\n{{steps.approve.output}}{{/if}}"
    },
    {
      "id": "approve",
      "name": "Approve article",
      "type": "approval",
      "description": "Shows you the article. Reject with a comment and it is rewritten.",
      "dependsOn": [
        "draft"
      ],
      "loopBackTo": "draft",
      "maxLoops": 3,
      "approvalMessage": "Send this article to the help center as a draft?\n\n---\n\n{{steps.draft.output}}"
    },
    {
      "id": "publish",
      "name": "Send to help center",
      "type": "shell",
      "description": "Sends the draft to your help center through a webhook.",
      "dependsOn": [
        "approve"
      ],
      "timeoutMinutes": 2,
      "command": "printf '{\"ticket\":%s,\"action\":%s,\"article\":%s}' {{issue.key | json}} {{steps.draft.output | first_line | json}} {{steps.draft.output | json}} | curl -fsS -X POST -H 'Content-Type: application/json' --data @- {{vars.helpCenterWebhookUrl}}"
    }
  ]
}