A structured comparison of competitive offerings
A competitive analysis is the ongoing, decisionDecisionStrategyA recorded decision with context, rationale, and consequencesView reference →-oriented study of the rivals, substitutes, and structural forces that shape a market a product competes in. It answers a working question, "where can we win, and what threatens that," and it stays alive as the market moves. The discipline gets diluted whenever a team mistakes a single competitorCompetitorMarket IntelligenceA competing product or companyView reference → teardown for the whole exercise.
The intellectual spine comes from Michael Porter. His 1979 Harvard Business Review article, How Competitive Forces Shape Strategy, argued that an industry's long-run profitability is governed by five forces: rivalry among existing competitors, the threatThreatSecurityA specific security threatView reference → of new entrants, the threat of substitutes, the bargaining power of buyers, and the bargaining power of suppliers. The radical move was to widen the lens beyond the named rivals. Suppliers and customers compete with you too, for the margin, and a substitute can gut a category that has no direct rival at all. Porter expanded this into Competitive Strategy (1980), and revisited it in a 2008 HBR update, The Five Competitive Forces That Shape Strategy, responding to the common error of treating the forces as a static checklist.
As software shortened product cycles, the practice moved from the annual strategy binder toward continuous intelligence. Win/loss analysis became its sharpest instrument: structured interviews with buyers who chose you and buyers who chose someone else. The consensus among practitioners such as Crayon is that the value compounds with regularity. One-off interviews surface anecdotes; repeated analysis across many deals exposes the patterns that actually decide a market. Competitive intelligence has settled into a continuous loop that feeds positioningPositioningGo-To-MarketProduct positioning statementView reference →, pricing, and the roadmapRoadmapProduct SpecificationA strategic plan of features and milestonesView reference →, retiring the quarterly report it replaced.
A Series B project-management tool keeps losing six-figure deals in the final round. The team treats this as a competitive analysis, not a single competitor file. Across thirty win/loss interviews over two quarters, three findings emerge. Buyers default to the incumbent because migration feels expensive, which is a switching-cost force, not a featureFeatureProduct SpecificationA product capability or featureView reference → gap. A free spreadsheet template is the real substitute for half of the smaller deals. And one rival has quietly moved upmarket, vacating the mid-market segmentMarket SegmentMarket IntelligenceA distinct group of potential customersView reference →.
That reframes the work. Engineering builds a one-click importer to attack the switching costSwitching CostUserA barrier preventing users from switching alternativesView reference →. Marketing repositions against the spreadsheet, the substitute that was actually winning. Sales concentrates on the abandoned mid-market segment. Six months later, close rate on contested deals climbs from 22% to 34%, and the team can attribute the lift to specific findings, with the guesswork removed.
In the Unified Product Graph, a competitive analysis lives in the market intelligence domain and attaches to the product through ProductcontainsCompetitive Analysishierarchy. From there it reaches outward along product_contains_competitive_analysisCompetitive AnalysisanalysesCompetitorhierarchy to each rival examined, competitive_analysis_analyses_competitorCompetitive AnalysisidentifiesMarket Trendhierarchy to the shifts it surfaces, and competitive_analysis_identifies_market_trendCompetitive AnalysisscopesMarket Segmenthierarchy to the demand it contests. The lens it applies is captured by competitive_analysis_scopes_market_segmentCompetitive Analysisdimensioned byClassification Axishierarchy, which models the comparison criteria explicitly. That structure enforces Porter's original insightInsightUser ResearchA synthesised finding from researchView reference → at the level of data: an analysis connected to a single competitor and nothing else is visibly partial, and the graph can ask what it has yet to consider.competitive_analysis_dimensioned_by_classification_axis
Type-specific fields on BaseNode
analysis_typestringType of analysis. `feature_comparison` = side-by-side matrix. `positioning` = competitor positioning relative to each other. `swot` = strengths, weaknesses, opportunities, threats. `pricing` = pricing structure comparison.
analysis_datestringISO date conducted. Competitive intelligence decays quickly; track snapshot age. @example "2026-03-15"
framework_idstringFramework ID (references `UPGFramework.id`). @example "porter-five-forces", "swot-analysis", "competitive-matrix"
empty_cellsobjectEmpty cells in a 2-axis classification matrix that earn explicit commentary. Only the strategically interesting cells. Opportunity-kind cells are the most valuable; they identify unoccupied strategic space. Each entry references two `classification_value` nodes by id (one from each `classification_axis` child of this `competitive_analysis`). `validate_graph` enforces that the refs resolve to `classification_value` nodes whose parents are distinct `classification_axis` instances. See `ClassificationValueProperties.commitments` for the inverse "occupied cell" structural-definition shape. @example [ { axis_a_value_ref: 'val-git-based', axis_b_value_ref: 'val-portable-text', rationale_kind: 'opportunity', rationale_md: 'No technical reason; only adoption inertia. Watching brief.' }, { axis_a_value_ref: 'val-composable', axis_b_value_ref: 'val-wysiwyg', rationale_kind: 'structural', rationale_md: 'Composable rejects HTML blobs; WYSIWYG requires them.' }, ]
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: draft · template: PUBLISHING
5 edge types connected to this entity.
product_contains_competitive_analysiscompetitive_analysis_analyses_competitorcompetitive_analysis_identifies_market_trendcompetitive_analysis_scopes_market_segmentcompetitive_analysis_dimensioned_by_classification_axis