What is a TAM?

TAM, SAM and SOM, and the difference between a number and a usable database.

Concentric ripples on dark blue water

A TAM (total addressable market) is the annual revenue you would make if every company that could buy your product bought it. The figure stays useful for about five minutes. What you work with afterwards is the database that produced it, so this guide treats the TAM as two things: a number, and the list of accounts behind that number.

I keep the example from the previous chapter: scheduling software sold to private nursery operators in France. All figures are invented for the illustration.

TAM, SAM and SOM on one example

Layer Stands for Question it answers In the example Accounts Annual value
TAM Total addressable market Who could ever buy this kind of product? Every private nursery operator in France 1,900 €10.9M
SAM Serviceable addressable market Who can we serve today, with this product and this sales model? Operators with three sites or more, since the product is built for multi-site planning 640 €6.4M
SOM Serviceable obtainable market What can we realistically win in a given period? SAM accounts worked over 24 months at an 8% win rate 51 €510,000

Each layer has a different constraint. The TAM is limited by the need: does this company have the problem at all. The SAM is limited by you: your product scope, your languages, your countries, the price point your sales model can support. The SOM is limited by your capacity and your win rate.

Where to draw the TAM is a judgment call. I draw it around the widest perimeter you would seriously plan to sell into over the next few years. A worldwide figure for a product that only exists in French informs no decision.

Two mistakes that make these numbers useless

Treating the SOM as a percentage of the market

“We only need 1% of the market” has no mechanism behind it. Nothing in that sentence tells you who the 1% are or how you would reach them. Compute the SOM from what your team can do:

SOM accounts = MIN(SAM accounts, reps * new accounts per rep per month * months) * win rate

One rep opening 60 accounts a month over 24 months could touch 1,440 accounts, so the SAM of 640 is the cap, and 640 at 8% gives 51 customers. The same rep opening only 20 a month reaches 480 accounts and wins 38. Take the win rate from your CRM, by segment. If you have no history yet, say so in the document and show a low and a high case.

Counting revenue that can’t exist

Multiplying every company in a sector by your list price assumes they all have the need, the budget and a separate buyer. A group running twelve nurseries through twelve legal entities buys once, so counting it twelve times inflates your market by eleven phantom accounts. A one-site operator with four employees may never pay for scheduling software at all. Each of those corrections needs account-level data, which is the argument for building the list.

Rain rings on a still surface

A number and a database are two different deliverables

Market figure TAM database
Unit Euros One row per company
Answers How big is this? Which accounts, in what order, and how many are left?
Used by Board, investors Sales, marketing, product
Lifespan Until someone challenges an assumption As long as someone maintains it
How to test it Is it plausible? Open any row and check the company exists and fits

Build the database and the figure falls out of it in one query:

SELECT
  COUNT(*)                                     AS tam_accounts,
  SUM(estimated_acv)                           AS tam_value,
  COUNT(*) FILTER (WHERE in_sam)               AS sam_accounts,
  SUM(estimated_acv) FILTER (WHERE in_sam)     AS sam_value
FROM accounts
WHERE status <> 'excluded';

When someone challenges the number, you change a filter and rerun it. The argument moves from “I don’t believe that figure” to “should a two-site operator be in scope”, which is a much better argument to have.

Ripple spreading across calm blue water

What a usable TAM database contains

The minimum account table, one row per company that buys as a single entity:

Column Example What it’s for
siren or domain 000000000 Unique key, to merge sources and avoid duplicates
name Crèches Exemple SAS Human reading
country, department FR, 69 Territory split, SAM filter
naf_code 88.91A Scope check
headcount_band 12 (INSEE code for 20 to 49 employees) Fit, pricing
open_sites 7 Fit specific to this market
in_sam TRUE Separates the SAM from the TAM
estimated_acv 8000 Turns rows into euros
tier A Working order
status not contacted Coverage, exclusions
source SIRENE Lets you trust or discard the row
last_checked 2026-11-09 Freshness

Four checks tell you whether what you have deserves the name:

  • One row equals one buying entity, and the key is unique.
  • Every criterion you filter on is a column, so nothing lives in someone’s head.
  • Every row carries its source and a date.
  • Excluded accounts get a status and stay in the file, otherwise the next import brings them back.

Contacts and signals go in separate tables linked to the account, because one company has several people and many dated events. As soon as a row names a person, data protection rules apply. Read the CNIL’s guidance on commercial email prospecting (in French), check each source’s terms of use and take advice from counsel. The chapter on keeping the TAM up to date comes back to this.

Where the rows come from, and what Derrick covers

Some columns are facts you can fetch. Others are your judgment, and no tool will fill them for you. I co-founded Derrick, so read this part knowing that.

Import Companies from a Prompt takes one sentence describing the companies you want and returns name, industry, country, region, city, website and LinkedIn URL. It costs 1 credit per company if your own Sales Navigator is connected, 10 otherwise. Enrich Companies then takes a LinkedIn URL or a domain and adds fields such as staff count range and headquarters, at 1 credit per company enriched.

Column Filled by a tool Filled by you
name, domain, country Yes
headcount_band Yes, from a band declared on LinkedIn or in a registry
in_sam, tier Yes, from your criteria
estimated_acv Yes, from your own billing
status Yes, from your CRM and opt-outs

The prompt route depends on company pages existing on LinkedIn, so small local businesses with no page will be missing. For the nursery example the French registry is the better source, as the previous chapter showed. Derrick doesn’t replace a CRM either, and the storage chapter covers where the source of truth should live.

Without any tool, the method holds: export a search from a B2B database or a professional directory, paste it in, and map it to the same columns. It takes longer and the columns don’t change.

Your next step: create a sheet with the columns above and enter twenty accounts by hand, mixing customers and prospects you know. The columns you struggle to fill show you which sources you’ll need. Then read top-down vs bottom-up to choose how you’ll count the rest.