Skip to content
Back to Academia

Competitor analysis: how to compare offers on equal terms

02.04Market research and analytics
On this page

In October the owner of an IELTS prep centre in Almaty comes back to the idea of a discount. He sends the marketer a screenshot from Instagram: a language school with an IELTS group charges 35,000 ₸ a month, the centre charges 45,000 ₸. "We're ten thousand more expensive, let's drop to 40,000." The marketer asks for a week to compare not the monthly price but what a person actually gets for their money before the exam date. The centre, its competitors and the numbers in this lesson are illustrative.

Comparing under the same rules is called benchmarking. The picture shows the same principle with lunch delivery: a cheaper lunch plus paid delivery costs more than a lunch whose price already includes delivery.

Two receipts for the same order to the same address: a 2,500 ₸ lunch plus 700 ₸ delivery, 3,200 ₸ in total, against a 3,000 ₸ lunch with delivery included. The difference is 200 ₸.
Two receipts for the same order to the same address: a 2,500 ₸ lunch plus 700 ₸ delivery, 3,200 ₸ in total, against a 3,000 ₸ lunch with delivery included. The difference is 200 ₸.

Who goes into the comparison

You compare yourself with the options your customer chooses between. A list of companies in the industry won't do. The centre already has the right list: when it checked its positioning against competitors, the table included a language school with an IELTS group, a centre in another district advertising a "7.0 Guarantee", and a tutor with an Instagram blog called "IELTS from zero to 7.0". At the same time the manager added a CRM field, "how did you prepare before us": of the first 20 applicants, 11 had prepared on their own, 6 with a tutor and 3 at another centre.

Self-study stays out of the price table. Since it costs nothing, you compare it on what the person was missing while preparing alone. The three paid competitors can be compared, but first you have to agree on what exactly is being compared.

One basket for everyone

At 35,000 ₸ and 45,000 ₸ a month, people get different things. So you start by describing a basket: what someone in your segment needs to get their job done. An applicant whose exam is three months away needs three months of classes, at least two mock exams in the IELTS format, and feedback on their Speaking answers. Then for each competitor you work out what it costs to put that whole basket together there.

The marketer went through the websites, Instagram profiles and 2GIS listings and put it all in one table:

Language school"7.0 Guarantee"TutorCentre
Monthly price35,000 ₸55,000 ₸Not published45,000 ₸
How you payAll three months up frontMonthlyPer lessonMonthly
Mock examsExtra, 10,000 ₸ eachThree, includedNoneTwo, included
Speaking feedbackNoYesYesYes
GroupUp to 12 people with different goalsUp to 8 peopleOne studentUp to 8 people
Basket for three months125,000 ₸, without Speaking feedback165,000 ₸Can't be worked out135,000 ₸
Source and datePinned post and website price list, 6 OctoberWebsite and public offer, 6 OctoberProfile bio, 7 OctoberCentre's website, 6 October

On the monthly price, three months would add up to a 30,000 ₸ gap. On the basket the gap is 10,000 ₸ for the whole course, about 3,300 ₸ a month: the school charges 105,000 ₸ for classes and another 20,000 ₸ for two mock exams. Its programme has no Speaking feedback at all, so the full basket can't be put together there. For the difference, a centre student gets a group of eight instead of twelve, where everyone is preparing for IELTS, Speaking feedback and monthly payment. The school takes 105,000 ₸ up front, and for someone who is still unsure, that is part of the price too.

The centre already worked out what a cut to 40,000 ₸ would cost when it went through the five forces: to keep the same contribution it would need 54 students instead of 37. Whether applicants actually leave for the school because of price, the table can't tell you. The answers in the CRM will: the reasons people give for saying no, and the "why did you choose us" field.

The tutor's basket can't be worked out: he doesn't publish a price and has no mock exams. Four of the six applicants who had studied with other tutors before coming to the centre told the manager they paid 7,000 to 10,000 ₸ an hour. That is a rough market reference, but not this tutor's price.

Terms are part of the price

In the ads, "7.0 Guarantee" sounds like a promised score. The public offer on the website sets out the terms: if you score below 7.0, the next course is free, but only if your entry test was at least 6.0, you missed no more than two classes, and you sit the exam within a month of finishing. So the guarantee covers people who need to go up one band, and it promises a repeat course; it doesn't give money back. A guarantee, a discount or a "free trial lesson" goes into the table together with its terms, otherwise the table ends up holding ads instead of offers.

A source and a date for every number

A month from now the school may change its price list, ads will be switched off, and the owner will ask where the 125,000 ₸ in the table came from. That's why the last row of the table is mandatory: without it nobody can repeat the comparison, you included. Anything that can disappear gets a dated screenshot in one folder, ads first of all.

What you recordedHow to record it
PriceThe amount for your segment's basket, a link, a date
Guarantee or discountEvery condition from the public offer, word for word
AdThe offer text, a link, the date of the screenshot
Complaint in a reviewTopic, date, branch, platform

