Workflow·7 min read

The anatomy of a UX ticket an engineer accepts without a meeting

Your audit found 20 real problems and every one is dying in a Google Doc. The 5 fields that get a UX finding through triage without a meeting, plus copy-paste templates for Jira and Linear.

UX findings ship when they arrive shaped like work: a title naming the broken behavior, an agreed severity, reproduction steps, a cited rule, a suggested fix, and an effort estimate. Everything else dies where UX feedback usually dies: page 14 of a doc nobody opens after the readout meeting.

This is the exact anatomy of a UX ticket an engineer accepts without calling a meeting, with the research on why each field earns its place and two copy-paste templates at the end.

The same finding, filed twice

A worked example, fictional but painfully familiar. Your signup form rejects passwords against rules it never shows, throws a generic error, and wipes both password fields. Someone on the team noticed. Here is how that finding usually lands in Jira:

The ticket that bounces

Signup form is confusing and frustrating!! Fix ASAP

“Tried signing up and honestly the whole flow feels off. The password part didn’t work for me and I got some error, which is super annoying, a real user would just leave. Can we make this nicer? Also the button looked weird on my laptop. High priority imo.”

Now the same finding, shaped like work:

UX-214Major
Signup rejects passwords against rules it never displays
Evidence1. Go to /signup. 2. Enter a valid email and the password “sunflower9”. 3. Submit. The form returns “Password invalid”, clears both password fields, and lists no requirements anywhere on the page. Screenshot attached with the error state circled.
RuleNielsen #9 · Recognize, diagnose, recover from errors
FixShow the password rules under the field before first input, validate on blur, and keep entered values when the form errors.
Effort⚡ Quick win · ~1 hr

Same problem, same author, same afternoon. The first version gets a “can you clarify?” comment and dies. The second gets an estimate in standup and ships on Thursday. The difference is not writing talent: it is 5 fields, each of which exists to kill one specific reason engineers reject tickets.

Why each field kills a rejection reason

Ticket quality determining fix speed is measured, not folklore. In “What Makes a Good Bug Report?” (FSE 2008), Bettenburg and colleagues surveyed developers and reporters across Apache, Eclipse, and Mozilla. Developers ranked steps to reproduce, stack traces, and test cases as the most helpful things a report can contain. Those are exactly the items reporters find hardest to provide, a gap the paper calls an information mismatch.

466
developers and reporters surveyed in Bettenburg et al.’s FSE 2008 study. The most-cited hurdles when fixing bugs: inaccurate steps to reproduce and incomplete information.

For UX findings there is rarely a stack trace, so the annotated screenshot does that job: it pins the exact element and state you are talking about. Map each field to the objection it removes:

  • “Can’t reproduce” → steps to reproduce. Numbered, starting from a URL, ending at the failure. Marker.io’s guide lists irreproducibility and missing environment as the classic bounce reasons, and the Bettenburg survey says steps are the single most valued content.
  • “Not a priority” → severity with a shared definition. “Major” means nothing until the team has agreed what Major means. Definitions below.
  • “I don’t think that’s a problem” → the named rule. “Confusing” is your opinion. “Violates Nielsen #9, published 1994, cited in every HCI curriculum since” is a checkable claim. The argument moves from taste to evidence.
  • “Too vague to estimate” → suggested fix + effort. A concrete proposed change gives the engineer something to accept, amend, or beat. “Quick win · ~1 hr” lets a PM slot it into a sprint without a discovery meeting.
The roast

A ticket titled “signup is confusing” is a diary entry. Engineers do not triage diary entries.

The receipt

Vague reports create the exact information mismatch the study documents: the reporter supplies feelings, the developer needs steps. Atlassian’s own bug report template guidance makes the same point from the vendor side: templates “act as a required checklist, making an incomplete report impossible.”

Bettenburg et al. · FSE 2008

Severity vs priority: they are not synonyms

Severity measures how badly users are hurt; priority is a business decision about when to fix it. Severity feeds priority. It never replaces it.

The canonical severity scale is NN/g’s 0 to 4 rating (Nielsen, 1994), which combines three factors: frequency (how often users hit it), impact (how hard it is to overcome), and persistence (one-time trap or every-visit tax). We collapse it into the three tiers a ticket queue understands, with a default queue behavior for each:

NN/g ratingTicket severityWhat it meansDefault queue behavior
4 · Usability catastropheBlockerUsers fail the task or lose workP1, this sprint. Interrupt if it guards revenue.
3 · Major usability problemMajorUsers struggle; some give upP2, next sprint, individually filed
1 to 2 · Cosmetic to minorMinorFriction and irritationBacklog, batched into one ticket per screen
0 · Not a problemNoneYou disagree it is an issueDo not file it. Write down why, then move on.

The honest footnote: the right-hand column is a default, not a law. Priority layers business context onto severity. A Major on a settings page hardly anyone visits can wait behind a Minor sitting inside your checkout. What the severity field buys you is a shared starting point, so the priority debate is about business, not about whether the problem is real.

Copy-paste ticket templates for Jira and Linear

Two templates, same 10 fields, formatted for each tool. Linear’s own method guide says to “write short and simple issue titles that directly state what the task is”, which is the title rule from the anatomy above wearing a different badge: name the behavior, skip the emotion.

