A Competitor Pricing Grid Built From Their Sales Calls

A competitor pricing comparison is only as reliable as its least comparable quote. Build the six-part grid and see how Mystery Demo brings back rivals’ quotes.

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:

One buyer card that every rival prices.
Rules that put every price in the same unit.
The price each rival publishes.
The price each rival’s rep quoted for your card.
A stamp that says when and how the quote was given.
A label that says whether the quote can be ranked yet.

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.

RivalWhat its page showsWhat that number is a price for
A$40 a seat a month, billed annuallyThe core plan, at any team size, before anyone has asked what you need
B“Contact sales”Nothing yet
CFrom $25 a seat a monthA starter tier that stops at 25 seats
DA usage calculatorWhatever 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.

Two panels. Left: no two entries on the sheet price the same buyer, so the rival and the buyer both change. Right: all four rivals are asked to price one card, 40 seats for a year, so the buyer is held still. Scope can still differ.
Read the last line of each panel: once the buyer is held still, a gap between two prices starts to say something about the rivals.

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.

The Research Objectives page of an invented Mystery Demo example board: a note that the objectives were agreed at kickoff and set the questions asked in every recorded demo, the core question, and the first objectives, led by competitor pricing and packaging.
The objectives page on the invented example board. Your buyer card and your pricing questions go here at kickoff.

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.

Not every rival will price the card as written. When a quote needs a seat minimum or a bigger plan than yours, that rival’s page on the board says it is for a different buyer, and it stays conditional.

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.

Always: the recording of every call, with the minute any number was said.
Always: every email and document the rival’s rep sent.
When the rival sends one: the written quote, with its lines and how long it holds.
When it does not: a note saying the number was only spoken, or came with no end date.

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.

The pricing comparison from the Findings and Analysis page of an invented Mystery Demo example board: one row per vendor, with its pricing model, its starting price, how transparent it was about price, and its main pricing axis, above a note on the market’s pricing logic.
The pricing matrix on the invented example board, one row per vendor.

Follow one cell for the invented Rival B, step by step:

On the second call, at minute 24, its rep quotes $52 a seat a month and names a separate onboarding fee of $6,000.
The written quote repeats the fee as its own line, caps the renewal increase at 5%, and gives the date the quote ends.
In the matrix, the cell carries the quoted price, the onboarding line and the minute.
On your grid, the fee is spread over the card’s 40 seats for 12 months, which is 480 seat months. It adds $12.50 a seat a month, for $64.50 all in.
Chief Mystery Officer
Mystery Demo
A gap in a quote does more damage than a high number. A high number is at least honest about itself. A missing onboarding line, or a renewal term nobody stated, turns into a zero on a spreadsheet, and zero is always the cheapest figure on the sheet. So when a rep leaves something out, our notes keep the gap right beside what was said, and the next touch asks for it in writing.

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 differsThe pricing matrix, on the boardYour comparison grid
Who builds itMystery Demo, from the calls and emailsYour team, from the matrix
Each priceAs the rival gave itConverted by your rules to one all-in figure
Beside each priceThe call and the minute, or the email or documentThe stamp and the label
What it answersWhat each rival offered this buyerWhich 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.

PartWhat it answers before you rankWhat 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.

An example quote comparison grid for dental practice software, labeled as invented: a buyer card of 40 seats for a year, then four lettered rivals with each published price beside the quote converted to a seat a month, its source and end date, and a label, two comparable, one incomplete and one conditional.
An example quote comparison grid. Every rival, line and number on it is invented.

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:

Seats, in the unit each rival charges for: users, members or workspaces.
Term and billing, the way your deals sign: 12 months billed annually, or monthly.
Currency and region, so a euro quote never lands beside a dollar one.
Required scope: the modules, the support level, and any integration, or none.
Usage, for any rival that prices by it: the volume you expect in that rival’s unit, such as texts or credits, written as a number.

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.

One unit: a seat a month on annual billing.
One currency, converted on one stated date.
One-time fees spread over the term, inside the all-in figure.
Required add-ons inside the number, never beside it.
Renewal terms written beside the number, never blended into it.
The reason a rep gave for a price, written down as what the rep said, never as a fact about why the price moved.
Anything the quote leaves unsaid is unknown, never zero.

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:

The date of the quote.
Spoken or written, and if written, the date of the document.
If spoken, the call and the minute the number was said.
The end date: the day the quote stops holding.

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.

The Database page of an invented Mystery Demo example board: a note that every recording, transcript and collected asset links to one shared folder, above one vendor’s table listing its intro and demo meetings with dates, recordings and cleaned transcripts, then the sales deck, case study, calculator and guide its rep sent.
The Database on the invented example board: each meeting dated, with its recording and transcript, and every document 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.

LabelWhat it meansBefore it is ranked
ComparablePriced on your card, with every line the rules need, a quote date, an end date, and a total that recomputes from those lines aloneRank it
ConditionalA 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 doesHave 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
IncompleteA line the rules need, the quote date or the end date is missingAsk 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:

First, Rival A: $34.00 a seat a month, all in.
Second, Rival B: $64.50 a seat a month, all in.
Below the ranking, Rival D: $40 while the rep’s own volume holds, until your volume and an overage cap are agreed in writing.
Below the ranking, Rival C: $38 on its core plan, before onboarding and renewal, until both arrive in writing.

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:

Expired quote: when a quote passes its end date, ask that rival again.
Repackaged rival: when a rival changes its packaging or its pricing page, ask that rival again.
New buyer: when your own seats, term or required modules change, rewrite the card and ask every rival 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.

Ready
To Connect?

Let's Connect