Built to last
What your documents actually say, connected up.
Not something you author and maintain. It is derived from your content, it remembers which document every claim came from, and it can be thrown away and rebuilt without re-reading a thing.
In short
As we read your content we note what it claims and which system said it. When the same account or product or plan turns up in a billing record and in a support ticket, those become one thing — which is what lets a single answer span two applications. Because the graph is derived rather than authored, losing it costs a rebuild rather than the work.
The primitives
One thing that matters, and the three that make it possible.
the reason any of this matters
Cross-source link
An entity that appears in more than one of your systems — the account named in a billing record and in a support ticket. These are what let one answer span two applications, and they are the number to watch: if it reads zero, the graph is not earning its cost.
(workspace, normalized_name, type)
Entity
Identity is that triple, which is the mechanism behind the link above: the same account mentioned in a CRM row and in a ticket resolves to one node, not two, so a fact attached to either is reachable from the other.
(workspace, subject, predicate, object)
Assertion
One clean edge per fact. Not one edge per mention — the mentions are provenance rows hanging off the edge.
(edge, document, source, version)
Provenance row
One per document that asserts the fact, each with its own confidence. This is the table that makes multi-source evidence faithful rather than approximate.
Provenance
One row per document, per edge.
This is the design decision the rest of the product rests on, and it is worth being explicit about what it buys.
- Every document that asserts a fact keeps its own confidence for it. Nothing is averaged away.
- A fact is retracted only when its last supporting document stops asserting it — so removing one source out of four changes the count, not the graph.
- The evidence lane can restrict retrieval to exactly the documents behind the facts it traversed, because that set is a real query rather than a guess.
- Each row also records which ontology version was active when the edge was written, which is what makes a version switch a filter rather than a migration.
Asserted by
- 0.95 confidence
Q3 Retention Review
notion
- 0.88 confidence
Support Themes 2026
zendesk
- 0.81 confidence
Activation Playbook v4
lms_content
Inspection
Four consoles, because a graph you can't look at is a graph you can't trust.
Graph visualizer
Force-directed, expand any node one hop at a time, filter by entity type, predicate or source. Derived edges are dashed; edges whose supporters span two integrations are coloured, because those are the interesting ones.
Entity quality
Top entities by degree, orphans with no edges at all, and a paged review queue of merge candidates the resolver was not confident enough to fold automatically.
Corpus health
A score out of 100 over ontology stability, entity match rate, orphan share, confidence distribution, extraction success rate and source coverage — with the direction of health stated for each, so a number is never ambiguous.
Content status
Per document: which pipeline phase it is in, how long each phase took, per-shard model durations, and the failure reason with a retry if it did not make it.
Corpus health
Every metric states which direction is healthy.
A dashboard number with no stated direction is a number people learn to ignore.
| Metric | What it counts | Healthy direction |
|---|---|---|
| Ontology stability | New types discovered per 100 documents | Healthy = declining toward 0 |
| Entity match rate | Share of mentions resolving to an existing entity | Healthy = rising toward 90%+ |
| Orphan entities | Entities with no assertions attached | Healthy = small and shrinking |
| Corroborated share | Assertions with more than one supporting document | Higher is better |
| Cross-source links | Entities bridging two or more integrations | More = better integration value |
| Extraction success rate | Documents completing extraction without failure | Healthy = at or near 100% |
Foundations
Postgres is the source of truth.
The vector index and the graph store are rebuildable projections. That single decision is why an ontology switch is cheap, a store failure is survivable, and none of it costs a second extraction pass.
postgres ← source of truth
documents, chunks
entities, assertions
graph_assertion_sources ← provenance
ontologies, versions
embeddings (pgvector)
vector index ← projection, rebuildable
graph store ← projection, rebuildable
(or recursive CTEs
straight over postgres)FAQ
Frequently asked
Including the limitations, because they change how you read the numbers.
Start with the free tier. Ship the first answer today.
RAG is free, with no card and no sales call. Add the graph when your corpus earns it.
- no card required
- first workspace is free
- one POST to ingest