How it works

Methodology

A versioned account of GaiaLab's research-use workflow: data retrieval, scoring, evidence checks, reproducibility artifacts, and limitations.

Read White Paper → ↓ Download (.md)

Scientific claims should arrive with receipts.

GaiaLab produces research-use hypothesis records, not conclusions. A useful record makes it possible to ask what was available, what was declared, what changed, and what happened afterward.

Before interpretation

Preserve the input panel and context, recorded source availability, analysis identifiers, and the filters or scoring choices relevant to the output.

Boundary and change record

Make material exclusions, changes, and their rationale visible where recorded. For pre-reveal GaiaWorld benchmarks, this includes the declared protocol, freeze, scoring lock, and prediction commitment artifacts.

Afterward

Keep outputs, cited evidence, limitations, and relevant verification artifacts available for inspection and critique. A receipt makes a claim easier to investigate; it does not make the claim true.

Receipts support inspection and reproduction attempts. They do not establish scientific correctness, biological validity, clinical usefulness, or independent validation.

Analysis Pipeline

Every GaiaLab analysis runs through five sequential stages. Stages 1 and 2 are fully parallel across all sources. Stage 5 is a Pro-tier conditional layer (also gated on panel size and feature flags) and does not run on every analysis.

1

Gene normalisation

Input gene symbols are normalised to HGNC approved symbols. Aliases (e.g. HER2 → ERBB2) are resolved before any database query. Invalid symbols are flagged and excluded from scoring but included in the report.

2

Parallel data fetch — 76+ databases1

All database queries run simultaneously via Promise.allSettled(). No source blocks another. A timeout or API error in one source does not prevent results from the remaining sources. Each client returns partial results on failure rather than throwing.

3

Channel aggregation

Raw API responses are aggregated into 16 evidence channels by domain-specific aggregators. Each aggregator applies source-specific normalisation, deduplication, and confidence flags before passing data downstream.

4

Scoring and classification

Drug candidates are scored 0–100 across six weighted factors. Pathways are ranked by FDR-corrected enrichment p-value. Hypotheses are filtered by evidence quality and cross-deduplicated against input gene tokens.

5

Optional structured AI synthesis (deployment-dependent)

A configurable AI synthesis layer may organize scored outputs into hypotheses, critiques, evidence summaries, risk considerations, and a synthesis for human review. Role count, provider routing, and availability are deployment-dependent; this layer may be reduced to a single-provider path or omitted. It is not an independent review process or a validation finding.

Data Sources

76+ integrated databases (~72–76 active per run, API-key dependent) across seven domains.1 All clients use Promise.allSettled() — a failure in any source does not block results from others.

Gene annotation & variation

SourceData typeAuth
HGNCApproved symbol, aliases, gene familyNo
NCBI GeneEntrez ID, summary, RefSeqOptional (rate limit)
EnsemblStable ID, biotype, cross-referencesNo
UniProtProtein function, variants, subcellular location, PTMsNo
ClinVarPathogenic/benign variant classificationsNo
ClinGenGene-disease validity, haploinsufficiencyNo
gnomAD (variant)Population allele frequencies, constraint metricsNo
gnomAD (constraint)pLI, LOEUF, missense Z-scoreNo
gnomAD (ancestry)Ancestry-stratified allele countsNo
GWAS CatalogTrait associations, lead SNPs, p-valuesNo
OMIMMendelian disease associationsNo
Monarch InitiativeCross-species phenotype associationsNo
VEP (Ensembl)Variant effect predictionsNo
AGR (Alliance)Cross-model-organism gene dataNo

Pathway & functional annotation

SourceData typeAuth
KEGGPathway membership, module associationsNo
ReactomeHierarchical pathway enrichmentNo
Gene OntologyBP, MF, CC termsNo
EnrichrGene set enrichment across 200+ librariesNo
MSigDBHallmark, C2, C6 gene setsNo
PathwayCommonsMerged pathway graph from multiple curated pathway databasesNo
JASPARTranscription factor binding motifsNo
ChEA3Transcription factor enrichmentNo

Interaction & network

SourceData typeAuth
STRINGFunctional association network scoresNo
STRING-DB partnersPhysical interaction partnersNo
BioGRIDPPIs, genetic interactionsOptional
IntActCurated molecular interactions, MI scoresNo
ComplexPortalMacromolecular complex membershipNo
SynLethDBSynthetic lethality pairsNo

Literature

SourceData typeAuth
PubMed / NCBI EntrezCitation metadata, MeSH terms, abstractsOptional (3→10 req/s)
PMC Full-TextJATS XML → quantitative extraction (IC50, HR, OR, n=, fold-change)No
Europe PMCOpen-access full text, preprintsNo
OpenAlexWorks, citations, author disambiguationNo
Semantic ScholarCitation graph, influential papersOptional
bioRxivPreprint titles and abstractsNo
Preprint monitorNew preprints matching panel genes (internal)

Drug, clinical & regulatory

SourceData typeAuth
ChEMBLIC50, EC50, Ki, pChEMBL values, mechanism of actionNo
ClinicalTrials.gov v2Active trials, phase, intervention, NCT IDsNo
OpenFDAAdverse event counts, drug approval statusNo
OncoKBOncology actionability tiers, variant-drug mappingsNo
CIViCClinical interpretations of variantsNo
DGIdbDrug-gene interaction types and sourcesNo
DrugCentralDrug targets, MOA, FDA labelsNo
TTDTherapeutic target databaseNo
PharmGKBPharmacogenomics annotationsNo
PubChem (compound)Structure, SMILES, InChINo
PubChem (bioassay)Bioactivity assay resultsNo
RxNorm DDIDrug-drug interaction severityNo
OpenTargetsDisease-gene association scores (genetic, somatic, literature)No
OpenTargets GeneticsQTL, GWAS colocalization, fine-mappingNo
Drug resistance intelligenceKnown resistance mechanisms per drug class
FDA RegulatoryLabel text, boxed warnings, indicationNo
Patent statusPatent expiry year, exclusivity statusNo
LINCSPerturbation gene expression signatures (L1000)No
DisGeNETGene-disease associations with evidence scoreAPI key
DrugBankDrug targets, pharmacokinetics, interactionsAPI key

Omics & cancer

SourceData typeAuth
TCGASomatic mutation frequency, expressionNo
TCGA survivalSurvival stratification by mutation/expressionNo
cBioPortalAlteration frequency, mutation-aware survival stratification across TCGA cohortsNo
COSMIC SignaturesMutational signature contributionsNo
DepMapCancer dependency scores (CRISPR screen)No
DepMap co-essentialityCo-essential gene pairs across cell linesNo
GDSCDrug sensitivity (IC50) across cancer cell linesNo
GTEx (expression)Tissue-specific RNA expressionNo
GTEx (eQTL)Expression quantitative trait lociNo
HPAProtein and RNA atlas, subcellular localisationNo
CPTACProteogenomic abundance, phospho-stateNo
ProteomicsDBHuman proteome expressionNo
PRIDEMass spectrometry proteomics datasetsNo
CELLxGENESingle-cell RNA-seq cell-state annotationsNo
HMDBMetabolite-gene associationsNo
MetaboLightsMetabolomics studiesNo
OrphanetRare disease gene associationsNo

Structural

SourceData typeAuth
AlphaFold (EBI)pLDDT per-residue confidence → druggability scoreNo
PDBExperimental 3D structures, resolutionNo
Sources marked "API key" fall back gracefully when credentials are absent — missing sources are disclosed in the analysis output, not filled with inferred data. Three sources are currently key-gated (OncoKB, DisGeNET, DrugBank), so live coverage is 72 / 75 integrated sources. The live count is published at /api/health.

FDR-Corrected Pathway Enrichment

GaiaLab uses a hypergeometric test for gene set enrichment, then applies Benjamini-Hochberg (BH) multiple testing correction across all tested pathways.

Hypergeometric test

P(X ≥ k) = Σ C(K,i)·C(N-K, n-i) / C(N,n) for i = k to min(n,K) Where: N = genome background size (21,000 protein-coding genes) K = genes in pathway (from database annotation) n = genes in input panel k = overlap between input panel and pathway

BH correction

Raw p-values across all pathways are ranked ascending. Each pathway receives an adjusted q-value:

q_i = p_i · (m / i) Where: m = total number of pathways tested i = rank of this pathway (1 = smallest p-value)

Pathways are labelled by significance tier:

  • high — q ≤ 0.01
  • moderate — q ≤ 0.05
  • nominal — q ≤ 0.10
  • ns — q > 0.10 (not shown by default)

Only pathways at q ≤ 0.05 are included in the executive brief and drug scoring. Pathways at q ≤ 0.10 are shown in the full pathway panel with a "nominal" label. This stricter threshold (tightened from q < 0.20) limits the expected false-discovery rate to 1-in-10 rather than 1-in-5.

Citation Verification & Hallucination Detection

GaiaLab runs a three-stage evidence-integrity pipeline on every analysis to check whether cited records are retrievable, estimate whether a claim is supported by cited abstract text, and surface potential weaknesses. These checks reduce—but do not eliminate—citation, relevance, or interpretation errors.

Stage 0 — PMID existence check

After every analysis completes, all PMIDs produced by the AI synthesis layer are batch-queried against the NCBI PubMed E-utilities esummary API in groups of 10. This check runs asynchronously — it does not add latency to analysis delivery. Any PMID not returned by PubMed's index is flagged for review as unresolved or potentially invalid and logged to data/quality/invalid-pmids.json. The unresolved-PMID rate is patched into the snapshot and reported on the Trust dashboard for runs from May 2026 forward. Historical runs prior to this date were not checked retroactively and show "Not checked" on the Trust dashboard.

Stage 1 — NLI entailment check

Claims from the analysis are assessed against their cited abstract text using a zero-shot Natural Language Inference model — currently facebook/bart-large-mnli. The entailment score threshold is 0.45 — claims that score below this are flagged as weakly supported. Context window: 1,500 characters per passage, 200 characters per claim. The live model, threshold, and availability are published at /api/nli/status so this section can't silently drift from what's actually running. This is an automated screening signal, not a substitute for expert interpretation of the full paper.

Stage 2 — ALCE-style cite metrics

Inspired by the ALCE attribution benchmark, GaiaLab computes cite-precision, cite-recall, and cite-F1 for each analysis:

cite-precision = claims with ≥1 supporting citation / total claims cite-recall = citations actually used / total citations provided cite-F1 = 2 × (precision × recall) / (precision + recall)

These metrics are shown on the Trust page. A cite-F1 ≥ 0.6 is used as a heuristic grounding indicator, not as a validation finding.

AI synthesis citation floor

Any insight produced by an enabled AI synthesis component that has zero verified PMIDs is annotated with citationFloor: false and its evidence quality is capped at "moderate". A "⚠ No PMIDs" badge is shown on the insight card in the analysis output.

Relation-Aware Drug Scoring

Each drug candidate is scored 0–100 across six weighted factors, then classified into a tier and assigned a floor/cap based on regulatory status.

Scoring formula

