My AI Cheat Code: I Haven't Clicked "Create" in Jira in Three Months - Automating the Discovery-to-Delivery Pipeline

The 6 p.m. Problem

I sat down at 6 p.m. after a customer call I'd been excited about all day. I had two hours before I lost the thread. I needed to write up the call, draft a pitch, sketch the screens, and break the work into stories the team could pick up Monday. I knew how to do every step. I also knew I'd be lucky to get through two of the four.

That gap — between final customer validations and a working ticket the team can run with — is where most of a PM's week disappears. The judgment lives in two places: the original conversations/decisions/mock-ups, and the final prioritization decision. Everything in between is translation. I time-boxed two weeks to measure it: roughly 10–15 hours per week of pure translation work.

Well, that was before

This article is a playbook for what I do now instead.

What This Pipeline Is and Isn't

What this pipeline is not is "AI builds features from a customer call.".

A single call is N=1; a pain point one customer mentioned is a hypothesis, not a finding. If I let one conversation flow straight into a sized epic, I'd be doing worse PM work, not better. 

Ultimately, the pipeline is a way to turn a pattern across multiple calls into a scoped, build-ready epic, without slowing down.

The pipeline below has data validation and experimentation baked in; those two elements are the reason the mechanical parts can move fast without lowering quality. 

Before You Start

Tooling

Here’s what you’ll need to make this happen:

  • An LLM with tool use and an enterprise plan that does not train on submitted data.
  • MCP (Model Context Protocol) connectors for your docs tool, ticket tracker, and design tool. Our team uses Confluence MCP, Jira MCP, and the official Figma MCP. If your stack is Notion + Linear + FigJam, the equivalent MCPs work the same way. (Shoutout to some members on our team who implemented it/I just learned followed what they implemented and tweaked for the product our squad works in)
  • An analytics workbench (Mode, Hex, or notebook of choice) that you can paste SQL into. The simplest pattern: Claude drafts the query in chat; you run it yourself. No warehouse MCP required.

Practices

  • A dedicated docs space for draft pitches, separate from approved ones. Decide where these land before you start.
  • A redaction step on customer audio before transcripts leave the recording tool, especially for PII.
  • A repo (or notes file) of reusable prompts. The ones below are a starting set.

The Pipeline

Title: Figure 1 — The Discovery-to-Delivery Pipeline - Description: Figure 1 — The Discovery-to-Delivery Pipeline

Each stage below uses the same shape: what the stage does, what you need wired up, the prompt to paste, and the one thing that will bite you.

Stage 1 — Discovery Synthesis

The job

Turn a single call transcript into a hypothesis register — every claim tagged with a confidence label and a timestamp quote — so future-you can argue with evidence, not your memory.

What you need

