Most competitor pricing comparisons rank rivals by whatever each one showed first: a list price copied from a pricing page, a figure a prospect remembered from a call, a blank where a rival prints “Contact sales”. Sort those from cheapest to most expensive and you get a sorted list, not a ranking of the rivals. Each number is a price for a different buyer, and the blank is no price at all yet.
A comparison is only as reliable as its least comparable quote. A fair one has six parts:
Mystery Demo fills in the quotes, the one part nobody can research from a desk. Its team takes each rival’s sales calls as the buyer on your card, records them, and brings back every quote with its source: the minute a rep said it, or the email it arrived in. The card, the rules, the published prices and the labels stay your team’s own.
The First Numbers on Your Sheet Price Different Buyers
Take four rivals in dental practice software, lettered, with every figure invented for the example. Here is what each one’s pricing page shows, and what that number is a price for.
| Rival | What its page shows | What that number is a price for |
|---|---|---|
| A | $40 a seat a month, billed annually | The core plan, at any team size, before anyone has asked what you need |
| B | “Contact sales” | Nothing yet |
| C | From $25 a seat a month | A starter tier that stops at 25 seats |
| D | A usage calculator | Whatever usage you typed into it |
Sorted as they stand, Rival C looks cheapest and Rival A comes second. Rival B and Rival D cannot be placed at all, and if your buyer needs 40 seats, Rival C’s $25 was never on offer to them.
No two entries on that sheet price the same buyer. So when two prices differ, you cannot tell whether the rival or the buyer made the difference. A fair comparison needs one buyer behind every number: the same seats, term and scope, priced by every rival.

With one buyer behind every number, a difference between two prices says something about the rivals. A review site will not carry that buyer’s price, and published prices are rare even there: G2 counted how many product profiles on its own marketplace list any price at all, and found 4%, which was still over 9,300 profiles in March 2025. That buyer’s price comes out on each rival’s sales calls and in the follow-ups after them.
How Mystery Demo Gets Every Rival to Price One Buyer
A rep who recognizes your company gives your own team the generic tour, so Mystery Demo becomes the buyer on your card on every rival’s call. At kickoff you hand over the buyer you want priced, written as a short card: the seats, the term, the billing, the currency, the scope you need, and the usage for any rival that prices by it. The card goes onto the project’s list of questions, the same list for every rival.
Here is that list on our public example board, where the client and every rival are invented. A real project’s board is built from the calls taken for that client. The first objective on the example list is pricing and packaging: how each vendor structures its price, what its entry tier holds, and where its discounts come from.

Then comes the fábula, the buying scenario the team brings to each rival: a believable company with a real reason to buy. Its story is fitted to each rival’s usual customer, so every rep takes it seriously. The story changes who the buyer seems to be, never the numbers on your card.
Each rival is booked through its normal front door, and the calls run from discovery to the demo to the pricing conversation. When the number does not come on the first call, a follow-up asks what a procurement team would ask. Here is what a project keeps for every quote.
The written quote is asked for, and kept whenever it arrives. It is never promised, because only the rival decides whether to send it.
The questions come from operators who have sold B2B software themselves. They know which question moves a rep from the price list to a number for this buyer, and they note what the rep left out, such as whether onboarding costs extra.
A project costs a flat €499 per competitor, everything included, and one rival’s board is ready in one to two weeks. A full landscape of rivals runs as one SaaS competitor pricing research project in four to eight weeks, not one rival after another, because the calls run in parallel.
Every Quote Comes Back With the Call or the Email It Came From
The calls and the emails end up on one Notion board, with a page for each rival and pages that compare them. The comparison lives on its Findings & Analysis page, and for pricing that means the pricing matrix, one row per rival.
On the invented example board, the matrix sets each vendor’s pricing model beside its starting price, how openly the vendor gave that price, and what the price is based on. On a real board, every quoted figure in it traces to the call or the email it came from.

Follow one cell for the invented Rival B, step by step:
Rival B’s quote comes from one rep, one buyer scenario and one day. It shows what Rival B offered this buyer on that date, and it says nothing about the lowest price Rival B would accept, how it usually prices or what the next buyer will hear.
The board delivers the matrix, with each quote in the form the rival chose: per seat, per year, a platform fee plus usage, a fee on its own line. Your team builds the grid from it, with your own rules.
| What differs | The pricing matrix, on the board | Your comparison grid |
|---|---|---|
| Who builds it | Mystery Demo, from the calls and emails | Your team, from the matrix |
| Each price | As the rival gave it | Converted by your rules to one all-in figure |
| Beside each price | The call and the minute, or the email or document | The stamp and the label |
| What it answers | What each rival offered this buyer | Which quotes can be ranked, and in what order |
Your blank cells and your buyer card are most of a project brief already. Bring both to a short intro call, and we will tell you which cells a call can fill, and how soon.
The Comparison Grid, Part by Part
The grid is where the quotes become a ranking. It has six parts, and each answers a question your pricing meeting will ask before anyone ranks a rival.
| Part | What it answers before you rank | What fills it |
|---|---|---|
| Buyer card | “Priced for whom?” | Your target, set at kickoff and carried into every call by the buying scenario |
| Rules | “In what unit?” | Your team’s own input, written before the first quote comes back |
| Published price | “What does their page say?” | Your team’s own input, copied from the rival’s pricing page; the pricing matrix notes how openly each rival gave its price |
| Quoted price | “What did their rep offer this buyer?” | The pricing matrix on Findings & Analysis |
| Stamp | “Said or written, when, and until when?” | The Database and each rival’s page on the board: the recording, the minute, the emails |
| Label | “Can we rank it yet?” | Your team’s own call, read off the stamp |
Here is the grid filled for the four invented rivals. Every rival, line and number on it is invented to show the layout. On a real project, the quotes and stamps come from recorded calls and the documents the rivals sent.

