August 12, 2026
Why we stopped showing raw win/loss dumps
A CSV import with 800+ win/loss rows is data. Nobody can read it. Here's how we turned it into a two-column, top-5 summary — deterministically, with no LLM call.
Import a CRM's win/loss export into Ripplewatch and you can easily end up with hundreds of rows — one per deal, each with a canned reason your reps picked from a CRM dropdown: "Price", "Missing feature", "Lost to incumbent", and a handful of variations. The raw list is complete, but nobody actually reads 800 rows to find a pattern.
Group by exact text, not by meaning
The obvious fix is to summarize the reasons — and the obvious tool for summarizing freeform text is an LLM. We didn't use one here, on purpose. CRM win/loss reasons are close-ended in practice: they come from a fixed dropdown, so "Price" and "price" and " Price " are the same reason typed slightly differently, not three genuinely different reasons that need semantic clustering. Grouping by exact text (trimmed, case-insensitive) does the job, and it's deterministic and free — no API call, no risk of an LLM inventing a category that isn't in the data.
That's a real distinction we draw elsewhere in the product too: Trends, which looks for patterns across genuinely freeform text like call notes, does use the model. Win/loss reasons don't need it.
Top 5, not all of them
Once reasons are grouped and tallied, we rank win reasons and loss reasons independently — a reason can legitimately show up on both sides, if it's mostly why you win but has cost you a couple of deals too — and cap each column at the top 5, with a "+N more" indicator and a thin proportional bar per row. The full raw list is still there, one click away behind a "Show all N individual entries" toggle, for anyone who wants to audit the underlying data.
One component, two places
This view is the same component in two spots: on each competitor's fact sheet (scoped to deals against that one competitor) and on an account-wide Win/Loss page (aggregated across all of them). Same grouping logic, same layout, same 5-item cap — so switching between "how do we do against Competitor X" and "how do we do overall" doesn't mean learning a different UI.