Bottom up market size
Skill economicmind/skills/plugins/economic-mind/skills/bottom-up-market-size
Skills built by the Economic Mind team. Useful if you wear a Patagucci vest unironically at work.
npx -y skills add economicmind/skills --skill bottom-up-market-sizeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Size a market bottom-up from an Economic Mind market report and stress-test that number against independent sizing approaches - the headline size, the transparent per-company build (each player's revenue, share-in-market, in-market revenue, confidence and justification carried verbatim from the report), an explicit read on how much to trust the headline and why, and a football-field comparison of the bottom-up figure against 2-3 credible cross-checks. Use whenever the user wants to "size the X market bottom-up", "how big is X and how sure are we", "bottom-up market size", "build / show the market-size buildup", "triangulate the size of X", or "benchmark our market size against other estimates". The bottom-up figures come ONLY from the Economic Mind report, unchanged; cross-checks come from a credible-source research pass. The deliverable is data (Markdown + JSON); presentation is left to the client.
SKILL.md
14.6 KB, ~3.5k tokens by cl100k_base, as published. Nobody here has run it
Bottom-up market size
Size a market the way a careful analyst would: take Economic Mind's bottom-up build as the spine, show every company that rolls up into it, say plainly how much the headline can be trusted and why, then put that number on a football field next to a few independent estimates so the reader can judge it. The deliverable is data - a Markdown report plus a JSON sidecar - not a styled document; this skill is about the research and the numbers, and layout is the client's job.
The whole value is credibility under scrutiny: a market size is only as good as the build beneath it and the cross-checks beside it. So nothing is hand-waved - the build is carried verbatim from the report, the confidence is reasoned from the report's own stamps, and every cross-check names a credible source.
Two source channels, never mixed
- The bottom-up build - ONLY the Economic Mind report, unchanged. The headline size, the per-company revenue, share-in-market, in-market revenue, confidence ratings, justifications, the scope boundary and the vintage all come straight from the report. Do not recompute, re-estimate, re-rank, or "improve" any of them, and do not pull a player's revenue from elsewhere. You are presenting the report's build faithfully, not rebuilding it. (The only arithmetic permitted on it is summing the in-market revenues to show the build-to-total and reconciling that to the report's stated headline - shown transparently, never overriding the report.)
- The cross-checks - a credible-source research pass. The alternative sizing approaches on the football field are not in the report; you construct 2-3 of them from independent credible sources (see the source rules). These sit beside the bottom-up for comparison and never alter it. This is the one place the web is used, and only for the cross-checks.
Keeping these apart is what makes the exercise honest: the anchor stays pristine and the triangulation is clearly a separate, independently-sourced opinion.
Work to files first, then read them back
Context can be compressed mid-task, and a market build has a lot of cells. So immediately after each
tool call returns, write its raw output to a file before the next call - the report content, then each
cross-check as you research it. Build the deliverable by reading the files back, not from recall. Create
one working directory at the start, e.g. em-size/.
Source rules for the cross-checks (strict)
The football field is only as credible as its weakest source, so the bar is high. Use only: (a) primary filings & registries (Proff, Brønnøysund, Allabolag, S&P Capital IQ, Creditsafe, audited annual reports); (b) official statistics (Eurostat, SSB, SCB, national statistics offices); (c) regulators & standards bodies (IMO, USCG, national building authorities); (d) listed-company reports and reputable financial data; (e) named industry associations.
Never use market-research aggregator / press-release "market-size" mills - MarketsandMarkets, Grand
View, IMARC, Verified Market Reports, SNS Insider, Precedence, FactMR, Custom Market Insights, SkyQuest,
Fortune Business Insights, Mordor, Spherical and the like. Their figures are unreliable and
scope-inconsistent. When web-searching, pass these as blocked_domains. Build cross-checks from first
principles on credible bases (e.g. official installation statistics × a fire-protection share; a listed
group's disclosed segment revenue grossed for the tail; installed base × annual value). If a number exists
only from a mill, do not use it - say no credible independent estimate was available and lean on the build.
Restate scope. Any external estimate almost certainly uses a different market definition. Before it can sit on the football field, restate it to the report's in-scope definition (geography, product boundary, revenue basis) and say how you did so in its comment. Never fabricate; if you cannot scope-adjust an estimate honestly, drop it.
Workflow
Phase 1 - Resolve the market & pull the build
mkdir -p em-size.search_markets("<the user's market phrase>")(limit ~5). If the top hit'sscoreis ≥1.5× the second's (or there is one hit), use it and announce the choice. Otherwise show the top 3 (Market, Geography, Size, Relevance) and ask the user to pick. If nothing matches, say the market is not covered and stop - do not improvise a size.get_market(slug)for the catalog, thenget_market(slug, "bottom-up-supply-side")(use the catalog's actual element name) to get the definition, headline size, and the per-company build. Tables come back as markdown - read them, don't guess.- Immediately write the raw element to
em-size/report-bottomup.md, and writeem-size/build.csv- one row per company, every field carried verbatim from the report (leave blank only where the report itself is blank):rank,company,hq,total_revenue,basis,share_in_market_pct,in_market_revenue,confidence,revenue_source,justification 1,Co A,NO,402.7,reported,38%,153.0,H,Proff (NO),"Disclosed FY24 revenue; share set by product-line split" 2,Co B,SE,210.4,estimated,55%,115.7,M,S&P Capital IQ,"Revenue estimated from filings; share from end-market mix" ...basis= reported vs estimated of the total revenue;confidence= the report's confidence on the share in market (the scope share, not a market share). Keep both - they mean different things. - Also capture, verbatim, into
em-size/headline.txt: the report's stated headline size, its vintage ("2025 or latest available"), its methodology note (e.g. "top-N in-market revenue; no long-tail estimate"), the in-/out-of-scope boundary, any concentration figures (top-2/5/10 shares), and the player count.
Phase 2 - Build the cross-checks (credible research pass)
Construct 2-3 independent sizing approaches to triangulate the headline, following the source rules
above. Typical approaches: a top-down (official statistic × a credible share), an installed-base × annual
value, and one independent third-party/analyst range (credible only). For each, do the arithmetic from
first principles, restate it to the report's in-scope definition, and record it - immediately after the
research - in em-size/crosschecks.csv:
method,approach,low,point,high,confidence,scope_note,source
top_down_capex,"Official construction stats × fire-protection share",480,560,640,M,"Restated to Nordic, OEM revenue basis","Eurostat 2024; SSB"
listed_grossup,"Listed groups' segment revenue grossed for tail",500,590,690,M,"In-scope geography only","Company annual reports 2024"
analyst_range,"Independent analyst estimate (scope-adjusted)",430,520,610,L,"Broader-scope figure restated down","<named credible source>"
If a genuine research pass yields nothing credible (only mills), record that fact and present the bottom-up alone - do not invent a cross-check to fill the field.
Phase 3 - Verification (do not skip)
Work from the files.
cat em-size/build.csv em-size/headline.txt em-size/crosschecks.csv.- Fidelity check (the important one): confirm every figure in
build.csvandheadline.txtmatches the report exactly - same numbers, same confidence stamps, same scope wording. You changed nothing. - Build-to-total reconciliation: sum
in_market_revenueacross companies and compare to the report's stated headline. They should match (bottom-up = sum of in-market revenues). If they differ (e.g. the report adds a long-tail estimate or rounds), show both and explain the difference - never silently adjust either. State the formula:Σ in-market revenue = … vs report headline = …. - Cross-check integrity: each cross-check names a credible source, was scope-restated to the report's definition, and uses no mill. Drop any that fails.
Phase 4 - Confidence read
Communicate how much to trust the headline and why, grounded in the report's own stamps - not a vibe. Carry the report's overall confidence/caveat verbatim, then add a transparent coverage summary computed from the per-row stamps (clearly labelled as derived from the report's own data, not new estimation):
- share of in-market revenue resting on reported vs estimated total revenue (
basis); - share of in-market revenue carrying high vs low confidence on the scope share (
confidence); - concentration (how much of the size sits in the top few names - a few large estimated lines can swing it);
- the standing caveats: vintage ("latest available", not one clean year), geography/Nordic emphasis, and
"no long-tail" if the report says so.
Write
em-size/confidence.txt. The point is a reader should see exactly which parts of the number are solid and which are soft.
Phase 5 - Assemble the deliverable (data; the client styles it)
Build the Markdown and JSON from the files; do not re-key a number from memory. Markdown structure:
# Bottom-up market size - <market> (<currency>, <vintage>)
*From the Economic Mind "<market>" bottom-up report (figures carried verbatim). Cross-checks independently
researched from credible sources. AI-assisted - confirm against the report and the cited sources before
relying on it.*
## Headline
- **Market size:** <report headline> (<vintage>)
- **Basis:** <report methodology note, e.g. top-N in-market revenue; no long-tail>
- **Scope:** <in-/out-of-scope boundary, verbatim>
- **Players covered:** N · **Concentration:** top-5 = …% (if stated)
- **Confidence:** <overall, with the one-line why from the confidence read>
## Bottom-up build (per company, from the report)
| Rank | Company | HQ | Total revenue | Basis | Share in market | In-market revenue | Conf. | Justification |
|-----:|---------|----|--------------:|-------|----------------:|------------------:|:-----:|---------------|
| 1 | Co A | NO | 402.7 (reported) | … | 38% | 153.0 | H | Disclosed FY24 … |
*All figures carried verbatim from the Economic Mind report. Basis = reported/estimated revenue;
Conf. = confidence on the share in market.*
Σ in-market revenue = <sum> · report headline = <headline> (<match / difference explained>)
## Confidence & assumptions
- Overall: <report's confidence/caveat, verbatim>.
- Coverage (computed from the report's own stamps): <X>% of the size rests on reported revenue, <Y>% on
estimated; <Z>% carries high confidence on the scope share. Top-<k> names = <…>% of the size.
- Key assumptions: <scope-share basis, geography, vintage, no-long-tail>.
## Triangulation (football field)
| Method | Approach | Low | Point | High | Conf. | Source & scope note |
|--------|----------|----:|------:|-----:|:-----:|---------------------|
| Bottom-up (anchor) | EM report build | - | <headline> | - | <conf> | Economic Mind "<market>" report |
| Top-down | … | 480 | 560 | 640 | M | Eurostat 2024 … |
| Listed gross-up | … | 500 | 590 | 690 | M | Annual reports 2024 |
**Converged view:** <range>, with the bottom-up at <headline>. <Does the anchor sit inside the
cross-check range? If it's an outlier, say why - scope, vintage, or tail.>
## Sources & method
- **Bottom-up** - Economic Mind "<market>" report (bottom-up supply-side); per-company revenue providers
as stated (e.g. Proff, S&P Capital IQ). Carried verbatim; not recomputed.
- **Cross-checks** - <each method's named credible source>; scope-restated to the report's definition.
- **Excluded:** market-research "mills" (unreliable / scope-inconsistent). **Caveats:** <vintage,
geography, long-tail>.
JSON sidecar (em-size/market-size.json) - machine-readable mirror:
{
"market": "Nordic fire protection", "currency": "EUR", "vintage": "2025 or latest available",
"headline": {"size": 590.0, "basis": "top-N in-market revenue; no long-tail",
"scope": "...", "confidence": "M"},
"build": [{"rank": 1, "company": "Co A", "hq": "NO", "total_revenue": 402.7, "basis": "reported",
"share_in_market_pct": 38, "in_market_revenue": 153.0, "confidence": "H",
"revenue_source": "Proff (NO)", "justification": "..."}],
"reconciliation": {"sum_in_market": 588.4, "report_headline": 590.0, "note": "rounding"},
"coverage": {"pct_reported_revenue": 64, "pct_high_conf_share": 58, "top5_pct": 71},
"football_field": {
"anchor": {"method": "bottom_up", "point": 590.0, "source": "Economic Mind report"},
"crosschecks": [{"method": "top_down_capex", "low": 480, "point": 560, "high": 640,
"confidence": "M", "scope_note": "...", "source": "Eurostat 2024; SSB"}],
"converged": {"low": 500, "high": 640}
}
}
Phase 6 - Deliver
Hand back the Markdown and JSON. When presenting the output files (via present_files where available, e.g.
Claude.ai), list the JSON sidecar (em-size/market-size.json) first and the Markdown report last, so the
human-readable report is the final, most prominent artifact. In any prose summary, use the figures the
deliverable produced; do not re-key, re-round, or introduce a number not in the files, and keep the
bottom-up and the cross-checks clearly distinct.
What makes it trustworthy
The bottom-up build is carried verbatim from the Economic Mind report - never recomputed - and the sum is reconciled to the report's own headline in the open. Confidence is reasoned from the report's own reported-vs-estimated and share-confidence stamps, so the reader sees which parts of the number are solid. The football-field cross-checks are independently researched from credible primary, official and industry sources - mills explicitly excluded - and each is scope-restated to the report's definition before it stands next to the anchor. And the whole thing is built from files captured at collection time, so what you read is what the report and the cited sources actually say.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.