Jira · UX finding template
*Title:* <the broken behavior, not the emotion: "X happens when Y">
*Severity:* Major  (Blocker = users fail or lose work · Major = users struggle · Minor = friction)
*Where:* <URL or screen name>

*Steps to reproduce:*
# Go to <URL>
# <action>
# <action>

*What happens:* <actual behavior>
*What should happen:* <expected behavior>

*Rule violated:* <e.g. Nielsen #9 · Recover from errors, or WCAG 2.5.8 Target Size>
*Suggested fix:* <one concrete change>
*Effort:* Quick win · ~1 hr  (or: Deep fix · ~2 days)

*Screenshot:* <attach, with the failing element circled>
*Labels:* ux-debt, <rule tag, e.g. nielsen-9>
Linear · UX finding template
<!-- Title goes in the issue title field: state the broken behavior -->

**Severity:** Major  <!-- Blocker / Major / Minor -->
**Where:** <URL or screen name>

**Steps to reproduce**
1. Go to <URL>
2. <action>
3. <action>

**What happens:** <actual behavior>
**What should happen:** <expected behavior>

**Rule violated:** <e.g. Nielsen #9 · Recover from errors>
**Suggested fix:** <one concrete change>
**Effort:** Quick win · ~1 hr

**Screenshot:** <attach, with the failing element circled>
**Labels:** ux-debt, nielsen-9

Delete any field you genuinely cannot fill rather than padding it. A short, complete ticket beats a long one with three fields of “TBD”. If you skip anything, never skip the steps: that is the field the research says developers miss most.

How many tickets should a UX audit produce?

A focused audit of 3 core flows typically lands 10 to 25 findings; file Blockers and Majors individually, and batch Minors into one ticket per screen. That range is a field observation from running audits, not a study, but it is stable: signup, onboarding, and the core loop reliably hide that much.

The batching rule matters more than the count. Filing 25 individual tickets turns your backlog into confetti and guarantees the Minors get closed in a bulk “won’t fix” sweep 6 months from now. File every Blocker alone, every Major alone, and roll the Minors up: “Settings screen: 4 minor UX fixes” with each finding as a checklist item. One estimate, one review, 4 fixes.

If you want to generate the findings themselves, we walked the full method in a complete heuristic evaluation example and condensed it into a founder’s UX audit checklist you can run in an afternoon. And if you are weighing doing this yourself against paying someone, the real cost of a UX audit has the numbers.

Keeping UX debt visible after the audit

Label every finding ux-debt plus a tag for the rule it violates: nielsen-9, wcag-2.5.8, hicks-law. Two labels turn your UX debt from a vibe into a query. “Show me open ux-debt” becomes a saved filter you can pull up in sprint planning; “we keep shipping nielsen-1 violations” becomes a pattern you can name in a retro. When someone asks how bad the UX debt is, the answer is a link, not a shrug.

This anatomy is also, not coincidentally, the exact format ClapBack outputs. An agent uses your product like a real user, and every finding arrives as a pre-filled Jira or Linear ticket: severity, the cited rule, an annotated screenshot, a plain-language reason it matters, and a suggested fix with an effort estimate. The template above is the manual version; the agent is the version where you paste a URL.

Either way, the rule stands. A finding in a doc is an opinion with good intentions. A finding in a ticket, with steps, a severity your team defined, and a rule someone can look up, is work. Work gets shipped.

Receipts for this article
Bettenburg et al. · What Makes a Good Bug Report? (FSE 2008) · NN/g · How to Rate the Severity of Usability Problems (Nielsen, 1994) · Atlassian · Jira bug report template guidance · Linear Method · Write issues, not user stories · Marker.io · How to write a bug report

Questions people actually ask

What should a UX bug ticket include?
A title naming the broken behavior (not the emotion), a severity from a scale the team agreed on, where it happens, numbered steps to reproduce, what happens vs what should happen, the named rule it violates (a Nielsen heuristic, WCAG criterion, or UX law), a concrete suggested fix, an effort estimate, and an annotated screenshot.
What is the difference between severity and priority?
Severity measures how badly users are hurt; NN/g rates it 0 to 4 from frequency, impact, and persistence. Priority is a business decision about when to fix it, layering revenue, traffic, and deadlines on top of severity. A Major issue on a rarely visited settings page can rank below a Minor one inside checkout.
How do you prioritize UX issues?
Rate severity first: Blocker (users fail or lose work), Major (users struggle, some give up), Minor (friction). Then queue by default: Blockers as P1 this sprint, Majors as P2 next sprint, Minors batched into the backlog per screen. Adjust for business context like traffic to the flow and revenue at stake.
How many tickets should a UX audit produce?
A focused audit of 3 core flows typically produces 10 to 25 findings. File every Blocker and Major as its own ticket; batch Minor issues into one ticket per screen with a checklist, so the backlog stays navigable instead of turning into confetti.

Reading about UX debt is the slow way.

Paste your URL and an AI agent will use your product like a real user, find what breaks, and hand you the tickets. From $49, no install, no retainer.

Get my free roast →
Your site or a competitor’s. We won’t tell.
Keep reading
Teardown
A complete heuristic evaluation, run on the worst app we could imagine
Do it yourself
The founder's UX audit checklist: 24 checks, 3 flows, one afternoon
Money
UX audit cost in 2026: the median is $500, not $25,000