30% off your first 3 months

Get the deal

Competitive research in a spreadsheet

by DuckyHelperNov 12, 20265 min read
Getting work done

TL;DR:

  • Decide your columns first and fill the same ones for every competitor, or the comparison will not line up.

  • Record the date you checked and the link to the page, because public pages change.

  • Convert every price to the same basis, such as cost per year for ten users, before you compare.

Your manager asks, "How does our pricing compare with the other four options?" You open four pricing pages in four tabs and every page describes things differently: per user, per month, billed yearly, with different limits. If you read them one at a time and write notes in a document, you will not be able to compare them. A spreadsheet with fixed columns solves that.

Decide what you are comparing

Write the question in one sentence before you open any page. For example: "What would a team of ten pay for the plan closest to our current one, for a year?" That sentence tells you which plan to look at, how many users to assume and what unit to compare. Without it you will collect interesting facts that do not answer anything.

Stick to public information: the pricing page, the public help or docs pages, and the product description. Do not guess at private deals or discounts, and mark anything you could not find as "not listed" rather than leaving it blank.

Set up the sheet before you collect

  1. Create fixed columns: Use one row per competitor and plan, with the same columns for all: Company, Plan name, Price shown, Billed per, Billing period, Main limits, Date checked, Source link, Notes.

  2. Make the unit explicit: Add a column for what the price means: per user, per month, per project, flat. Two prices are not comparable until their units match.

  3. Add a calculated column: After the data columns, add one that converts every row to the same basis, such as yearly cost for ten users. Keep the assumptions (10 users, 12 months) in labeled cells, not buried inside formulas.

  4. Fill row by row, not column by column: Finish one competitor completely, with its link and date, before starting the next. It keeps the facts and their sources together.

  5. Freeze the header and sort last: Freeze the top row so labels stay visible, and sort or filter only after all rows are complete.

Worked example: four competitors' public pricing pages

The numbers below are invented placeholders to show the method. Say you assume ten users and monthly prices per user, billed monthly. Put 10 in cell H1 and 12 in H2 with labels beside them. The yearly cost formula in each row is =C2*$H$1*$H$2, where C is the price per user per month.

Company

Plan

Price per user per month

Date checked

Yearly cost for 10 users

Competitor A

Team

12

2026-11-09

1440

Competitor B

Team

15

2026-11-09

1800

Competitor C

Basic

9

2026-11-09

1080

Competitor D

Business

20

2026-11-09

2400

Placeholder prices, not real vendors

Check the arithmetic: 12 × 10 × 12 = 1440, 15 × 120 = 1800, 9 × 120 = 1080 and 20 × 120 = 2400. The absolute references $H$1 and $H$2 keep the assumptions fixed as you fill the formula down, so changing the team size to 25 recalculates every row at once.

The table is only the start. Next to it, add the plan limits you care about, such as storage or number of projects. The cheapest row may drop a feature you need, and without a limits column you would never see it. Also record whether the page lists a monthly or annual price: a price shown "per month, billed yearly" is not the same as a true month-to-month price.

Dates checked and sources linked

Public pricing changes without notice, so the date checked is part of the fact. Put the full date in its own column and use the page address itself in the source column, not just the company name. When someone challenges a number in a meeting, you can click through, see if the page has changed, and update the row.

Take a screenshot of each page into a folder named by date, or save it as a PDF. The cell tells you the number; the saved page proves what the number was that day.

Reading the result without overreaching

Sort by the yearly cost column and then look at what each plan includes. Write two or three plain sentences under the table: which is cheapest, which is the closest match to your needs, and what you could not verify. Resist ranking competitors on anything the pages do not show, such as quality or support.

Mistakes to avoid

  • Comparing a per-user price to a flat price without converting.

  • Using different plan tiers for different companies and calling it like for like.

  • Leaving out the date checked, so nobody knows how old the row is.

  • Copying a number from a review site instead of the company's own page.

  • Mixing currencies without noting the rate and date.

Doing it faster

If you want a second pair of eyes while you read a pricing page, DuckyHelper sees what is on your screen and answers out loud when you press fn on a Mac (Ctrl+Shift+Space on Windows and Linux). You still type and verify each number yourself. A similar method works for comparing prices before a purchase.

Frequently asked questions

How often should I refresh the sheet?

Whenever a decision depends on it, and at least before you share it. The date checked column tells you which rows are stale.

Can I paste a table from a website into the sheet?

You can, but check every number against the page afterwards, and add your own date and source columns. Pasted tables often carry hidden formatting and merged cells.

Get started

DuckyHelper can
do more

It sees your screen and works in any app you use. Try it for 10 minutes, no card.

Get it for Mac, Windows or Linux

Share

Questions and jobs

Do anything

Ask it a question or hand it a job, in any app.

Doing jobs for you is in early access on Mac. Asking works on Mac, Windows and Linux.