One observation stays one observation. If one review says the manager replied four hours later, that is one reply, not how fast the school works.

You build the comparison from what is open to everyone. The marketer didn't sign up for a competitor's trial lesson or mock exam: there are only a few seats, and he would have taken a real student's place.

Reviews: topics, not stars

The 2GIS rating is no good for comparison. 2GIS calculates it automatically, and it isn't an average of all scores: new and confirmed reviews carry more weight, older ones lose weight over time, and suspicious reviews can be moved to an unconfirmed feed and stop counting towards the rating (how 2GIS handles reviews). The gap between 4.8 and 4.6 mixes quality, how recent the reviews are and the platform's rules, and you can't pull them apart. If your client sells products, read Kaspi reviews the same way: they can only be left after a purchase, within 90 days (reviews on Kaspi.kz).

Read the reviews themselves. The marketer copied the last 12 months of reviews of the three competitors into a table and gave each one a single topic: "not ready by the date", "mock exams", "group with mixed goals", "rescheduled lessons", "teacher". The authors' names stayed out of the table: the analysis needs the topic, the date and the platform. Of 18 reviews of "7.0 Guarantee", four say they didn't get through the programme before the exam date; for the tutor it's two out of nine; for the school, five out of 30 complain about a group where some people prepare for IELTS and others learn English for work.

These are topics, and you can't get a share out of them: nobody knows how many students each competitor had over the year, and only some of them leave reviews. Four complaints about "7.0 Guarantee" don't mean that one student in five misses the date. What they do tell you is what to ask at the trial lesson when someone is comparing the centre with that competitor.

What to compare your own numbers with

The second kind of benchmarking is comparing your own metrics. Marketing chats love lines like "a normal CPL in education is 3,000 ₸". Numbers like that stay out of reports, because nobody knows whose ad accounts they came from, which city, or what counted as a lead.

Sometimes the platforms themselves offer a reference with a known sample. GA4 has benchmarking: a property's metrics are compared with the median and the 25th and 75th percentiles of a peer group. GA4 picks the group by the property's industry category, only properties with a minimum number of users are included, and the data refreshes every 24 hours (benchmarking in GA4). The help page doesn't say whether the group is limited to your country. Benchmarks only appear if the Modeling contributions & business insights data sharing setting is on in your Analytics account settings. It's fine as general background, not as a plan for Almaty.

The centre has its own plan, and it comes from the course economics: up to 2,000 ₸ per lead, up to 8,000 ₸ per person who comes to a trial lesson. That's what each week is compared against, along with previous weeks. In week 2 the Meta test produced a lead for 896 ₸ and a trial attendee for 3,287 ₸, and the TikTok week produced 1,824 ₸ and 17,325 ₸. That series tells the centre more than any market average. But three or four people come to trial lessons in a week, so the cost per attendee jumps around from week to week, and one week isn't enough to compare channels.

From a difference to a hypothesis

The table gives you material for a hypothesis, and the decision comes after the test. Here is the centre's difference: the school's monthly price is visible right away, while nobody quotes the full price of the basket, the centre included. The manager writes on WhatsApp "The course is three months, 45,000 ₸ a month", and the person compares 45,000 with 35,000.

Hypothesis: if the same message says the price includes two mock exams, a group of up to eight and monthly payment, fewer people will go quiet after hearing the price. The one-month check: the manager adds one line to the template and marks in the CRM who stopped replying after the price and who gave "too expensive" as the reason for saying no. The comparison is with the previous month; if nobody was marking who went quiet after the price back then, the first month goes on getting that number. The centre gets a few dozen leads a month, so the result is read as a hint, mostly through what people actually said.

The table gives no reason to drop to the school's price. The centre already answered "7.0 Guarantee" when it chose its positioning, and there's no point copying it.

Exercise: a competitor table for your own project

You end up with a three-competitor table with sources, tagged reviews and one hypothesis.

Start the review with the last row of the table. If it's empty, in a month you won't remember where the numbers came from, and you'll have to build the table again. If the price row says "from 30,000 ₸", that isn't a price yet: recalculate it for your segment's basket, with every mandatory extra.

An empty cell is better than an invented one. If you couldn't find a competitor's price in public sources, write "not published" and note how it could be found, for example from customers who used that competitor.

In the review tagging, look at the conclusion. "A has twelve complaints, B has four, so B is better" compares numbers without a base: you don't know how many customers each has or which of them write reviews. Keep the topics as questions for your own customers. And if your hypothesis came out as "lower the price", go back to the basket: for the centre, the gap with the school shrank threefold after recalculating, and the conversation moved away from price.

Video: benchmarking

Competitor analysis: benchmarking - Biznes-Konstruktor (in Russian)

The video is from 2017. As you watch, note which conditions have to be recorded for a comparison to be repeatable.

Need help applying this to your analytics? Discuss your project with Goodlabs →