Skip to main content
PYRAMYD

The Product Graph

Click any node. Focus its neighborhood.

A live slice of the production graph. 18,429 nodes. 22,614 edges. The same substrate APEX traverses · every node typed, every edge a FK constraint, every value cited.

249K+ products2,539 categories2.4M+ reviews90 node types2,036 FK constraints

Live slice · pyramyd-production

16,600 nodes and 22,600 edges of the real graph — vendors, products, reviews, categories, and the links between them.

~7 MB · interactive · loads on demand so this page stays fast

The 90 node types

Ten categories · every node typed and FK-constrained.

The graph is heterogeneous · 90 distinct node types organized into ten categories. Each category enforces its own FK relationships, its own canonical fields, and its own provenance schema.

People

6

Node types

Contacts · roles · positions · interviews

Entities

8

Node types

Companies · teams · workspaces · segments · locations · countries · industries

Products

6

Node types

Products · categories · features · releases · reviews

Revenue

8

Node types

Deals · orders · pipelines · contracts · campaigns · cadences · battle cards

Finance

7

Node types

Transactions · postings · ledgers · periods · budgets · forecasts · filings

Operations

12

Node types

Ideas · requirements · issues · projects · roadmaps · cycles · objectives · capabilities · processes

Comms

4

Node types

Communications · chats · channels · events

Content

11

Node types

Documents · articles · snippets · sheets · slides · notebooks · canvases · forms · files · folders · transcripts

Data

14

Node types

Datasets · catalogs · connectors · transformations · prompts · agents · runs · models · experiments · metrics · signals · dashboards

Systems

12

Node types

Repositories · branches · commits · credentials · settings · activities · devices · alerts · applications · policies · services

The relationships

90 node types. 388 relationship types. One typed property graph.

A node catalog is table stakes. The defensible part is the typed edges between them · expressed in two layers: hard foreign keys that the schema enforces, and a dynamic edge graph that captures the semantic relationships a column never could.

Layer 1 · Hard relationships

Foreign keys the schema enforces.

Deterministic, single-valued, and resolved at write time. The constrained by 2,036 declared foreign keys are these edges. Four connect to canonical entities:

  • company_fkbelongs to / is about a company
  • product_fkis about a product
  • contact_fkinvolves a person
  • review_fkcites a review

The five taxonomy FKs are special · they don't store an id and a name, they denormalize the entire ancestry, so any query filters at any level without a join:

Category

market_categoryfunctional_categoryproduct_category

Industry

industry_sectorindustry_groupindustrysub_industry

Country

regionsub_regioncountry

Job

job_modulejob_functionjob_areajob_focus

Product

product_categorymodulecapabilityfeature

Layer 2 · Dynamic relationships

431 typed edges. Any node to any node.

A single typed edge table makes this a true property graph · every relationship is a first-class, directed, semantic edge with 1:N multiplicity. The hard FKs are mirrored in automatically, and the full catalog is organized into ten relationship categories — each with its own icon in the workspace:

Composition

part-of / made-of
feature_ofcapability_oforder_containsdataset_in_catalog

Hierarchy

parent / child
member_ofsubsidiary_ofpart_of_teamparent_category

Classification

tagged / categorized
taggedmentionsin_categoryin_industry

Association

related / similar
related_tocompetes_withalternative_tosimilar_to

Provenance

sourced-from / evidence
authored_byacquiredsignal_from_sourceevidence_for

Ownership

owns / manages
leadsmanagesassigned_toowned_by_team_asset

Dependency

depends-on / blocks
integrates_withdepends_onblocksrequirement_for

Transaction

pays / invoices
owns_dealpaid_byinvoices_forcontract_with

Lifecycle

replaces / on-roadmap
replaceson_roadmapin_releaseduplicate_of

Engagement

works-at / reviewed-by
works_atreview_by_contactinterview_withparticipant_of

Each category shows a representative slice · the full catalog is 431 canonical edge types across these ten kinds, CHECK-constrained in the database so an edge is never untyped.

