Market Research skill for Codex

TAM you can defend line by line. Codex sizes a market from countable units and real prices, applies sourced SAM filters one at a time, and grounds SOM in sales capacity or comparable companies rather than a round percentage. It cross-checks against top-down figures, flags gaps over 2x, and delivers an assumptions log plus low, base and high ranges so readers see which input drives the answer.

  • Research
  • $market-research
  • 162 lines
  • 2 files
  • ~1,700 tokens
  • MIT
  • Updated

Install

curl -fsSL codexskills.dev/install.sh \  | sh -s -- market-research

Installs to ~/.agents/skills/market-research/ for every project on this machine.

104-line POSIX script. No sudo, no telemetry. Read install.sh

Use it in Codex

Start a prompt with $market-research, or pick it from /skills. You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.

What Codex reads before loading it

Sizes markets with TAM, SAM and SOM using bottom-up unit math cross-checked against top-down data from census, industry and public-company filings, segments customers by firmographics and needs, and documents every assumption in a spreadsheet model with sensitivity ranges. Use when asked to size a market, estimate TAM/SAM/SOM for a pitch or business case, research a customer segment, or sanity-check market numbers from a report or deck.

Use it when

  • A pitch, business case or plan needs a market size with visible assumptions
  • You are choosing which segment to enter first
  • Someone hands you a market figure and you need to know if it holds up

Use something else when

How to check the result

Units stay consistent from TAM to SOM, every input has a dated source or a labelled assumption, and bottom-up and top-down totals agree within about 2x or the gap is explained.

The mistake it prevents

Quoting an industry-wide analyst number as TAM, or switching units mid-model so seats get multiplied by a per-company price.

~/.agents/skills/market-research/SKILL.md

--- name: market-research description: Sizes markets with TAM, SAM and SOM using bottom-up unit math cross-checked against top-down data from census, industry and public-company filings,… license: MIT ---

A market estimate is credible when a skeptical reader can see every input, where it came from, and how much the answer moves if the input is wrong. The bottom-up number (who buys, how many, at what price) is the estimate; top-down figures are the sanity check.

This produces research for planning, not investment advice. Figures used in fundraising materials or filings should be reviewed by someone accountable for them.

Definitions (state them in the output)

TermDefinitionBuilt from
TAMAnnual revenue if every potential customer for this problem bought your type of solutionAll target units x annual price
SAMThe part of TAM your product and go-to-market can actually serve now (geography, segment, channel, language, compliance)TAM filtered by current constraints
SOMThe share of SAM you can realistically win in a stated period (usually 3-5 years)SAM x achievable share, grounded in comparables or sales capacity

TAM is about a problem and a buyer, not about an industry label. “The $600B software market” is never a TAM.

Workflow

- [ ] 1. Define the buyer, the unit and the price metric
- [ ] 2. Bottom-up: count units and price per unit
- [ ] 3. Apply SAM filters, each with a source
- [ ] 4. Derive SOM from capacity or comparables
- [ ] 5. Top-down cross-check; reconcile any gap > 2x
- [ ] 6. Sensitivity: low / base / high on the 3 biggest drivers
- [ ] 7. Segment the SAM and rank segments
- [ ] 8. Write the assumptions log and the summary

1. Unit and price

Pick the unit that matches how the product is bought: companies, seats, developers, locations, vehicles, transactions. Pick the price metric customers actually pay (per seat per year, per location per month, % of GMV). Mixing units (seats in one step, companies in the next) is the most common error in market models.

2. Bottom-up count

Target unit:  US dental practices with 3+ chairs
Count:        ~X establishments (Census County Business Patterns, NAICS 621210,
              filter by employee size class as a proxy for chairs)
Price:        $300/location/month from 4 competitor pricing pages (median)
TAM (US):     X x $3,600/year

Good public sources (most need network access):

DataSource
US establishments by industry and sizeCensus County Business Patterns, Statistics of US Businesses (by NAICS)
Occupations and headcountsBLS Occupational Employment and Wage Statistics
EU businesses by sector and sizeEurostat structural business statistics
Developer populationsStack Overflow Developer Survey, GitHub Octoverse, SlashData (note each one’s method)
Public competitors’ revenue, customers, segments10-K / 20-F filings on SEC EDGAR, annual reports, investor decks
PricingCompetitor pricing pages (archive them with the date), G2 listings
Private competitor signalsPress releases, job postings, funding announcements (treat as weak)

