Merge duplicate bug reports by comparing the symptom, the place and the time, not the wording. Link every report to one issue, keep each original message, and make the merge easy to undo. Ten users reporting the same bug is not ten bugs. It is one bug with a lot of enthusiasm.
Why duplicates pile up
A bug rarely has one witness. One user writes in the app, another posts in Slack, a third emails support. They use different words for the same failure, and each report arrives in a different tool. Nobody sees the pile unless something reads all three channels.
How to tell two reports match
Compare three things. The symptom: what the user saw. The place: the page, feature or action. The time: when it started and whether the reports cluster. Matching words are a weak sign. "Exports are duplicated" and "I got two copies of the file" share almost no words and describe one bug.
What to keep
Keep every original message, with its sender, its channel and its time. The group is a summary. The originals are the evidence. An engineer who picks up the work next week should be able to read exactly what each user wrote, and a count of how many users it affects belongs on top.
When not to merge
Similar words can hide different bugs. Suppose one user reports two export files and another reports two export emails. Both say "duplicate" and "export". The first may be a download bug, the second a notification bug. If you cannot tell, leave them apart and ask the sender for one more detail.
Keep the merge reversible
A wrong merge hides a real bug inside a known one. Make every group a suggestion that a person can split at any time, and save who linked what, so a mistake can be found and undone.
This is how Mobius works. It groups messages that appear to describe the same bug, shows how sure it is, and keeps every original. A person can unlink any message, and each link is saved in the audit history.
