The moment it happens
Route new bugs to the right team
New issues in Triage get a team, label and priority, and you get a note explaining each choice.
- Runs
- The moment it happens
- Apps
- Linear
- AI
- Yes, uses the built-in AI allowance
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: when a new Linear issue lands in Triage, pick the right team and label from its title and description, apply them, and Slack me what you changed and why.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A growing product team's bug intake is messy. Customers, support and QA create issues in Linear with vague titles, no label and no priority, and an engineering manager spends part of every morning deciding which team should take each one and how urgent it is. Meanwhile a serious bug filed at 5 p.m. sits untriaged until the next day, and the on-call engineer does not hear about it.
When a new issue is created in Linear, ClickRuntime reads the title and description, and its built-in AI suggests the owning team, a label and a priority. The issue is updated with those values, and a Slack message gives the reasoning, so the team can see why the issue was classified that way and correct it if the AI was wrong.
Teams with a high volume of incoming bugs gain the most.
What you get out of it
Urgent bugs reach the right team quickly
A crash that affects checkout should not wait until the next morning's triage. Setting a high priority on arrival and posting to Slack puts it in front of the right engineers within minutes.
Triage meetings get shorter
With team, label and priority already suggested, the weekly triage becomes a quick review of the exceptions. The time saved can go to fixing issues rather than sorting them. Engineers then spend their time on fixes, not sorting.
Classification is consistent
Different people triage differently, and the same bug can get a different priority on different days. A single set of criteria makes the board more predictable and easier to filter.
The reasoning is visible
Because the Slack note explains why the AI chose a team or priority, a manager can tell right away whether it makes sense. That makes corrections quick and builds trust in the process.
Support and QA get fast feedback
People who file bugs see the issue assigned to a team within minutes rather than waiting for a response. It encourages them to file complete reports, since someone clearly reads them.
How it works
What happens, step by step
When a new bug is filed in Linear, ClickRuntime picks it up straight away.
AI reads the title and description and decides which team owns it, which label fits and how urgent it is.
The issue is updated in Linear with that team, label and priority.
A note goes to your #triage Slack channel saying where the bug was routed and why.
Before it runs live
- Connect Linear
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Linear steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, http, credentials, ai, notify
def linear(query, variables=None):
r = http.post(
"https://api.linear.app/graphql",
headers={"Authorization": credentials.secret("LINEAR_API_KEY")},
json={"query": query, "variables": variables or {}},
)
r.raise_for_status()
return r.json()["data"]
@on_event
def handle(event):
body = event.json or {}
issue = body.get("data", {})
if body.get("action") != "create" or (issue.get("state") or {}).get("type") != "triage":
return {"triaged": False}
teams = linear("{ teams { nodes { id name } } }")["teams"]["nodes"]
labels = linear("{ issueLabels(first: 100) { nodes { id name } } }")["issueLabels"]["nodes"]
pick = ai.generate(
f"Issue: {issue.get('title')}\n{(issue.get('description') or '')[:1500]}\n"
f"Teams: {[t['name'] for t in teams]}\nLabels: {[l['name'] for l in labels]}",
system="Pick the best team and label and give a one-line reason.",
json_schema={"type": "object", "properties": {"team": {"type": "string"}, "label": {"type": "string"}, "reason": {"type": "string"}}},
max_output_tokens=120,
).json
team_id = next(t["id"] for t in teams if t["name"] == pick["team"])
label_ids = [l["id"] for l in labels if l["name"] == pick["label"]]
linear("""mutation($id: String!, $input: IssueUpdateInput!) {
issueUpdate(id: $id, input: $input) { success } }""",
{"id": issue["id"], "input": {"teamId": team_id, "labelIds": label_ids}})
notify.slack(f"{issue.get('title')} → {pick['team']} / {pick['label']}: {pick['reason']}", channel="#triage")
return pickFAQ
Common questions
Can the AI change an issue I have already triaged?
How does the AI know which team owns what?
Is a ClickRuntime AI key required?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Spot frustrated comments on customer issues
When a comment on a customer issue sounds frustrated, you hear about it before it escalates.
See how it worksGet a Slack message for every new Linear issue
Each new issue in your team shows up in Slack with its title, priority, assignee and link.
See how it worksGet alerted when an issue becomes Urgent
You hear straight away when an issue is created as Urgent or raised to Urgent.
See how it worksKeep exploring
Set up “Route new bugs to the right team” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.