Analyst reports (Gartner, IDC, Statista) are often paywalled and use opaque methods; cite them only as a top-down cross-check, and only with the figure, year and definition.

3. SAM filters

Apply one filter at a time, each with a source or a labelled assumption:

TAM (US + EU)                              100%
x served regions (US only at launch)        58%   (count from step 2)
x segment fit (practices on cloud PMS)      40%   ASSUMPTION: vendor survey, n=300
x compliance (HIPAA-ready, yes)            100%
= SAM

4. SOM

Ground share in something observable, not a round “1% of the market”:

  • Capacity: reps x deals per rep per year x ramp x win rate x years.
  • Comparables: what share did similar companies reach in a similar number of years? (Public filings give customer counts.)
  • Funnel: traffic or community size x conversion rates from your own data.

Use the lowest of the defensible methods as the base case.

5. Top-down cross-check

Find a total spend figure for the category (analyst report, sum of public competitors’ revenue divided by their estimated share). If bottom-up and top-down differ by more than ~2x, find the reason before publishing: wrong unit count, price too high, or the top-down figure includes adjacent products.

6. Sensitivity

Vary the three inputs with the most uncertainty and show the range:

DriverLowBaseHighSource of range
Price / unit / year$2,400$3,600$4,800competitor quartiles
Segment fit %25%40%55%survey CI
Win share by year 51%3%5%comparables

Build it as a spreadsheet with inputs in one block and formulas referencing them, never hard-coded numbers in formulas. Hand formula work to $excel-formulas or $xlsx-spreadsheets when building the file.

7. Segmentation

Segment the SAM on variables that change buying behaviour: size, vertical, job-to-be-done, current solution, regulatory need, budget owner. For each segment estimate size, pain intensity (evidence from interviews, reviews, support tickets), willingness to pay, reachability (channels) and competition. Rank segments by attractiveness x ability to win.

Gotchas

  • Revenue TAM vs user TAM: “50M developers” is not a market until multiplied by what each would pay.
  • Double counting: seats and companies, or counting both a platform and its add-ons.
  • Using list price when most deals are discounted; use realised or median plan price.
  • Survey figures from a vendor’s own users skew toward early adopters.
  • Currency and year: state both; convert with a dated rate.
  • CAGR quotes from press releases (“growing 24% to 2032”) usually have no method. Use as context only.
  • A tiny SAM is a useful finding. Do not inflate filters to reach a fundable number.

Verification

  • Recompute TAM x filters = SAM and SAM x share = SOM in the sheet; units match at each step.
  • Each input has a source with date, or is labelled ASSUMPTION with reasoning.
  • Bottom-up and top-down are within ~2x or the gap is explained.
  • The sensitivity table shows which single input moves the answer most.

Output template

# Market sizing: <product> for <buyer>
**Unit:** <unit> | **Price metric:** <metric> | **Currency/year:** USD 2026

| | Base | Range (low-high) |
|---|---|---|
| TAM | $X | $A-$B |
| SAM | $Y | ... |
| SOM (year 5) | $Z | ... |

**Method:** bottom-up count x price; filters below; top-down check from <source>.
**Biggest uncertainty:** <driver> moves SOM from $a to $b.

## Assumptions log
| # | Input | Value | Source / reasoning | Confidence |

## Segments (ranked)
| Segment | Size | Pain evidence | WTP | Reach | Competition | Rank |

What the zip contains

SKILL.md plus the interface file below. Nothing runs on install.

agents/openai.yamlgenerated from this page

Gives the Codex app a display name, a one-line description and a starter prompt for this skill.

interface:
  display_name: "Market Research"
  short_description: "TAM you can defend line by line"
  default_prompt: "$market-research Estimate TAM, SAM and SOM for a scheduling tool for US dental practices"

About this skill

Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.

esc
Just launched

Codex Skills Pro is live

79 premium skills for Codex, each with scripts, references and an evidence report that proves the result.

Bought one by one$882.21
All 79 skills$49
94% off

That's $0.62 a skill, paid once.

Get all 79 for $49Or pick single skills from $4.99 →

Secure checkout by Creem