> ## Documentation Index
> Fetch the complete documentation index at: https://jam.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Turn Jams into tickets

> Draft one ticket per problem from any set of Jams or one feedback session, with the Jams linked as evidence.

Jams come in from your team, your customers, and your agents, and many of them are the same few bugs reported again. One feedback session can hold 10 remarks in a single recording. Either way, someone watches everything and types the tickets. Hand the Jams to your agent instead.

The agent drafts one ticket per problem, and Jams that share a cause share a ticket. Each ticket carries the person's words, the error or the moment in the video, and the Jam links as evidence. You connect Jam once and write no code.

> [!NOTE]
>
> * Any client with [Jam MCP connected](https://jam.dev/docs/jam-mcp.md#connect-your-client), such as Claude, ChatGPT, or Claude Code.
> * To file from the same chat, your tracker's MCP server, for example Linear's.
> * The Jams, from anywhere, or one feedback session recorded with the microphone on.

## Steps

**1. Paste the prompt with the Jams**

```text wrap theme={"theme":"css-variables"}
Draft one ticket per problem in these Jams. Jams with the same cause share a ticket, and remarks that say something works get none. Give each ticket the person's words, the error, repro steps, and the Jam link at its timestamp. File them in Linear when I say go.

<links, a folder, or which Jams to find>
```

Describe the Jams instead of pasting links, such as "checkout Jams from this week". The agent searches for them. One Jam works too: a feedback session becomes one ticket per issue the person raised.

**2. Read the drafts**

Each draft should carry the symptom in the person's words, the error or failed request behind it, repro steps built from the clicks and navigation, the timestamp, and the Jam links. The `jam-to-ticket` skill writes each draft in this shape:

```text wrap theme={"theme":"css-variables"}
Jam: https://jam.dev/c/abc123 (at 1:42)

What happens: Clicking Upgrade on the Pro card does nothing.
Expected: Checkout opens with the Pro plan.

Steps
1. Open /pricing signed out
2. Click Upgrade on the Pro card

Evidence
- Console: TypeError: Cannot read properties of undefined (reading 'price')
- Network: POST /api/checkout 500 in 812 ms

Environment: Chrome 141, macOS 15, https://example.com/pricing
Not checked: whether it happens signed in
```

**Not checked** names what the Jam could not settle. Open one Jam link per draft at its timestamp and confirm the moment matches. Ask for "bug or polish" on each, then merge or drop drafts until the list is what you would file yourself.

**3. Say go**

When the agent can reach your tracker, it files the tickets and returns their links. Open one and confirm it links the Jam. Otherwise, copy the drafts into your tracker yourself.

**4. Ask it to link and comment on each Jam**

Say "Attach each ticket to its Jams. Then comment on each Jam with its ticket and mention the person who recorded it." Each Jam's Info then lists its ticket under **Resources**, so whoever opens the Jam finds the ticket. The comment appears under your name, followed by "via" and the agent's name. The mention notifies the person who recorded it when they are in your workspace.

## FAQ

> **What does the agent do with the Jams?**
>
> For every link, it reads the details, the transcript when the person spoke, the console errors, and the failed requests. When the Jam has a video, it pulls frames around the failure or the remark, so it sees what the person saw.
>
> Then it groups them the way the prompt asks. Jams that share an error, an endpoint, or a page become one ticket. A Jam that shows several problems gets one ticket per problem, each linking the same Jam at its own timestamp. In a feedback session, remarks about the same element become one ticket, and remarks that say something works are dropped.

> **Will it file a ticket that already exists?**
>
> Not when you use the Jam skills in a coding agent. Before it drafts, the agent looks for tickets already filed from the Jam, then searches the tracker for the Jam's link. A ticket that already covers a problem comes back instead of a new draft. In any client, a Jam that lists a ticket under **Resources** has been filed. Say "Skip Jams that already link a ticket." To get the skills, install the Jam plugin (see [Connect your client](https://jam.dev/docs/jam-mcp.md#connect-your-client)), or run `npx skills add jamdotdev/skills`. They also need the [Jam CLI](https://jam.dev/docs/cli.md#quickstart).

> **The agent went to the logs and ignored what the person said**
>
> Say "Read the transcript before the logs." When the person spoke, the transcript usually names the bug. For a feedback session, record with the microphone on: the transcript is the issue list, and a silent session leaves the agent guessing from the clicks.

> **The tickets are vague about where the issue is**
>
> Say "What was on screen when the request failed?" The agent reads the frame and describes it in the ticket. When recording feedback, say where you are, such as "on the automations page, in the mention picker", or point with the cursor.

> **Which Jams can I hand over?**
>
> Any Jams, wherever they were recorded: the Chrome extension, Jam for Mac, Jam for iOS, a [Recording Link](https://jam.dev/docs/recording-links.md) a customer opened, or an agent with the Jam CLI. Point the agent at them in whichever way is easiest:
>
> * Paste the links.
> * Name a folder. A Recording Link can file every Jam recorded from it into a folder, and "Move these Jams into a folder called Checkout" files the rest.
> * Describe them. The agent searches by text, source, page, author, and date, such as "Jams from Recording Links on /checkout this week".

> **The feedback is in a video file, not a Jam**
>
> Turn the video into Jams first, then paste the prompt above with their links or their folder.
>
> * **Upload it.** Drag the MP4 or WebM file onto a folder in the Jam dashboard, and it becomes one Jam there. See [Upload an existing video](https://jam.dev/docs/video.md#upload-an-existing-video).
> * **Split it by bug.** In a coding agent with the Jam skills and the Jam CLI, say "Split this recording by bug: \~/Downloads/onboarding-call.mp4". You get one Jam per issue, filed in one folder, each with its own transcript.
>
> Either way, the Jams carry no console or network. Splitting needs `ffmpeg`. A local transcriber, such as Whisper, keeps the recording on your machine. Without one, the agent asks before it uploads the whole recording for Jam to transcribe. It also asks before it uploads a call with people outside your team.

> **What happens to a ticket next?**
>
> Give its Jam link to a coding agent. See [Hand a Jam to your agent](https://jam.dev/docs/hand-a-jam-to-your-agent.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.