S2 · Market intel
playbook/S2-market-intel.md
S2 — Market & Competitive Intel (J2–3)
Objectif : connaître le terrain mieux que les concurrents eux-mêmes. Faire émerger LE wedge inattaquable.
Durée
2 journées (J2 = market sizing + concurrence directe ; J3 = concurrence indirecte + positioning + unfair angle).
Inputs
- Output S1 : one-pager YC-style + ICP narrow
- Outils MCP : Ahrefs (Site Explorer, Keywords Explorer, Brand Radar AI), Notion (capture), Web (Reddit, G2, Capterra, LinkedIn)
- Le contexte sectoriel (mode_pilier de l'idea card si déjà mappé)
Output (livrables verrouillés)
runs/{sprint}/02-market-intel.md— narrative MD- Section
s2_market_inteldansstartup.json(data structurée)
Critères de verrouillage (TOUS requis)
- TAM/SAM/SOM chiffrés avec sources — pas de vague "marché de plusieurs milliards" ; chaque chiffre a une source citée et une méthode (top-down ou bottom-up). SOM bottom-up obligatoire.
- 20 concurrents identifiés = 10 directs + 5 indirects + 5 adjacents (palliatifs, outils manuels, SaaS horizontaux utilisés à mauvais escient).
- Pour chaque concurrent direct (top 10) : URL, pricing public, position SEO sur 3 mots-clés cibles (Ahrefs), top 3 reviews négatives G2/Capterra/Reddit, dernière levée de fonds connue (Crunchbase / public press).
- Un positioning gap clair — une phrase qui décrit où aucun concurrent n'est positionné.
- Un unfair angle Martin — comment l'asset Martin (DIRECT) attaque précisément le positioning gap.
- Le concurrent qui doit nous tuer — explicitement nommer celui qui a la position la plus dangereuse pour nous et expliquer pourquoi il ne le fera pas dans les 6 mois (slow-moving, focalisé ailleurs, gros incentive misalignment, etc.).
Process
J2 matin — Market sizing (2h)
Top-down (sanity check uniquement) : sources publiques Statista, Gartner, McKinsey reports (Ahrefs Site Explorer trouve les liens). Notez le chiffre + la source + la date.
Bottom-up (la vraie SOM) :
SOM = (# d'ICP atteignables × ACV moyen × % de pénétration à 3 ans)
-
d'ICP atteignables : compté via LinkedIn Sales Nav, annuaires pros, listing public (ex: Booking.com search filtrage). Document la méthode.
- ACV : déduit du pricing hint S1, validé contre prix concurrents.
- % pénétration 3 ans : 1–3% est crédible si distribution organique, 5–10% si distribution paid + Martin asset fort.
Si la SOM bottom-up < 1M€/an, STOP : l'idée ne peut pas devenir un vrai SaaS.
J2 après-midi — Concurrence directe (3h)
Identifier 10 concurrents directs. Pour chacun, remplir la fiche :
### {Concurrent}
- URL : {url}
- Pricing : {public ou estimé}
- Positionnement : {1 phrase}
- Funding total : {x€, source}
- Position SEO : {Ahrefs - top kw + position}
- Top 3 reviews négatives :
1. "{quote}" — {source, date}
2. ...
- Weakness exploitable : {1 phrase}
Note pratique : pour les pricing cachés ("Contact sales"), chercher dans l'Internet Archive, slidedecks de webinars, ou demander direct via Linkedin DM warm intro.
J3 matin — Concurrence indirecte + adjacente (2h)
- Indirects (5) : produits qui font le job différemment (ex: pour PreArrival, "Mailchimp + un template manuel" est indirect — pas un SaaS pre-arrival mais résout 30% du job).
- Adjacents (5) : produits qui pourraient pivoter vers nous (ex: les channel managers qui pourraient ajouter une couche pre-arrival).
J3 après-midi — Positioning gap + unfair angle (3h)
- Cartographier les concurrents sur un plan 2 axes. Les deux axes sont les dimensions qui sépare le mieux les concurrents (souvent : vertical-vs-horizontal, hi-touch-vs-self-serve, dev-tool-vs-business-tool, etc.).
- Trouver la case vide. C'est le positioning gap.
- Vérifier que la case vide est habitable : il y a un ICP qui veut être servi là, le pricing est viable, l'asset Martin permet d'y arriver.
- Rédiger l'unfair angle en 1 paragraphe : "Aucun concurrent ne fait X parce que Y. Nous le faisons parce que [Martin asset DIRECT]. Et ils ne pivoteront pas dans 6 mois parce que [Z]."
Prompt canonique (Opus 4.7 thinking)
Tu es S2 Market Analyst d'Atelier. Tu reçois le one-pager YC-style de S1. Tu produis une analyse en 3 parties :
PARTIE 1 — Sizing
- TAM top-down : 1 chiffre, 1 source, 1 date.
- SOM bottom-up : formule explicite (# ICP × ACV × % pénétration), chaque variable sourcée. STOP si SOM < 1M€/an.
PARTIE 2 — Matrice compétitive 20 concurrents (10 directs + 5 indirects + 5 adjacents)
Pour chaque direct (top 10) : URL, pricing, positioning 1-phrase, funding, position SEO Ahrefs, 3 reviews négatives sourcées, weakness exploitable 1-phrase.
PARTIE 3 — Positioning gap + unfair angle
- Plan 2 axes (nommer les axes, placer les 20 concurrents).
- Case vide identifiée + ICP qui veut être servi là.
- Unfair angle : 1 paragraphe (gap + pourquoi nous + pourquoi pas eux dans 6 mois).
Idée + one-pager :
<input>
{startup_json_s1}
</input>
Outils à utiliser :
- Ahrefs MCP (site-explorer, keywords-explorer, brand-radar-ai-responses) pour SEO et brand mentions
- WebSearch pour Reddit/G2/Capterra reviews
- VibeProspecting MCP pour comptage ICP
Format de sortie : Markdown structuré + JSON de la matrice 20 concurrents.
Anti-patterns
- "Pas de concurrent direct" = STOP. Soit tu cherches mal, soit le marché n'existe pas. Trouve des concurrents même imparfaits — ils valident le pain.
- TAM en milliards sans bottom-up SOM → bullshit. SOM > TAM (en pertinence). Toujours.
- Reviews négatives copiées-collées sans source → ré-écris depuis G2/Capterra avec URL + date.
- "On va prendre 10% du marché en 3 ans" → délire. 1–3% organique, 5–10% paid agressif, point.
- Positioning gap = "on est mieux que X" → faux gap. Le vrai gap est une case vide sur 2 axes, pas une amélioration linéaire.
Lien S3
L'unfair angle (1 paragraphe) devient l'input direct du naming : un bon nom de marque doit incarner l'unfair angle, pas le produit. Le positioning gap devient le seed des frameworks de naming (compound name basé sur les 2 axes, metaphor name basé sur l'archétype du gap, etc.).
Update startup.json (après S2)
{
"current_station": "S3",
"s2_market_intel": {
"completed_at": "<iso8601>",
"doc": "02-market-intel.md",
"tam_sam_som": { "tam_eur": "...", "sam_eur": "...", "som_eur": "...", "method": "..." },
"competitors": [ {...20 items} ],
"positioning_gap": "...",
"unfair_angle": "...",
"competitor_to_watch": "..."
}
}