Business & Revenue OpsFree
Voice of Customer Theme Synthesis
Send your tickets, public reviews and a changelog of shipped fixes, and get each theme marked open or stale against what you already fixed.
River reads your ticket export, public reviews and survey comments together, then reads your changelog or release notes as a fourth input rather than an afterthought. Every mention of a theme gets a date. Every shipped fix gets a date too. A theme where every mention predates the matching fix gets marked stale, real at the time and dead weight now. A theme with mentions after the fix, or with no fix at all, gets marked open, which is the shorter list product actually needs to see this quarter.
Old complaints do not disappear once a bug ships fixed. G2's own documentation states it will not remove a review for a poor rating. A published review stays up as long as it meets community guidelines, rules that say nothing about a later fix. Its review-decay math only touches the score buyers see, reducing an old review's weight, never flagging whether the words in it are still true. A bug fixed eight months ago and one reported yesterday can read almost identically on the same page.
This is for the support or product operations lead running a quarterly synthesis, not a live-dashboard team already running voice of customer across sources with a tagging pipeline in place. It complements rather than replaces a revenue-ranked backlog like the customer feedback register: that register tracks feature requests going forward, and this reads a quarter's pile backward against what already shipped. Pair it with a ticket taxonomy already in place, or run it cold against a raw export.
Why fixed and gone from the record are different facts
Staleness is checked per theme, not per review. A blanket rule like ignore anything older than six months would mark a genuinely unresolved complaint from seven months ago as dead, and a two-week-old duplicate of an old, already-fixed bug as live. Instead, every mention of a theme gets compared against the ship date of whatever fix actually addresses that theme, if one exists. A theme nobody has touched stays open regardless of how old its oldest mention is, because there is no fix date yet to compare it against.
Cascadeworks, a project and budget tracking tool sold to marketing and creative agencies, ran its Q2 2026 pile through this check: 340 tickets, 58 survey comments, and reviews pulled from G2 and Capterra. Three themes surfaced. Mobile offline sync drew 17 mentions total, the loudest theme in the pile, against a fix shipped April 14. Approval routing drew 9 mentions, against a fix shipped May 5. A duplicate default budget template created on project clone drew 6 mentions against no fix at all, because nobody had touched the underlying bug yet.
Split by fix date, the loudest theme nearly disappears: 13 of the 17 mobile-sync mentions predate the April 14 fix and go stale, leaving 4 open, worth $79,500 in named ticket accounts. Approval routing keeps 3 of its 9 mentions open, worth $240,000, and the unfixed duplicate-template theme holds all 6 mentions open at $125,000. Ranked by raw mention count, sync leads by nearly double. Ranked by open revenue, it finishes last. Revenue only attaches where a ticket carries a real account field, never an invented figure for an anonymous review.
How it works
Send the piles
Tickets, survey comments, public reviews, and your changelog or release notes with ship dates.
Themes get dated
Every mention clustered by theme, each one carrying the date it was written or logged.
Matched against fixes
Each theme's mentions compared to the ship date of whatever fix addresses it, if one exists.
Get open and stale
A sheet ranking themes by open revenue and raw volume, a document with verbatims, and a slide readout.
What you get
- Reads tickets, survey comments and public reviews together, then reads your changelog as a fourth input.
- Matches every theme's mentions against the ship date of whatever fix addresses it, not a blanket age cutoff.
- Marks each theme open or stale, so a dead complaint stops competing with a live one for attention.
- Prices open themes in revenue only where a ticket carries a real account, never an invented dollar figure.
- Flags themes with no matching fix, which stay open no matter how old their oldest mention is.
- Ranks by open revenue exposure and by raw mention count, so you can see the two diverge.
Common questions
How is this different from a tool that just merges tickets, reviews and surveys?
Merging channels tells you what each source over-represents. This tool assumes you already have a theme, then checks its mention dates against your changelog. A theme that once mattered and has not been mentioned since your fix shipped gets marked stale, which a channel-bias check has no way to catch.
What if a theme keeps coming up after I already fixed it?
It stays open. The check compares mention dates to the fix date, so any mention after the ship date, even one, keeps the theme open. That usually means the fix missed an edge case or a variant of the original complaint, worth flagging back to whoever shipped it.
Where does the revenue exposure number come from?
Only from tickets that carry a real account or plan field. A public review or an anonymous survey comment adds to the mention count but never to the dollar figure, since there is no account behind it to sum. An estimated number would be worse than an empty column.
Isn't an old review just outdated, not stale in a way that matters?
It matters because it is still visible. G2's documentation states it will not remove a review for a poor rating. A published review stays up as long as it meets community guidelines, which say nothing about a later fix. Its review-decay math only reduces an old review's weight in your score, never whether a reader can tell it is already resolved.
How does this fit with a revenue-ranked feedback backlog?
That register ranks open feature requests by the ARR behind them going forward. This tool runs backward over a quarter's pile against what you already shipped, so a theme it marks stale is one that register can retire rather than keep ranking.
What if I don't have a changelog written down anywhere?
Paste whatever you have: release notes, a record of ship announcements, or a plain list of what shipped and when. Without any fix dates at all, every theme comes back open by default, since there is nothing yet to compare its mentions against.
Voice of Customer Theme Synthesis
Fill in the form and your workspace opens with the work already underway.