Skip to content
Data
Skill

/competitor-benchmarking

Benchmark a set of companies against each other on hard financials - a detailed per-year data table for each company (revenue, gross profit, EBITDA, EBIT, net income), plus a cross-company summary of size, growth and profitability, with every derived figure footnoted to its

From plugin
skills
54 skills1 MCP

Claude Code

$ npx -y skills add economicmind/skills --skill competitor-benchmarking --agent claude-code

SKILL.md

competitor-benchmarking.SKILL.md
name: competitor-benchmarking
description: >
  Benchmark a set of companies against each other on hard financials - a detailed per-year data table for
  each company (revenue, gross profit, EBITDA, EBIT, net income), plus a cross-company summary of size,
  growth and profitability, with every derived figure footnoted to its formula and inputs and every line
  attributed to its underlying provider. Use whenever the user wants to "compare / benchmark companies",
  "how does X stack up against its peers", "build a comp set / comp table", "competitive benchmarking",
  "peer financials for the X market", or names several companies to put side by side. Either accept an
  explicit list of companies or derive the peer set from a target company's Economic Mind market report.
  Financials come ONLY from the Economic Mind connector, are normalized to one currency, and are flagged
  reported-vs-not-reported. The deliverable is data (Markdown + JSON); presentation is left to the client.

Competitor benchmarking

Put a set of companies side by side on their **reported financials**. The deliverable is **data** - a Markdown report plus a JSON sidecar - not a styled document; layout is the client's job. The entire value is **trust and comparability**: every number is either reported (with its provider named) or shown as `n/a`, every derived figure carries a footnote with its formula and exact inputs, every company is pulled in the **same currency** so sizes are comparable, and the peer set is chosen transparently. A reader should be able to audit any cell in the benchmark back to its origin.

This is the multi-company sibling of the company-at-a-glance skill and follows the same disciplines. The hard part of benchmarking is not arithmetic - it is making sure you are comparing like with like, so the comparability rules below carry as much weight as the calculations.

Data sources (no exceptions)

**Financials come ONLY from the Economic Mind connector.** Every revenue, profit, margin and growth figure must trace to a `get_company_financials` call. Do **not** pull a financial number from the web, from memory, from a market report's prose, or from a "sanity check" - even if the connector is slow, returns nothing, or seems wrong. If Economic Mind does not report a figure for a company, that cell is `n/a`. There is no fallback. (The market report is used **only** to choose the peer set - never as a source of financial figures.)

Comparability: the three things that make a benchmark honest

A side-by-side table invites the reader to draw conclusions from differences between companies, so those differences must be real and not artifacts. Three rules:

1. **One currency, for everyone.** Pull every company in the **same** currency (caller-specified, else a sensible default - typically the currency of the market report or the one shared by most of the set). Economic Mind does the conversion. State the currency and that figures are FX-converted by EM. Without this, a "bigger" company might just be a stronger-currency company. 2. **Margins are currency-neutral; growth is not.** A margin is a ratio of two same-year, same-currency figures, so it is unaffected by the conversion. A **growth rate or CAGR computed on FX-converted figures blends business growth with currency moves.** So compute revenue growth / CAGR from each company's **native filing-currency** revenue series, and footnote it as such. If you only have the common-currency series, you may still report CAGR but must flag it as *"FX-inclusive"* so the reader knows. (Margins and size are fine in the common currency.) 3. **Same year basis.** Companies file on different calendars and report different spans. Always show the fiscal year per figure, compute each company's growth across **its own** reported endpoints (name them), and never compare a 4-year CAGR for one company against a 2-year CAGR for another without labelling it.

Work to files first, then read them back

Context can be compressed mid-task, and a half-remembered number across a dozen companies is exactly how a benchmark goes wrong. So **immediately after each tool call returns, write its raw output to a file**, before the next call. Then, before assembling the benchmark, **read every file back** and build the report from the files, not from recall. Create one working directory at the start, e.g. `em-bench/`.

Calculations are explicit, gated, and verified

You compute the derived figures yourself - there is no bundled script - so the rigor comes from method:

  • **Gate on reported inputs.** Compute a figure **only when every input it needs is reported** for the

relevant year(s) for that company. If EBIT is missing for a company-year, that EBIT margin is `n/a` - never infer it, and never borrow a peer's value.

  • **Show the work.** Every derived figure gets a footnote with the formula and the actual numbers, e.g.

`EBITDA margin (Co A, FY2024) = EBITDA ÷ Revenue = 19.4 ÷ 121.6 = 15.9%`. A figure a reader cannot recompute from its footnote does not belong in the benchmark.

  • **Verify before you use.** For any multi-step figure (a CAGR), write the steps out and check the

intermediate before relying on it. When in doubt, recompute from the raw file rather than reuse an earlier result.

Calculation methods (use these exact definitions)

Margins, per company per fiscal year (currency-neutral):

  • `Gross margin = Gross profit ÷ Revenue`
  • `EBITDA margin = EBITDA ÷ Revenue`
  • `EBIT margin = EBIT ÷ Revenue`
  • `Net margin = Net income ÷ Revenue`

Growth, per company (from the **native-currency** revenue series; name the endpoint years):

  • `Revenue YoY (FYn) = (Revenue_FYn − Revenue_FYn-1) ÷ Revenue_FYn-1`
  • `Revenue CAGR, full span = (Revenue_latest ÷ Revenue_earliest)^(1 ÷ (Y−1)) − 1`, `Y` = reported revenue

years in the span.

  • `Revenue CAGR, L3Y = (Revenue_FYn ÷ Revenue_FYn-3)^(1 ÷ 3) − 1` (needs four consecutive reported years).

This skil

Read more
@economicmind
Ships withskills

The skills are built for knowledge workers - analysts, founders, investors, consultants and operators - who need market insights they can trust. The skills are tightly coupled to the Economic Mind connector.

54 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
5
Star history of economicmind/skills on GitHub, a chart by star-history.com

Other skills on skills.

bottom-up-market-size

bottom-up-market-size

Size a market bottom-up from an Economic Mind market report and stress-test that number against independent sizing approaches -…

@economicmind@economicmindInstall Skill
company-at-a-glance

company-at-a-glance

Produce a rigorous, fully-sourced data snapshot of a single company - a detailed multi-year financial table (revenue, gross…

@economicmind@economicmindInstall Skill
getting-started

getting-started

Orient a user to the Economic Mind plugin and connector - what it is, what data it draws on, which skills and connector tools are…

@economicmind@economicmindInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem06d69k
@mem0ai@mem0aiInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

posthog12d41k
@posthog@posthogInstall Skill

Questions about competitor-benchmarking.

Which coding agents can use competitor-benchmarking?
competitor-benchmarking installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.