Typed nodes, typed edges, denormalized hierarchies · APEX traverses real relationships, not cosine similarity between text chunks. This is what “graph, not vector RAG” actually means.

How the graph is built

From raw signal to typed entity in four stages.

The same pipeline that built the graph on this page runs continuously · 1,000+ source feeds, entity-resolved, FK-linked, and provenance-stamped.

13 OF 1,000+ LIVE SOURCESG2REVIEWSTrustRadiusREVIEWSGetAppREVIEWSCapterraREVIEWSProduct HuntDISCOVERYVendor sitesVENDORTech docsVENDORChangelogsVENDORPress releasesVENDORSEC EDGARREGULATORYCrunchbaseFINANCIALUSPTO PatentsIPLinkedIn jobsTALENTINGESTIONscrape · extract · land22,000 signals scored1,000+ source feeds
G2TrustRadiusGetAppCapterraSoftware AdviceProduct HuntGartner Peer InsightsIT Central StationFeaturedCustomersCrowdReviewsVendor websitesTechnical documentationChangelogsAPI docsStatus pagesPress releasesBlog feedsInvestor relations pagesTechCrunchThe InformationArs TechnicaVentureBeatProtocolStratecheryAxios ProBusinessWirePRNewswireGlobeNewswireReutersBloombergSEC EDGAREU Commission filingsUSPTO PatentsWIPO IP databaseCrunchbasePitchBook public dataCB InsightsFedRAMP marketplaceFINRA filingsLinkedIn jobsGreenhouse boardsLever boardsWorkable boardsIndeedAngelList TalentBuilt InGlassdoorSalesforce AppExchangeHubSpot EcosystemSlack App DirectoryAtlassian MarketplaceShopify App StoreAWS MarketplaceAzure MarketplaceGoogle Cloud MarketplaceKlue feedsCrayon feedsKompyte intelligenceOwler signalsOwletterZoomInfo data6sense signalsBombora intentReddit (r/SaaS, r/devops, r/cscareers)Hacker NewsTwitter / XLinkedIn PulseIndustry RSS aggregatorVertical newslettersSubstack techSOC 2 attestationsISO 27001 registerHIPAA disclosuresEU AI Act Article 50 disclosuresG2TrustRadiusGetAppCapterraSoftware AdviceProduct HuntGartner Peer InsightsIT Central StationFeaturedCustomersCrowdReviewsVendor websitesTechnical documentationChangelogsAPI docsStatus pagesPress releasesBlog feedsInvestor relations pagesTechCrunchThe InformationArs TechnicaVentureBeatProtocolStratecheryAxios ProBusinessWirePRNewswireGlobeNewswireReutersBloombergSEC EDGAREU Commission filingsUSPTO PatentsWIPO IP databaseCrunchbasePitchBook public dataCB InsightsFedRAMP marketplaceFINRA filingsLinkedIn jobsGreenhouse boardsLever boardsWorkable boardsIndeedAngelList TalentBuilt InGlassdoorSalesforce AppExchangeHubSpot EcosystemSlack App DirectoryAtlassian MarketplaceShopify App StoreAWS MarketplaceAzure MarketplaceGoogle Cloud MarketplaceKlue feedsCrayon feedsKompyte intelligenceOwler signalsOwletterZoomInfo data6sense signalsBombora intentReddit (r/SaaS, r/devops, r/cscareers)Hacker NewsTwitter / XLinkedIn PulseIndustry RSS aggregatorVertical newslettersSubstack techSOC 2 attestationsISO 27001 registerHIPAA disclosuresEU AI Act Article 50 disclosures

How it actually flows

Build a graph, node by node.

Captured live in the workspace · search any of 90 node types, drop a node on the canvas, and expand its typed relationships into a connected map.

Walk the graph against your category.

30 minutes. Bring a question. We'll filter the graph to your competitive set, run a multi-hop traversal in front of you, and show every cell's provenance.