finalScore = ( targetScore × 0.30 + // gene-drug target overlap in input panel (ChEMBL, DGIDb, OpenTargets) clinicalScore × 0.25 + // phase, trial status, FDA approval moaScore × 0.20 + // mechanism of action alignment to disease pathway contextScore × 0.12 + // disease co-mention in literature + OpenTargets association score pathwayScore × 0.08 + // enriched pathway membership overlap with drug targets safetyScore × 0.05 // OpenFDA adverse event burden; Lipinski / ADMET flags ) + Bonus signals (added after weighted sum): AlphaFold structural bonus: +0 to +10 (pLDDT ≥80 → +10, ≥70 → +6, ≥60 → +3) DepMap essentiality bonus: +0 to +8 (cancer dependency score in disease cell lines) Network proximity bonus: +0 to +5 (≤2 hops from panel genes in STRING/BioGRID) Penalties (single worst-case applies, not cascading): contextRelevance < 20 → score × 0.30 contextRelevance 20–34 → score × 0.45 (off-label, not on-panel only; on-label drugs are exempt) FDA-approved floor: On-label FDA-approved → floor = 70 (Tier I guaranteed) Off-label FDA-approved → floor = 35 (if contextRelevance > 0)

Tier classification

Tier I

Score ≥ 70. Strong evidence. On-panel target, clinical data, context match. Shown prominently in all views.

Tier II

Score 50–69. Moderate evidence. Includes all FDA-approved drugs that pass context filter. Up to 3 shown by default.

Tier III

Score < 50. Exploratory. Collapsed behind toggle. Requires explicit expansion by the user.

Filters applied before scoring

  • Context relevance ≥ 40 required for off-panel drugs (≥ 30 for on-panel)
  • Clinical evidence score ≥ 15 required for off-panel drugs
  • Synthetic lethality only computed in oncology disease contexts
  • Duplicate canonical drugs resolved by highest repurposingScore

Convergence Scoring

A drug scoring highly on one factor but appearing in no other source is less trustworthy than a drug supported by multiple independent evidence types. Convergence scoring counts how many of six orthogonal source families each drug passes:

FamilyPasses when
pubmed≥ 1 PMID linked to the drug–disease combination
clinicaltrials≥ 1 trial record in ClinicalTrials.gov for this drug
fdaFDA approved, phase ≥ 3, or phase label matches "approved / phase 3 / phase 4"
chemblConfirmed binding targets or bioactivity records exist in ChEMBL
structuralAlphaFold pLDDT ≥ 50, PDB structures present, or hasAlphaFold=true
network≥ 3 interaction neighbours in STRING/BioGRID, or hasNetworkProximity=true

A convergence score of 4/6 or higher is displayed as a "convergent" badge on the drug card. This badge means the drug's ranking is supported by multiple orthogonal evidence lines, not just a single strong signal. The six families are intentionally independent — structural data cannot influence the PubMed or clinical trial checks.

Convergence scoring is a display and communication tool, not a re-ranking signal. It does not alter the six-factor score. Its purpose is to help researchers quickly identify candidates with broad multi-source support.

Structured AI Synthesis

When enabled, GaiaLab can use configurable AI roles to organize an analysis after data aggregation. Each role receives structured database outputs rather than raw database dumps. The role count, provider assignment, and availability are deployment-dependent; this component is a synthesis aid for human review, not independent validation.

Configured role types

A deployment may use roles that organize a hypothesis, critique, evidence summary, risk considerations, or synthesis. These labels describe an orchestration pattern, not separate scientific reviewers or independently validated conclusions.

Provider and role configuration

Provider routing and role configuration are deployment-dependent. A synthesis can be reduced to a single-provider path or omitted when providers are unavailable, feature flags disable it, or an analysis runs in a constrained mode. Different configured roles do not constitute independent scientific reviewers or independent validation.

Check the run record and the Trust page for the provider and availability state applicable to a given analysis. Do not infer a fixed number of agents, distinct models, or independent review from an executive brief.

Confidence Tiers

Claim-level confidence is capped by citation coverage. AI-generated language cannot assert high confidence when the citation record does not support it.

ConfidenceRequirementDisplay
HighOn-panel target AND clinical evidence score ≥ 15 AND ≥ 6 PubMed citationsGreen border, "strong evidence" label
Medium2–5 citations OR off-panel with clinical dataBlue border, "moderate evidence" label
Low< 2 citations OR hypothesis onlyGrey border, "exploratory" label

Every cited claim includes a PMID. Claims without PMIDs are labelled "derived" or "hypothetical" and rendered with reduced visual prominence. This is enforced by the PMID evidence ledger, not by AI instruction — AI cannot override it.

MCP Server Interface

GaiaLab exposes a Model Context Protocol (MCP) server at POST /mcp, allowing AI assistants — including Claude Desktop and custom agents built with the Anthropic Agent SDK — to call the full analysis pipeline as a tool.

Tool: gaialab_generate_insights

gaialab_generate_insights is one of 9 MCP tools exposed by the server; the full list is documented at /developer.

Input (Zod-validated JSON): { "genes": string[] // HGNC gene symbols, e.g. ["BRCA1", "TP53", "PTEN"] "diseaseContext": string // e.g. "triple-negative breast cancer" "audience": string // "researcher" | "clinician" | "general" } Output: full structured analysis JSON including - pathway enrichment with FDR q-values - drug candidates with tier, score breakdown, convergence score - hypotheses with PMID citations and evidence status - executive brief - analysis ID for citation

Each POST creates a fresh server transport instance. Responses carry Access-Control-Allow-Origin: *. The MCP interface is the primary integration surface for embedding GaiaLab into research workflow automation.

Researcher and Enterprise tier API keys bypass the IP-based daily quota gate. Free-tier users accessing the MCP endpoint are subject to the same daily limit as the web interface.

Prospective Prediction Tracking

Every drug repurposing prediction made by GaiaLab is recorded at analysis time with a confidence score, the disease context, and the date. The prediction tracker periodically polls ClinicalTrials.gov v2 to check whether a trial for that drug–disease pair has completed, and if so, what outcome was reported.

Outcome labelling

OutcomeScore
Trial completed with positive result1.0
Trial completed with mixed result0.5
Trial completed, neutral / inconclusive0.25
Trial terminated, no trial found, or negative0.0

Retrospective AUROC benchmark (live — see /calibration for the current value, N and CI)

AUROC: live at /api/predictions/calibration (retrospectiveAuroc.globalAUROC) vs 0.50 random baseline Deduplicated to one row per distinct drug-disease pair; sealed prospective-lockbox pairs excluded (see /calibration for methodology). Brier Score: live at /api/predictions/calibration (vs 0.25 no-skill baseline — lower is better) Formula: (1/N) Σ (predicted_confidence − outcome)² Below 0.25 beats no-skill, BUT must be read with ECE — a low Brier under high ECE reflects class imbalance, not calibrated confidence. Concordance: live at /api/predictions/calibration — fraction of predictions with a matching ClinicalTrials.gov entry
Retrospective AUROC is not a clinically validated predictor. GaiaLab is a hypothesis-generation tool — this metric shows whether the predictions are distinguishable from random, but cannot predict which specific drug will succeed in any given trial. Check /calibration before citing a number — the underlying dataset changes as more predictions resolve.

Full calibration curve: GET /api/predictions/calibration. Individual predictions: GET /api/predictions. Both endpoints are public and unauthenticated.

Proof-of-anteriority (tamper-evident timestamps)

A prediction's lead-time over a trial is only meaningful when the commitment has an independently verified time bound. Every prediction's full record — gene panel, drug, disease, mechanism, confidence, evidence sources, cited PMIDs, the ClinicalTrials.gov baseline (trials already registered for the pair at prediction time), model/code version and timestamp — is hashed into a Merkle leaf using SHA-256 with RFC 6962-style domain separation and duplicate-last Merkle layering at record time, and the exact record is published (/api/attestation/:leafHash) so the hash can be recomputed independently. (Predictions recorded before this upgrade commit drug, disease and timestamp only.) The leaves are periodically batched into a tree whose single root is submitted to Bitcoin via OpenTimestamps and mirrored in a citable Zenodo record (the genesis root: DOI 10.5281/zenodo.21578642). Bitcoin confirmation is not treated as verified until the OpenTimestamps receipt is cryptographically checked against the exact stored Merkle root and yields a Bitcoin block height and block time.

Verify any prediction with no GaiaLab code: GET /api/attestation/:leafHash returns the Merkle inclusion proof, OpenTimestamps/Bitcoin verification metadata when available, the Zenodo mirror, and a step-by-step recipe. Human-readable explainer + live ledger + a self-serve verify widget: /verify.

A verified OpenTimestamps Bitcoin receipt establishes that the committed bytes existed no later than the verified Bitcoin block time. When that verified block time is earlier than the independently sourced ClinicalTrials.gov first-posted date, the commitment supports prospective precedence. Bitcoin does not independently authenticate the exact internal predictionDate / recordedAt value; it commits that value so later modification is detectable. This proves timing of the committed bytes only, not correctness or efficacy. Predictions recorded before the anchor ledger existed read "pre-anchor"; predictions whose verified block time is after trial registration claim no foresight. Zenodo is a citable mirror and is not used as an independent timing proof unless an externally sourced publication timestamp is separately verified.

Immutable Analysis IDs

Every analysis run generates a permanent ID of the form gl-{timestamp}-{8-char-hash}. This ID is:

  • Included in API responses and the analysis UI
  • Linkable as a permanent URL: https://gailabai.com/analysis/{id}
  • Safe to cite in paper supplementary materials
  • Stored as an immutable JSON snapshot in data/snapshots/

Snapshot files record the exact gene list, disease context, all database responses, all scored outputs, and the AI synthesis. A snapshot can be replayed to verify that the same inputs produce equivalent outputs under the same database state.

Analysis IDs do not guarantee database state reproducibility — external databases update over time. For full reproducibility, include the analysis ID AND the snapshot file in supplementary materials.

Prediction accuracy

GaiaLab prospectively records drug repurposing predictions and cross-references them against ClinicalTrials.gov outcomes. Live calibration metrics are published at /api/predictions/calibration — read the Brier and ECE together (a low Brier under high ECE reflects class imbalance, not calibrated confidence):

Brier Score: live (vs 0.25 no-skill baseline — lower is better) Formula: (1/N) Σ (predicted_confidence − outcome)² outcome = 1.0 if trial matched (positive), 0.5 if mixed, 0.25 if neutral, 0.0 if negative or no trial found Concordance: live at /api/predictions/calibration (candidates with a matching ClinicalTrials.gov entry) AUROC: live at /api/predictions/calibration (0.50 = random baseline)

A Brier Score below 0.25 is a comparative result against this stated no-skill reference. It does not by itself establish calibration, prospective performance, clinical validity, or the utility of individual recommendations; interpret it with ECE, sample size, class balance, endpoint construction, and uncertainty intervals. Full calibration curve: GET /api/predictions/calibration.

Known Limitations

Database coverage gaps

Three key-gated sources (OncoKB, DisGeNET, DrugBank) are inactive without paid credentials, so current live coverage is 72 of 75 integrated sources. These gaps are disclosed in the analysis output and do not produce false confidence — missing sources are simply absent, not filled with hallucinated data. The live active/total is published at /api/health.

AI synthesis is probabilistic

The six AI agents reason from structured data but can still produce plausible-sounding errors. All AI output is gated by the PMID evidence ledger — claims without citation support are demoted. Users should treat the executive brief as a hypothesis generator, not a clinical decision tool.

Small panels (< 3 genes)

Pathway enrichment and drug scoring are less reliable with fewer than 3 genes. The hypergeometric test loses power and synthetic lethality detection is disabled. Results for single-gene queries are labelled accordingly.

Non-human species

GaiaLab is optimised for human gene symbols. Mouse orthologs (e.g. Trp53) are partially supported via alias resolution but may miss sources that do not cross-reference species.

Not a clinical decision support tool

GaiaLab is a research intelligence platform. Outputs are not validated for clinical use and should not inform patient treatment decisions without independent expert review. Independent regulatory validation is required before any therapeutic or clinical application.

Evidence grounding variability

The grounded ratio — the fraction of insight items backed by at least one validated PMID — ranges from 28% (cold start, PubMed rate-limited) to 70%+ (warm literature cache, full paper pool). Cold-start runs occur after server restart when the 5-minute literature cache is empty; a second run on the same gene panel will consistently score higher. The grounded ratio is reported on every analysis output. When it falls below 15%, the system suppresses speculative claims and labels the analysis as conservatively synthesised.

AI synthesis provider availability

Optional AI synthesis depends on external provider availability and deployment configuration. When no configured provider is available, analyses can complete using database-structured outputs only, without AI synthesis. The executive brief section is labelled "quota-limited synthesis" in these cases. Provider quota status is visible at /api/health.

1 Active source count varies with API key configuration and is published live at /api/health. Full source list in Section 3 — Data Sources. Three sources are currently key-gated (OncoKB, DisGeNET, DrugBank), so live coverage is 72 of the 75 integrated clients shipped with the platform.