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 current as the market moves.
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 competitorsCompetitorMarket IntelligenceA competing product or companyView reference →, 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.
April Dunford's Obviously Awesome argues that positioning is not a messagingMessagingGo-To-MarketMessaging framework and key messagesView reference → exercise but a choice of competitive context: the frame of reference a buyer uses to evaluate a product. Her five-component framework — competitive alternatives, unique attributes, the value those attributes deliver, the target customers who care about that value, and the market category that makes that value obvious to them — begins with competitive alternatives precisely because the positioning decision is only as good as the understanding of what buyers would actually use instead. By that reading, what the project-management team above accomplished is the precondition Dunford requires: they identified the real competitive frame (a spreadsheet, not an enterprise rival) before attempting to position against it.
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
Worked example: Trellis
Trellis's competitive analysis finds that generation speed is now commoditised across the field. The axes that separate the field are governance and inspectability, where spreadsheets and AI app-generators alike leave operations teams with ungoverned, brittle outputs. That finding drives the positioningPositioningGo-To-MarketProduct positioning statementView reference →: lead with reversibility and human approval, not raw speed.
Guessing No evidence
Type-specific fields on BaseNode
analysis_typeenumType 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_cellsobject[]Empty 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.' }, ]
last_updatedstringProvenance: ISO date-time this record was last observed or refreshed. Distinct from `analysis_date` (when the analysis was conducted). @example "2026-06-13"
sourcestringProvenance: where this was observed. A changelog, pricing, or docs URL, an analyst report, or a research note. @example "https://www.contentful.com/changelog/"
confidenceassessmentProvenance: how sure we are, on the canonical confidence_5 scale. Carries both a numeric value and a high / medium / low label.
observed_bystringProvenance: agent or routine id that last wrote this. Absent when hand-authored, the signal that a human (not a poller) is the last writer. @example "competitor-watch-agent"
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