Skip to lesson
Exit
Bug Triage & Prioritization at Scale1 / 2

1 min lesson

Build lightweight tooling, don't wait for a platform

Put this idea into your own words. "You build the scrappy thing yourself."

Step 1 of 2

Build lightweight tooling, don't wait for a platformscripts and small dashboards beat a roadmap ticket

Picture a company of a few hundred people and state that as your assumption. Nobody hands you a polished internal platform. You build the scrappy thing yourself: a script that pulls tickets, calls a model to classify and cluster, and writes a ranked Markdown brief you can paste into the channel.

Plan with the big model, build with the fast one

Draft the plan with a larger reasoning model, a current frontier model such as Claude Opus 5.5Anthropic's top Opus-tier model in Cursor at $4 per million input tokens and $20 per million output, 20% below Claude Opus 5, which it replaces. Press Enter for the full definition. or a GPT-5.6 model. Then switch to a leaner, faster in-house model like Composer 2.5The current Composer release, better at long-running tasks and at judging when a job needs a light touch versus deep work. Press Enter for the full definition. for the building. Heavy intelligence goes where the thinking is; fast intelligence handles the rest.

Learn more

Full explanation

A scrappy triage pass, the kind you'd build in week one

A scrappy triage pass, the kind you'd build in week onets
import { tickets } from "./ingest";        // tickets from support, forum, Discord
import { classify, cluster, draftRepro } from "./agent";

// 1. agent classifies each report: you set the schema, it fills it in
const tagged = await classify(tickets, {
  area: ["tab", "agent", "cmd-k", "chat", "context", "indexing", "model-picker"],
  severity: ["S0", "S1", "S2", "S3"],
  sentiment: ["angry", "confused", "neutral"],
});

// 2. group by semantic similarity, join on error signature when present
const clusters = await cluster(tagged, { joinOn: "errorSignature" });

// 3. score per cluster with the human-owned formula, not the model's guess
const ranked = clusters
  .map((c) => ({
    ...c,
    priority: sevWeight(c.severity) * impactScore(c),  // your rubric
    repro: draftRepro(c.canonical),                     // agent drafts, you verify
  }))
  .sort((a, b) => b.priority - a.priority);

// 4. you review ranked[0..n], confirm the repros, then ship the brief