Methods
How we know
Every line in the graph carries a source, a date, an evidence level, a confidence and a slot for counter-evidence. Where we have no source, we say so instead of guessing.
Four evidence levels
A level is never raised: a text-mined claim stays text-mined until a curated source states it too.
- observed
Clinically or experimentally observed, with a primary source.
e.g. ClinVar pathogenic variants, HPO annotations with a frequency, trial records.
- curated
Statement from an expert-curated database.
e.g. Orphanet, MONDO, Reactome, OMIM annotations, EMA and FDA records.
- text-mined
Extracted from literature by a model, not yet verified.
a language model extracts a claim from a PubMed abstract; PMID and the quoted sentence are kept.
- inferred
Computed by Constellate; formula and inputs shown.
computed by Constellate; the formula and its inputs are stored on the edge.
Counter-evidence
Every edge has a contradicting list. It may be empty, it is never missing. Where two sources disagree, both are shown and the edge is drawn in red.
Confidence
A number from 0 to 1 per edge and per piece of evidence. It orders what we show; it is not a probability that a diagnosis is right. A link pulled up from a subtype to its parent disease gets the weakest subtype confidence times a factor below 1, so it is never stronger than its source.
Where AI is used
Three places, each marked in the product: Extract, Reconcile and Explain. All three are built on the OpenAI API, with the model for each step set by an environment variable (OPENAI_MODEL_EXTRACT, OPENAI_MODEL_JUDGE, OPENAI_MODEL_EMBED) and checked against the available models before a run. The current data export ran these steps on Claude (Anthropic); every evidence item names the model that produced it. Without any key the app still runs and Explain falls back to template text.
Pipeline step 05
Extract
Reads PubMed abstracts and returns structured claims (subject, predicate, object, polarity, PMID, quoted sentence). Claims without a quote are dropped. Result level: text-mined.
Pipeline step 06
Reconcile
Matches patient-organisation names and free-text diagnoses to MONDO ids: embeddings propose candidates, a model judges them and gives a reason. Only organisations checked against their own website reach the product.
App, /api/explain
Explain
Turns the edges of an action card into plain language for a family. Every sentence must end with an edge id; a sentence without a valid id is struck out in the interface.
How well it works
Measured numbers only. A value that is not yet measured in this build says so, and what it will measure.
| Metric | Value | What is measured |
|---|---|---|
| Extract precision | loading | Share of extracted claims confirmed against the abstract on a reviewed sample; the source line says who reviewed. |
| Reconcile accuracy | loading | Share of organisation-to-disease matches that agree with a hand-checked answer. |
| Similarity vs Monarch (Spearman) | loading | Rank correlation between our phenotype similarity (simGIC) and the Monarch semantic similarity for our top disease pairs. |
| Coverage of the 350 core diseases | loading | Share of core diseases with at least one trial, paper, reusable asset or patient organisation. |
| Hero-path regression | loading | Automated check that the hero path (Krabbe to MLD and its action card) is still found after every data build. |
Data sources and licences
Constellate is a research-navigation tool, not medical advice. Open studies link to the study's official contact page; we collect no health data and offer no sign-up.