Skip to content
Swingback, home

BlogFeature requests

Duplicate feature requests: find them before votes split

How duplicate feature requests hide what users want most, how to catch them while people type, and what a merge must keep: votes, comments and followers.

By Elie Baier ·

Duplicate feature requests split the votes: "Dark mode", "Night theme" and "Easier on the eyes at night" each look like a small ask, while together they are your most wanted feature. The fix is in two places. Catch a duplicate before it's written, by showing people the requests that already exist while they type. Then merge what still slips through, so that every vote, comment and follower ends up on one request, and nobody's vote counts twice.

Why duplicates are worse than they look#

A duplicate isn't only clutter in the list:

  • It hides demand. Three requests with twenty votes each rank below one with forty, though they ask for the same thing.
  • It splits the conversation. The useful comment, the one with the edge case, is on the copy nobody reads.
  • It breaks the loop. When you ship, you tell the people on the request you worked from. The others hear nothing.

Keyword search doesn't catch them, because people describe a problem in their own words. "Dark mode" and "night theme" share no word at all.

Catch it while it's written#

The cheapest duplicate is the one never posted. As someone types a request's title, show them the existing requests closest in meaning, with their votes, so they can vote for one instead.

Matching by meaning takes embeddings: each request becomes a vector, and close vectors ask for close things. That's what finds "night theme" from "dark mode". It needs no language model reading anything: Swingback computes its embeddings on its own servers, for every workspace.

Some duplicates still get written. The person didn't look, or thought theirs was different, and sometimes it is.

Merge what slips through#

For the duplicates already on the board, a model can do the reading. When a new request is close in meaning to others, Swingback's AI compares them and says whether they ask for the same thing. It suggests; it never merges.

A possible duplicate, which a person merges or dismisses: the request's votes and comments then count for the other.

Its suggestions wait under Review → Duplicates, where your team decides:

  • Merge moves the votes and the comments to the other request. Someone who voted for both counts once.
  • Not duplicates dismisses the pair for good, so it doesn't come back.

A person decides because "the same thing" is a judgement. "Export to CSV" and "Export to Excel" may be one request for your users, or two for your engineers.

What a merge should keep#

Whichever tool you use, check what a merge does with what people left on the duplicate:

  • Votes, counted once. A person who voted for both requests is one vote on the merged one.
  • Comments, moved over, with who wrote them.
  • The people following it. They should hear that the request was merged, and then hear when it ships.
  • Its address. A link someone saved should lead to the request that took it in.
  • Who is asking. If you rank by what your customers are worth, their companies move with their votes.
  • A way back. A merge that was wrong should come apart.

Swingback's merge does all six, and the AI that suggests merges is one of the AI features you turn on one at a time, under AI features.

Start hearing what your customers want

Set up your portal in minutes. The Free plan has no time limit, and no card is needed.