Blog

August 3, 2026 · By Jeremy Feit

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.

Ripplewatch turns hundreds of raw CRM win/loss rows into a readable summary by grouping reasons by exact text, not LLM-based semantic clustering, since CRM dropdown reasons are already close-ended, then ranking the top 5 win reasons and top 5 loss reasons independently. It's deterministic and free, and the same component powers both a per-competitor fact sheet and an account-wide Win/Loss page.

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 dropdown. "Price." "Missing feature." "Lost to incumbent." And a dozen slight variations on each. The raw list is complete. Nobody actually reads 800 rows to find a pattern, which is the same underlying problem as why CI programs go stale: data without curation just becomes noise nobody looks at.

Why group win/loss reasons by exact text instead of 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. It's also 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 just don't need it.

Why show only the top 5 reasons instead of 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. Each column caps 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.

Where does this win/loss view show up in the product?

This view is the same component in two spots: each competitor's fact sheet (scoped to deals against that one competitor) and an account-wide Win/Loss page (aggregated across all of them). Same grouping logic, same layout, same 5-item cap. Switching between "how do we do against Competitor X" and "how do we do overall" doesn't mean learning a different UI. G2 and Gartner reviews can help shortlist a vendor, but they can't tell you why you specifically lose deals — see G2 vs. Gartner vs. building your own win/loss process for that distinction.

One email when we publish something new. No spam, unsubscribe anytime.

2-minute quiz

Not sure where you stand?

Answer 5 quick questions to find out whether your competitive intelligence is Reactive, Aware, Systematic, or Predictive, and what to do about it.