Skip to content

Adopt Existing Work

Adopt UPG by importing the work that already exists

A product graph rarely starts empty. A team already has years of product knowledge written down: specs in Markdown, databases in Notion, issues in Linear, milestones in GitHub. Adopting UPG means importing that corpus, not retyping it. Import adapters read each source, propose typed nodes and edges with a mapping confidence, and produce a draft for a human to review before anything commits, so the graph begins where the existing work already is.

01Import The Source

Each adapter maps a source onto canonical UPG types

Four adapters ship today. Markdown reads headings, bullets, and frontmatter; Notion reads database items and linked-database relations; Linear reads issues, projects, and labels; GitHub reads issues, pull requests, and milestones. Each maps its source onto canonical UPG types.

A Linear issue labelled persona becomes a persona node, its title and body carried across, its source id preserved. The same issue without an aligned label imports as a generic document with a low mapping_confidence, flagged for a human to type.

02Review The Draft

Every import is a draft a human reviews

Import is not a one-shot conversion. An adapter can run pre-import analysis over the source, clustering titles and extracting entities the source never labelled, and post-import checks for missing edges and orphan nodes. Every imported node carries its source id and a mapping confidence, so nothing is asserted that a reviewer did not get to see.

The draft is always reviewed before it commits. A reviewer accepts the high-confidence mappings and retypes the uncertain ones, and the result is a graph that traces back to the documents it came from, rather than a parallel copy that immediately starts to drift.

03The Pipeline

From source to reviewed graph, every step on the record

Import runs as a pipeline with a step at each stage. The adapter reads the source corpus, maps it onto canonical types, and proposes nodes that each carry a mapping_confidence and a source id.

Then a human reviews: accept the confident mappings, retype the uncertain ones. The graph that lands traces back to the documents it came from, so adoption adds structure on top of the existing work rather than forking a copy that immediately starts to drift.

Markdown, Notion, Linear, GitHub
the corpus already kept
Adapter
maps onto canonical types
Proposed nodes
each with mapping_confidence + source id
Human review
accept high confidence, retype the rest
Committed graph
traces back to its sources

Import runs as a reviewed pipeline. An adapter reads an existing corpus, maps it onto canonical types, and proposes nodes that each carry a mapping confidence and a source id. A human accepts the confident mappings and retypes the uncertain ones. The committed graph traces back to the documents it came from.

04An Honest Gap

Structured sources import well; prose imports crudely. The current state of each is on the record.

Structured sources, well
Linear, Notion databases, and GitHub carry labels and relations the adapter can map with confidence.
Prose sources, crudely
Markdown maps headings and bullets, but a Google Doc or a Slack thread needs semantic extraction that is still maturing.
The near-term priority
A semantic adapter that ingests prose at scale, proposes a draft structure, and lets a human accept or revise it.
05Where To Go Next

Adoption is the on-ramp to everything else. Once the existing work is in, the lifecycle use cases are what build on it. Follow a thread: