Skip to content

Competitive Intelligence

The competitive field, in the same graph as the work it informs

Competitive intelligence goes stale faster than almost anything else a team keeps. The rival teardown is out of date the week after the offsite. Answering where a product trails its rivals means scanning a spreadsheet nobody trusts. A competitor ships something, it lands in a Slack thread, and by Friday it is gone. UPG models a competitor the same way it models the products it competes with: a watched graph, its moves recorded as dated signals, parity recorded on a typed edge, the whole field placed against one shared classification. Where a deck goes stale between reviews, the graph stays current.

01Watched Graphs

Model a competitor the company does not own

A portfolio usually holds what a company owns. It also has to account for what it does not. UPG lets a competitorcompetitorA competing product or company sit inside the same portfolio as the products it competes with, tagged with a member_kind of watched.

The watched tag changes how the graph is scored. A watched graph is held to a different standard than a product the company owns: an empty discovery region in Adyen’s graph is not a gap in the company’s own discovery, and a half-mapped rival does not drag the portfolio health score down. portfolio_validate and the coverage scorers read member_kind and adjust what they expect.

Stripe
organisation
Under management
member_kind: product
Payments
health scored ✓
productproductThe product being created, the root of the graph
Billing
health scored ✓
productproductThe product being created, the root of the graph
Radar
health scored ✓
productproductThe product being created, the root of the graph
Watched
member_kind: watched
Adyen
not scored · no drag
competitor graph
Checkout.com
not scored · no drag
competitor graph
Braintree
not scored · no drag
competitor graph

A competitor is a graph the company does not own. Marked member_kind: watched, it sits in the same portfolio as the products it competes with, but portfolio_validateand the coverage scorers skip it: an empty discovery region in Adyen’s graph is not a gap in the owned product.

02Anatomy

What a watched competitor actually contains

Once a competitorcompetitorA competing product or company is in the portfolio, it is modelled like any product the company owns. It offers a competitor featurecompetitor_featureA feature offered by a competitor, competes for the same personapersonaAn archetype representing a user segment, addresses the same needneedA user need, pain, desire, or constraint, is classified as a classification valueclassification_valueA position or value on a classification axis, representing where one option lands on that dimension., and emits the competitor signalcompetitor_signalA competitor signal entity nodes the team tracks.

The comparison stays current with little manual upkeep. The same query that walks an owned product walks the rival, so a question like “how do the two compare on fraud tooling?” is one traversal across two graphs.

Stripeanchor
member_kind: watched
competitorcompetitorA competing product or company
A watched rival, modelled as a graph:
offerscompetitor_offers_competitor_feature
Radar fraud suite
competitor_featurecompetitor_featureA feature offered by a competitor
competes forcompetitor_competes_for_persona
Data-wary team lead
personapersonaAn archetype representing a user segment
addressescompetitor_addresses_need
Trust the numbers
needneedA user need, pain, desire, or constraint
classified ascompetitor_classified_as_classification_value
Agentic
classification_valueclassification_valueA position or value on a classification axis, representing where one option lands on that dimension.
emitscompetitor_emits_competitor_signal
Launched usage-based pricing
competitor_signalcompetitor_signalA competitor signal entity

A watched competitor is modelled the same way as an owned product. It offers features, competes for the same persona, addresses the same need, sits at a known classification, and emits dated signals. The same query language walks the owned product and the rival, so a comparison is a traversal over both graphs.

03Signals

A competitor move, recorded as a dated fact

The unit of competitive change is the competitor signalcompetitor_signalA competitor signal entity: one dated move a rival makes. A feature launch, a pricing change, an acquisition, a partnership, a market entry. It is emitted by the competitor inside the watched graph, with the date and the evidence attached.

What makes it more than a feed is that each signal connects back to the team’s own work. A move that lands on a shipped feature becomes a signal_maps_to_feature edge to a featurefeatureA product capability or feature; a move that exposes a gap worth chasing becomes signal_surfaces_opportunity to an opportunityopportunityA validated gap worth solving. Each new signal updates the picture in place, ready to query.

Adyen
watched competitor
competitor_emits_competitor_signal
2026-05-12
Launched embedded finance for platforms
surfacescompetitor_signal_surfaces_opportunity
Embedded treasury
opportunityopportunityA validated gap worth solving
2026-04-02
Cut interchange-plus pricing 15bps
maps tocompetitor_signal_maps_to_feature
Interchange optimisation
featurefeatureA product capability or feature
2026-02-20
Acquired a POS hardware vendor
maps tocompetitor_signal_maps_to_feature
Terminal
featurefeatureA product capability or feature

