Turn Typeform bug reports into clean Linear issues, with duplicate detection

Every Typeform bug report becomes a well-structured Linear ticket, or a comment on the existing one, and your team gets a heads-up in Slack.

Agentic Task
TypeformLinearSlack BotEngineeringProductFeedback TriageNotifications & Alerts

Build me an agent workflow that turns customer bug reports submitted through a Typeform form into engineering-ready Linear issues, with duplicate detection.

Trigger: a Typeform webhook fires when a new submission lands on my bug report form. Pass the full form_response payload (all answers plus any uploaded screenshots) into the agent as input.

On each submission, the agent should:

1. Normalize the raw submission. Read the answers and any attached screenshots, extract the affected feature or product area, and infer a severity level from the wording and visuals. Use these severities: P0 critical (data loss, outage, payment broken, security), P1 high (core flow broken for many users), P2 medium (workaround exists), P3 low (cosmetic or minor). Restructure the free-text description into four sections: Steps to Reproduce, Expected, Actual, and Environment (browser, OS, app version, account or workspace id if present).

2. Look for duplicates in Linear before filing anything. Call Linear's Search Issues with the extracted feature name plus the most distinctive key terms from the report. Only consider non-archived, open issues. Decide whether any match is the same underlying defect by comparing symptom, feature, and reproduction shape; do not match purely on shared keywords. If you are uncertain, treat it as new.

3a. If there is a strong duplicate, call Linear's Add Comment to Issue on that existing issue. The comment should include the new steps to reproduce, any new environment info, the reporter's name and email from the Typeform answers, and a short note that this is an additional report. Do not change the existing issue's priority or state.

3b. If it is genuinely new, call Linear's Create Issue in the team that owns the affected feature. Use a concise title that names the feature and the symptom. Put the structured Steps to Reproduce / Expected / Actual / Environment in the description in markdown. Map severity to Linear priority (P0->1 Urgent, P1->2 High, P2->3 Normal, P3->4 Low). Add labels like 'bug' and the feature area. Include the reporter's contact info at the bottom of the description.

4. After Linear is updated, call Slack Bot's Send a Message to post to #bugs. Include: the Linear issue title and link, the severity, the affected feature, the reporter's name, and a clear note saying whether this was created as a new issue or merged into an existing one (link the existing issue when merged).

Configuration the agent should accept up front: the Typeform form id, a mapping from feature area to Linear team, the default Linear team for unmatched reports, the Slack channel (default #bugs), and the severity-to-priority mapping if I want to override the defaults.

Be conservative on the duplicate check: when in doubt, file a new issue rather than merging into the wrong one.

Additional information

What does this prompt do?
  • Listens for new submissions on your Typeform bug report form and parses the raw answers into a clean issue.
  • Rewrites the report into the structure engineers expect: Steps to Reproduce, Expected, Actual, and Environment, with severity inferred from the wording.
  • Checks Linear for likely duplicates before filing anything, so the same defect does not stack up under three different titles.
  • Either creates a new Linear issue in the right team with priority and labels, or adds the new repro and reporter info as a comment on the existing one.
  • Posts a short summary to your bug channel in Slack with the Linear link, severity, and whether it was a new ticket or a merge.
What do I need to use this?
  • A Typeform account with a bug report form you can point a webhook at.
  • A Linear workspace with the team or teams you want bugs filed in.
  • A Slack workspace with a channel for bug notifications, like #bugs.
How can I customize it?
  • Change which Linear team gets the issue, or branch by product area so frontend, backend, and mobile bugs go to different teams.
  • Adjust how severity is inferred from the report, or map the severity levels to your own priority and label scheme.
  • Pick a different Slack channel, change the summary format, or only ping Slack for high severity reports.

Frequently asked questions

How does it decide whether a report is a duplicate?
Before filing anything, it searches Linear with the key terms from the new report and the feature name it extracted. If a strong match is open, it treats the new submission as another instance of that bug instead of opening a new ticket.
What happens when it finds a duplicate?
It adds a comment on the existing Linear issue with the new steps to reproduce, any extra detail from the form, and the reporter's contact info. Your bug channel in Slack still gets a note so the team knows another customer hit it.
How is severity decided?
The agent reads the wording of the report and any screenshots the reporter attached, then maps that to a severity level. You can tune the rules in plain language, for example treat anything mentioning data loss or payment as the highest severity.
Do reporters need a Linear account?
No. The whole point of this workflow is to let non-technical people file bugs through a friendly Typeform, while engineering only ever sees clean Linear tickets.
Can it route to different Linear teams?
Yes. Tell the agent which feature areas map to which teams, and it will pick the right team based on the extracted feature when it files a new issue.

Stop hand-translating bug reports into Linear tickets.

Connect Typeform, Linear, and Slack once, and every new bug report shows up structured, deduplicated, and announced.