Shares Persona
Two products share the same target persona.
A mobile app and a desktop product both serve the same Product Manager archetype.
Graph Structure
When one organization runs multiple products, a single UPGDocument is not enough. The portfolio model extends UPG with an organizational root, a dual ownership axis, and typed cross-product edges that make relationships between products explicit and queryable. A UPGPortfolioDocument is backward-compatible with single-product files; they coexist in the same ecosystem.
The portfolio hierarchy runs on two independent axes. A product may appear on one, both, or neither. The axes are fully optional.
Cross-product edges are typed relationships between entities in different products. They live in the cross_edges array of a UPGPortfolioDocument, not inside individual product graphs. Source and target use qualified IDs: {product_id}/{node_id}.
Two products share the same target persona.
A mobile app and a desktop product both serve the same Product Manager archetype.
Two products face the same competitive threat.
Two products in a portfolio both compete with Notion.
Two products track the same success metric.
A freemium product and its paid tier both track 'time to first value'.
Product A depends on Product B to function or deliver value.
A CLI tool depends on a cloud API service.
Product A takes market share from Product B in the same portfolio.
A new self-serve tier cannibalises the high-touch enterprise offering.
Product A is the successor to Product B.
v2 of a product succeeds v1, replacing it rather than competing.
idrequiredstringUnique identifier for the portfolio.titlerequiredstringHuman-readable name of the portfolio.descriptionstringLonger description of the portfolio's strategic focus.parent_portfolio_idstring | nullParent portfolio ID for nesting (sub-portfolios).hierarchy_model'flat' | 'nested' | 'matrix'How products are structured within this portfolio.productsstring[]Product IDs that belong to this portfolio.idrequiredstringUnique identifier for the product area.titlerequiredstringHuman-readable name of the product area.descriptionstringLonger description of the area's scope and ownership.parent_area_idstring | nullParent area ID for nesting (sub-areas).strategic_priority'critical' | 'high' | 'medium' | 'low'Strategic priority of this product area.productsstring[]Product IDs that belong to this area.Browse the full property schemas, edge definitions, and graph position for each portfolio entity type.
Graph Structure
When one organization runs multiple products, a single UPGDocument is not enough. The portfolio model extends UPG with an organizational root, a dual ownership axis, and typed cross-product edges that make relationships between products explicit and queryable. A UPGPortfolioDocument is backward-compatible with single-product files; they coexist in the same ecosystem.
The portfolio hierarchy runs on two independent axes. A product may appear on one, both, or neither. The axes are fully optional.
Cross-product edges are typed relationships between entities in different products. They live in the cross_edges array of a UPGPortfolioDocument, not inside individual product graphs. Source and target use qualified IDs: {product_id}/{node_id}.
Two products share the same target persona.
A mobile app and a desktop product both serve the same Product Manager archetype.
Two products face the same competitive threat.
Two products in a portfolio both compete with Notion.
Two products track the same success metric.
A freemium product and its paid tier both track 'time to first value'.
Product A depends on Product B to function or deliver value.
A CLI tool depends on a cloud API service.
Product A takes market share from Product B in the same portfolio.
A new self-serve tier cannibalises the high-touch enterprise offering.
Product A is the successor to Product B.
v2 of a product succeeds v1, replacing it rather than competing.
idrequiredstringUnique identifier for the portfolio.titlerequiredstringHuman-readable name of the portfolio.descriptionstringLonger description of the portfolio's strategic focus.parent_portfolio_idstring | nullParent portfolio ID for nesting (sub-portfolios).hierarchy_model'flat' | 'nested' | 'matrix'How products are structured within this portfolio.productsstring[]Product IDs that belong to this portfolio.idrequiredstringUnique identifier for the product area.titlerequiredstringHuman-readable name of the product area.descriptionstringLonger description of the area's scope and ownership.parent_area_idstring | nullParent area ID for nesting (sub-areas).strategic_priority'critical' | 'high' | 'medium' | 'low'Strategic priority of this product area.productsstring[]Product IDs that belong to this area.Browse the full property schemas, edge definitions, and graph position for each portfolio entity type.