Each competitor move is one dated competitor_signal: a launch, a price change, an acquisition. A typed cross-edge lands it in the owned graph: onto a feature already shipped, or as an opportunity it reveals. The competitive feed is a query.

04Parity

Where a product leads a rival, and where it trails

The competitive question teams ask most is also the hardest to keep current: where does a product lead a rival, and where does it trail? UPG models it as the parity edge feature_rivals_competitor_feature, connecting a featurefeatureA product capability or feature node to a competitor featurecompetitor_featureA feature offered by a competitor and carrying the assessment on the edge itself.

Parity status, relative quality, whether it counts as a gap, when it was last assessed, the supporting evidence, a confidence score: all of it rides the relationship rather than a paragraph. The question becomes a filter over the competitive lens.

Striperivalsfeature_rivals_competitor_featureAdyen
Our featureTheir featureparity_status
Risk
Radar ML fraud scoring
RevenueProtect
▲ ahead
Payouts
Standard payouts
Instant payouts, 50+ markets
▼ behind
In-person
Terminal
In-person SDK
= at parity
Embedded
Treasury (US only)
Embedded finance, EU + US
▼ behind

The parity edge carries the assessment on the edge: status, relative quality, the gap flag, when it was assessed, the evidence, a confidence score. The areas where a product trails a rival are a single traversal over the competitive lens (two rows here).

05Classification

One shared vocabulary for the whole field

Parity covers where a product leads or trails on a given feature. Classification answers a different question: what kind of competitor is this? A classification axisclassification_axisA single dimension in a competitive classification matrix that defines one axis of comparison across alternatives. is defined once in the shared registry (AI maturity, say, with the values agentic, integrated, bolt-on) and every rival is placed against the same classification valueclassification_valueA position or value on a classification axis, representing where one option lands on that dimension. set, so the map holds across the whole organisation instead of being reinvented by each analyst.

Each placement carries its own assessment: a typed confidence on a named scale, the date, the evidence, who made the call. A stale machine-polled guess is easy to tell apart from a fresh hand-verified one, and re-classifying merges new evidence onto the existing edge rather than spawning a duplicate. portfolio_digest reports the distribution across each axis, so the shape of the field is available as a single read.

classification_axis · “AI maturity”
agentic
Stripe
Adyen
integrated
Checkout.com
Square
bolt-on
Braintree
portfolio_digest · classification distribution
agentic · 2/5integrated · 2/5bolt-on · 1/5
Adyenclassified ascompetitor_classified_as_classification_valueregistry/agentic
confidence: high · assessed_on: 2026-06-09 · evidence: launch keynote · observed_by: analyst

The axes are defined once in the shared registry, then every rival is placed against the samevocabulary. The assessment rides the edge: a typed confidence on a named scale, the date, the evidence, who observed it. A high-confidence hand-verified call and a low-confidence machine-polled guess are distinguishable on the edge. The digest reports the distribution across the field.

06Battle Cards

From analysis to a move sales can use

A market trendmarket_trendAn emerging trend in the market creates an opportunityopportunityA validated gap worth solving, and where that opportunity meets a rival weakness, there is a move. A competitive battle cardcompetitive_battle_cardA competitive battle card for sales enablement turns it into a position a rep can win with: it references the competitorcompetitorA competing product or company and addresses the objectionobjectionA common sales objection a buyer actually raises.

Because the card sits in the same graph as the parity edges and signals underneath it, it stays tied to the evidence. When the rival closes the gap, the card built on it is one traversal away, and can be updated in place.

A trend opens an opportunity:
Buyers now expect agentic AI
market_trendmarket_trendAn emerging trend in the market
createsmarket_trend_creates_opportunity
Agentic reportinganchor
opportunityopportunityA validated gap worth solving
The opportunity links to the battle card sales carries into the deal:
Why us, versus Stripe
competitive_battle_cardcompetitive_battle_cardA competitive battle card for sales enablement
referencescompetitive_battle_card_references_competitor
Stripe
competitorcompetitorA competing product or company
addressescompetitive_battle_card_addresses_objection
Stripe has more integrations
objectionobjectionA common sales objection

A market trend creates an opportunity. Where that opportunity meets a rival weakness, a competitive_battle_card records the position: it references the competitor and addresses a buyer objection. The battle card stays linked to the trend, the opportunity, and the competitor it cites, so the position traces back to the evidence under it.

07Where To Go Next

Competitive intelligence is an additive layer on the portfolio tier: a team that only models its own products never has to know it exists, until the first rival is worth watching. From here, the path leads back to the portfolio, or down to the reference: