# Turn roadmap notes into GitHub issues, minus duplicates

> A founder pasted Q4 notes into the Console. Triagic drafted 12 issues, checked each against the repo and made three updates. Nothing filed until review.

Source: https://triagic.com/use-cases/issues-from-one-roadmap-doc

## The situation [#the-situation]

Thursday, after the Q4 planning call. The founder of Dispatchly has a page of notes: twelve lines, some new work, some things the team has talked about before, one decision to drop a feature. Turning that into issues has meant an afternoon in GitHub's new-issue form, searching for old issues from memory, and finding the duplicates a week later in review.

## What Triagic looked at [#what-triagic-looked-at]

The founder pasted the notes into the Console and asked: &#x2A;turn these into issues in dispatchly/app.* They had connected their own GitHub token under **Integrations → Issue trackers**, which is separate from the read-only GitHub data source the agent investigates with.

The agent can't file anything. What it has is a drafting tool, `triagic__propose_issues`, which writes a batch for a person to review and returns. A batch holds at most 15 drafts; notes with more get the first 15, and the agent says which were left out and offers a second batch.

Every draft was checked against the repository before anyone saw it:

* **GitHub search** on each draft's title, with a looser search when the first finds nothing.
* **The repository's most recently updated issues.**
* **Issues Triagic had already filed** into that repository.

A line that names an issue (`#377`) skips the search and becomes an update to that issue. Labels come from the repository's own list, so a label it doesn't have is left off rather than sent.

## What it found [#what-it-found]

The answer listed 12 drafts and a card under it: **Review and file**. The dialog read *Nothing is sent until you file*, and the rows were not all new issues:

* **Update #418.** "Accept the old and new webhook secret for 24 hours after a rotation" matched an open issue, *Allow two signing secrets during rotation*, closely enough to act on. The draft became a comment on #418 with the new detail: Bloom Botanics' endpoint was disabled after 50 failed deliveries the day they rotated.
* **Update #377, close it.** The note said *drop CSV export v1, not doing it*. The draft is a comment saying so, with the state set to **Close it**.
* **Needs you: #431.** "Double charge when the gateway times out, still happening" looked like *billing-worker retries charge after gateway timeout*, closed two weeks ago. A closed match waits for a person. He picked **Update #431 instead**, kept the comment and set **Reopen it**.
* **Needs you: #402.** "Bulk print up to 1,000 labels" looked like the closed *Bulk print up to 500 labels*. That one shipped; this is new work. He picked **Create a new issue anyway**.

The other eight were new issues with a title, a description, labels and the Q4 milestone. He rewrote two descriptions and removed one label.

## What changed [#what-changed]

He pressed **File: create 9, update 3**. Nine issues, three comments, one closed and one reopened, in about ten minutes. Each filing and each comment is in the audit log with the repository and the issue number.

Nothing was filed until the founder pressed that button, and that is by design: the worst a bad prompt can do is draft something a person discards. The same drafting works for a pasted incident list or a page of customer feedback. Filing one issue from a ticket or an answer is covered in the [issues docs](/docs/desktop/issues).