Read the buyer card first, because every row is a rival’s answer to it. Then read across: Rival A and Rival B are comparable and ranked. Rival C and Rival D sit below the ranking, C until its onboarding and renewal lines arrive and D until it is priced at your usage instead of the rep’s.
Two of the grid’s parts, the buyer card and the rules, are written before any quote comes back, and they decide whether everything after them can be ranked.
How to Fill Each Part of the Grid
The work runs in that order. Your team writes the card before kickoff and the rules before the first quote comes back. The calls and their follow-ups bring back the quotes and their stamps, and the label comes last.
The buyer card. Write the buyer you most need priced, such as the deal you keep losing to these rivals, never an average of your deals. List these fields:
The card is a target, and the same card does not make two quotes equal. Scope and conditions still differ from rival to rival, so the card’s job is to make each difference visible. On a project, the board’s Fábula page also records how the story was fitted to each rival, so when a rep ties a price to something in the story, such as the buyer’s funding stage, you can see it, and the quote is conditional.
The rules. Write them before the first quote comes back. A rule written after the numbers tends to bend toward the answer the team was hoping for.
Most of these rules are also questions someone has to ask on the call: is onboarding separate, what happens at renewal, how long does this price hold. For one rival, those questions are how you find a competitor’s real price. The grid asks them of every rival, for the buyer on your card.
The two prices. Copy the published price exactly as printed, with its unit and its tier, and keep “Contact sales” as words, never a zero. Take the quoted price from the pricing matrix and convert it by the rules, with the rep’s own lines kept beside the result so anyone in the room can redo the sum.
The stamp. It records these facts, each with a place on the board:
A written quote is a document you can put on the table, and a number from a call is a recording you can play back. The stamp says which one you have, the way an evidence grade ranks a claim by how you got it. On the invented example board, the Database links the recordings and the documents that hold those facts: one table per vendor, each meeting dated with its recording and transcript, then the documents the rep sent.

A stamp with a gap is not a failure of the grid. The gap decides the quote’s label, and it is what you ask the rival for in writing. A quote priced on your card with no gap can be ranked as it stands, with the recording or the document as its evidence.
The label. Read it off the stamp and the quoted price. There are three.
| Label | What it means | Before it is ranked |
|---|---|---|
| Comparable | Priced on your card, with every line the rules need, a quote date, an end date, and a total that recomputes from those lines alone | Rank it |
| Conditional | A total exists, but only under an assumption the rival set, such as its own usage estimate, a seat count or plan other than yours, or a sign-by discount that ends before the quote does | Have it restated in writing on your terms (your volume, seats and plan, or the day you will sign), and with no other gap it becomes comparable; until then, list it below the ranking with its assumption |
| Incomplete | A line the rules need, the quote date or the end date is missing | Ask for the gap in writing; until then, list it below the ranking with its question |
The ranking. Rank only the comparable quotes, and list every other quote below the ranking with the assumption or the question that keeps it out. In the example, that reads:
Use that order to see where your own price for that buyer sits among what the rivals quoted on those dates.
There is a quick test of whether you need the labels at all. If every quote on your sheet would already pass as comparable, the labels add nothing. Any quote that would not pass cannot be ranked yet.
Even a fully comparable grid is true only on the dates in its stamps, and its end dates pass one quote at a time.
Ask a Rival Again When Its Quote Expires
A finished grid is a dated set of observations for one buyer. It supports one claim: on these dates, for this buyer, these rivals offered these numbers. It does not tell you the lowest price a rival would accept, its usual price or what it will say to the next buyer.
Three things mean it is time to ask again:
An expired quote is stale, not proof the price moved. Negotiated SaaS discounts differ by vendor and by term, and a pricing page does not show which one a rival is giving now, so the new number has to be quoted again. A pricing project can be re-run as soon as a rival reprices, and teams also come back one to three years later to see how each competitor moved.
The grid itself is free, and you can draw it this afternoon. Its quoted column is the hard part, because every cell in it needs a buyer on a rival’s call.
Somewhere on your sheet are cells that still say “Contact sales” and quotes that ran out last quarter. Tell us which rivals they belong to, and we will be the buyer each of them quotes next.
.png)