A transcript (Zoom, Otter, or your recording tool's export).

The prompt

 

Watch out for

Sample-size confidence inflation. Without the explicit single customer framing, the model will write findings, not hypotheses.

Stage 2 — Data Validation (SQL + Python)

The job

Take one hypothesis at a time and test it against real usage, not just the handful of calls it came from. Where that usage data lives depends on your stack, for me, it's SQL for the simple stuff and Python for anything that spans more than one database, but whatever your setup, the goal is the same: confirm the idea is worth building and the math behind it holds up. It's tempting to skip this step, since it's more work and a hypothesis can already feel obvious enough to build on. But this is where you find out if the pain point is real, or just specific to whoever mentioned it. If it holds up, it earns a pitch. If it doesn't, you've just saved yourself from building the wrong thing.

What you need

Read access to your warehouse, your reporting tool open in another tab, and the SQL dialect your tool uses (the cross-dialect SQL bug is the most common silent failure here — CURDATE() vs CURRENT_DATE, GROUP_CONCAT vs LISTAGG).

The prompt

The version below is tuned to my setup. It uses MySQL through Mode, and Python for anything that spans more than one database. Yours will look different depending on your stack, so treat this as a worked example. A few things should carry over: test one hypothesis at a time, write a query that could prove it wrong, not just confirm it, and say upfront what result would falsify it.

Quick glossary for the prompt example below. A dialect is just which flavor of SQL your tool speaks. MySQL, Postgres, and BigQuery each phrase things slightly differently. A load-bearing assumption is a guess the LLM you're using has to make about your data, like which column connects two tables, that the whole answer depends on. If that guess is wrong, the LLM might still hand you an output, it's just the wrong one. So, the trick here in this prompt asks the model to label these assumptions directly in the code, so you know exactly which parts to check instead of guessing.

 

Watch out for

Cross-dialect SQL fragility. Prompt for the dialect upfront and treat the first result as "is this plausible?" not "is this true?"

Stage 3 — Pitch Document

The job

This stage turns the synthesis and the data slice into a pitch document, ordered unknown-first so reviewers spend their attention on what's actually risky, not on what's already decided. That pitch gets written up and published to a specific page in Confluence, which means the model first needs to find the right space to publish into. That lookup comes back in batches, roughly the first 50 spaces at a time, so if you have more spaces than that, yours could land further down the list. When that happens, a second lookup call simply asks for the next batch until it finds the right one.

What you need

A Confluence MCP connector and a known parent page for pitches. Confluence organizes pages into spaces, and the API that looks them up paginates.

The prompt

 

Watch out for

The connector paginates its results. Your space might not show up in the first 50, so build in a second lookup call. Otherwise the page won't land where you expect.

Stage 4 — Prototype and Experiment Design

The job

This stage picks up the pitch that just got approved in Stage 3 and turns it into something testable. Produce two artifacts in one pass: a tight design brief and an experiment plan with a pre-committed metric, threshold, and kill criteria. The pitch getting approved doesn't green-light the feature. It only green-lights running the experiment, nothing more.

What you need

The Figma MCP (figma.com/mcp) for reading existing components and a feature-flag tool (LaunchDarkly, ConfigCat, Statsig, etc.) for the experiment.

The prompt

 

Watch out for

The MCP is great at reading existing components and producing component-by-component specs; it is not a finished-prototype maker. Treat its output as a brief, not a design.

Stage 5 — Jira Epic + Stories Fan-Out

The job

Once the experiment gives you real confidence the idea works, for example, a higher chance free users convert to paid, create the epic and child stories in parallel. The guard rail — do one first, then fan out — is baked into the prompt.

What you need

A Jira MCP connector and your project key, team name, and assignee handle ready.

The prompt

 

Watch out for

JQL date syntax is fragile across tenants. status changed to Done during (-7d, now()) doesn't work on every instance. If a query reads zero rows, retry with an alternate clause before believing the result.

When the Pipeline Got It Wrong

The honest version of this article needs a failure, lol. 

In an early version — before the Stage 2 data pass existed — a synthesis from a single call flowed straight into a pitch. We had a story sized and ready before I re-listened to the call and realized the customer had walked the "must-have" comment back two minutes later. I'd shipped a hypothesis into the pipeline as a finding because nothing was checking whether the hypothesis held.

Stage 2 exists because of that failure. Adding it cost about a day of prompt iteration and roughly two minutes per pitch at runtime. It is the single biggest quality improvement the pipeline has had.

Compliance and PII - A Note on Customer Data

Sending customer transcripts to an LLM has consequences. 

Before any of this went live, I confirmed (1) the LLM provider's enterprise plan does not train on submitted data, and (2) the transcripts go through a PII redaction pass before they leave the recording tool. 

Your compliance answer may differ. 

If you can't square these two, the pipeline shouldn't run on real customer audio yet — it still runs on your own synthesis notes, which is most of the value.

Four Lessons

1. Don't let a single/just a handful of customer call(s) become a sprint story without a data pass in between

N=1 anecdotes will quietly become roadmap weight if Stage 2 isn't wired in. The two minutes per pitch the data pass costs is the cheapest insurance in the workflow. Also, as PMs there’s recency bias we need to consider

2. Treat connector failures as visible state, not silence

End every multi-tool prompt with "flag any tool call that returned nothing useful." Otherwise you get clean-looking briefs built on missing data.

3. Write acceptance criteria from the customer's words, not your paraphrase

Six weeks later the team builds against the framing in the AC. Make the synthesis step preserve direct quotes with timestamps, and require the ticket step to use them verbatim.

4. Validate one call before parallel fan-out

When the model is about to make many similar API calls, prompt it to run one first, confirm the response shape, then fan out. One-line addition. Prevents twelve identical errors at once.

The Real Win

The point isn't that AI files tickets. The point is that the discovery-to-delivery loop is mostly translation work, and translation is now cheap.

What that buys isn't speed. It's focus

When the mechanical layer collapses, the only thing left is the judgment work — sizing the problem, designing the experiment, deciding what's worth doing now versus later. That's the part of the job that's hard, and the part I want to spend my time on.

The 6 p.m. call I opened with doesn’t turn into a sprint epic that same night. Instead, it becomes a hypothesis register, a data slice the next morning, a pitch by the afternoon, a prototype test the following week, and an epic only if the test shows enough promise to justify building an MVP and putting it in front of real users. What's changed isn't the rigor. It's the time it takes to get the rigor done.

For PMs reading this, the question worth asking isn't "what should I automate?" It's:

Which translation tasks am I doing by hand because that's how I learned the job — and what would change about the time I spend on validation, sizing, and experiments if I stopped?

What you get as a TPMA Member

Mentorship program and in-person event experiences are at an extra cost.

Join for free!
  • Join the TPMA Slack Community with 1000+ members

  • Free Virtual TPMA events for the entire TPMA Season

  • Become the first to know about in-person events and networking opportunities

My AI Cheat Code: I Haven't Clicked "Create" in Jira in Three Months - Automating the Discovery-to-Delivery Pipeline

July 17, 2026

The 6 p.m. Problem

I sat down at 6 p.m. after a customer call I'd been excited about all day. I had two hours before I lost the thread. I needed to write up the call, draft a pitch, sketch the screens, and break the work into stories the team could pick up Monday. I knew how to do every step. I also knew I'd be lucky to get through two of the four.

That gap — between final customer validations and a working ticket the team can run with — is where most of a PM's week disappears. The judgment lives in two places: the original conversations/decisions/mock-ups, and the final prioritization decision. Everything in between is translation. I time-boxed two weeks to measure it: roughly 10–15 hours per week of pure translation work.

Well, that was before

This article is a playbook for what I do now instead.

What This Pipeline Is and Isn't

What this pipeline is not is "AI builds features from a customer call.".

A single call is N=1; a pain point one customer mentioned is a hypothesis, not a finding. If I let one conversation flow straight into a sized epic, I'd be doing worse PM work, not better. 

Ultimately, the pipeline is a way to turn a pattern across multiple calls into a scoped, build-ready epic, without slowing down.

The pipeline below has data validation and experimentation baked in; those two elements are the reason the mechanical parts can move fast without lowering quality. 

Before You Start

Tooling

Here’s what you’ll need to make this happen:

Practices

The Pipeline

Title: Figure 1 — The Discovery-to-Delivery Pipeline - Description: Figure 1 — The Discovery-to-Delivery Pipeline

Each stage below uses the same shape: what the stage does, what you need wired up, the prompt to paste, and the one thing that will bite you.

Stage 1 — Discovery Synthesis

The job

Turn a single call transcript into a hypothesis register — every claim tagged with a confidence label and a timestamp quote — so future-you can argue with evidence, not your memory.

What you need

A transcript (Zoom, Otter, or your recording tool's export).

The prompt

 

Watch out for

Sample-size confidence inflation. Without the explicit single customer framing, the model will write findings, not hypotheses.

Stage 2 — Data Validation (SQL + Python)

The job

Take one hypothesis at a time and test it against real usage, not just the handful of calls it came from. Where that usage data lives depends on your stack, for me, it's SQL for the simple stuff and Python for anything that spans more than one database, but whatever your setup, the goal is the same: confirm the idea is worth building and the math behind it holds up. It's tempting to skip this step, since it's more work and a hypothesis can already feel obvious enough to build on. But this is where you find out if the pain point is real, or just specific to whoever mentioned it. If it holds up, it earns a pitch. If it doesn't, you've just saved yourself from building the wrong thing.

What you need

Read access to your warehouse, your reporting tool open in another tab, and the SQL dialect your tool uses (the cross-dialect SQL bug is the most common silent failure here — CURDATE() vs CURRENT_DATE, GROUP_CONCAT vs LISTAGG).

The prompt

The version below is tuned to my setup. It uses MySQL through Mode, and Python for anything that spans more than one database. Yours will look different depending on your stack, so treat this as a worked example. A few things should carry over: test one hypothesis at a time, write a query that could prove it wrong, not just confirm it, and say upfront what result would falsify it.

Quick glossary for the prompt example below. A dialect is just which flavor of SQL your tool speaks. MySQL, Postgres, and BigQuery each phrase things slightly differently. A load-bearing assumption is a guess the LLM you're using has to make about your data, like which column connects two tables, that the whole answer depends on. If that guess is wrong, the LLM might still hand you an output, it's just the wrong one. So, the trick here in this prompt asks the model to label these assumptions directly in the code, so you know exactly which parts to check instead of guessing.

 

Watch out for

Cross-dialect SQL fragility. Prompt for the dialect upfront and treat the first result as "is this plausible?" not "is this true?"

Stage 3 — Pitch Document

The job

This stage turns the synthesis and the data slice into a pitch document, ordered unknown-first so reviewers spend their attention on what's actually risky, not on what's already decided. That pitch gets written up and published to a specific page in Confluence, which means the model first needs to find the right space to publish into. That lookup comes back in batches, roughly the first 50 spaces at a time, so if you have more spaces than that, yours could land further down the list. When that happens, a second lookup call simply asks for the next batch until it finds the right one.

What you need

A Confluence MCP connector and a known parent page for pitches. Confluence organizes pages into spaces, and the API that looks them up paginates.

The prompt

 

Watch out for

The connector paginates its results. Your space might not show up in the first 50, so build in a second lookup call. Otherwise the page won't land where you expect.

Stage 4 — Prototype and Experiment Design

The job

This stage picks up the pitch that just got approved in Stage 3 and turns it into something testable. Produce two artifacts in one pass: a tight design brief and an experiment plan with a pre-committed metric, threshold, and kill criteria. The pitch getting approved doesn't green-light the feature. It only green-lights running the experiment, nothing more.

What you need

The Figma MCP (figma.com/mcp) for reading existing components and a feature-flag tool (LaunchDarkly, ConfigCat, Statsig, etc.) for the experiment.

The prompt

 

Watch out for

The MCP is great at reading existing components and producing component-by-component specs; it is not a finished-prototype maker. Treat its output as a brief, not a design.

Stage 5 — Jira Epic + Stories Fan-Out

The job

Once the experiment gives you real confidence the idea works, for example, a higher chance free users convert to paid, create the epic and child stories in parallel. The guard rail — do one first, then fan out — is baked into the prompt.

What you need

A Jira MCP connector and your project key, team name, and assignee handle ready.

The prompt

 

Watch out for

JQL date syntax is fragile across tenants. status changed to Done during (-7d, now()) doesn't work on every instance. If a query reads zero rows, retry with an alternate clause before believing the result.

When the Pipeline Got It Wrong

The honest version of this article needs a failure, lol. 

In an early version — before the Stage 2 data pass existed — a synthesis from a single call flowed straight into a pitch. We had a story sized and ready before I re-listened to the call and realized the customer had walked the "must-have" comment back two minutes later. I'd shipped a hypothesis into the pipeline as a finding because nothing was checking whether the hypothesis held.

Stage 2 exists because of that failure. Adding it cost about a day of prompt iteration and roughly two minutes per pitch at runtime. It is the single biggest quality improvement the pipeline has had.

Compliance and PII - A Note on Customer Data

Sending customer transcripts to an LLM has consequences. 

Before any of this went live, I confirmed (1) the LLM provider's enterprise plan does not train on submitted data, and (2) the transcripts go through a PII redaction pass before they leave the recording tool. 

Your compliance answer may differ. 

If you can't square these two, the pipeline shouldn't run on real customer audio yet — it still runs on your own synthesis notes, which is most of the value.

Four Lessons

1. Don't let a single/just a handful of customer call(s) become a sprint story without a data pass in between

N=1 anecdotes will quietly become roadmap weight if Stage 2 isn't wired in. The two minutes per pitch the data pass costs is the cheapest insurance in the workflow. Also, as PMs there’s recency bias we need to consider

2. Treat connector failures as visible state, not silence

End every multi-tool prompt with "flag any tool call that returned nothing useful." Otherwise you get clean-looking briefs built on missing data.

3. Write acceptance criteria from the customer's words, not your paraphrase

Six weeks later the team builds against the framing in the AC. Make the synthesis step preserve direct quotes with timestamps, and require the ticket step to use them verbatim.

4. Validate one call before parallel fan-out

When the model is about to make many similar API calls, prompt it to run one first, confirm the response shape, then fan out. One-line addition. Prevents twelve identical errors at once.

The Real Win

The point isn't that AI files tickets. The point is that the discovery-to-delivery loop is mostly translation work, and translation is now cheap.

What that buys isn't speed. It's focus

When the mechanical layer collapses, the only thing left is the judgment work — sizing the problem, designing the experiment, deciding what's worth doing now versus later. That's the part of the job that's hard, and the part I want to spend my time on.

The 6 p.m. call I opened with doesn’t turn into a sprint epic that same night. Instead, it becomes a hypothesis register, a data slice the next morning, a pitch by the afternoon, a prototype test the following week, and an epic only if the test shows enough promise to justify building an MVP and putting it in front of real users. What's changed isn't the rigor. It's the time it takes to get the rigor done.

For PMs reading this, the question worth asking isn't "what should I automate?" It's:

Which translation tasks am I doing by hand because that's how I learned the job — and what would change about the time I spend on validation, sizing, and experiments if I stopped?