Omnigraph
Guides

Pharma Intelligence

Competitive pharma intel modeled as SPIKE plus an external pipeline layer plus an internal investment-thesis layer.

The pharma-intel cookbook is a runnable graph for tracking pharma competitive intelligence from the perspective of a public biotech sponsor. It extends the SPIKE framework with two extra layers and ships with a Viking Therapeutics GLP-1 obesity reference seed (113 nodes across 15 types, 200 edges across 34 types. All sourced from SEC filings, investor presentations, clinicaltrials.gov, and press releases).

Three layers

Where industry-intel/ uses SPIKE as a pure intelligence lens, pharma-intel/ grounds the same lens against a real sponsor's investment thesis. The graph stacks:

  1. External pipeline. What's actually happening in the market. Compound, Mechanism, Trial, Company, Deal, RegulatoryAction.
  2. SPIKE intelligence, Signal / Pattern / Insight with FormsPattern, ContradictsPattern, HighlightsPattern edges, plus provenance via SpottedInArtifactInformationArtifactPublishedBySourceSourceEntity.
  3. Internal context (the value layer), Program, Assumption, Decision, OpenQuestion. These are first-class nodes, not properties, so they can be queried, traced, and edged from signals.

The bridge between layers, SupportsAssumption, ContradictsAssumption, InformsQuestion. Is what makes the graph answer the questions that matter:

  • Which signals contradict my oral-displaces-injectable thesis?
  • Before the Phase 3 start decision, which assumptions need re-validation?
  • What open questions does this new regulatory signal inform?

Reference seed: Viking Therapeutics

Viking Therapeutics (NASDAQ: VKTX) is a real public company with a GLP-1/GIP dual-agonist pipeline competing in obesity. The seed is mid-2026 state, fully sourced from public disclosures (no MNPI).

External pipeline: 12 compounds (VK2735 SC + oral, tirzepatide, semaglutide, CagriSema, orforglipron, retatrutide, MariTide, danuglipron, and more), 6 mechanisms, 8 trials with real NCT IDs (VANQUISH, SURMOUNT-5, SELECT, ATTAIN-1, REDEFINE-1), 3 deals (Roche/Carmot $3.1B, Lilly/Versanis $1.925B, Pfizer/Metsera $4.9B), 4 regulatory actions, 13 companies.

Patterns (4):

PatternKindWhat it captures
GLP-1 Pipeline Explosiondynamic30+ candidates across 10+ sponsors racing an addressable market ≥$150B
Oral GLP-1 ThesisdynamicPrimary-care unlock via oral formulation. And the signals contradicting it
Efficacy CeilingchallengeWeight-loss magnitude plateauing; tolerability now the differentiator
Payer PushbackchallengePBM prior-auth + CMS coverage ambiguity squeezing commercial upside

Internal context: 2 programs (VK2735 SC Phase 3, VK2735 oral Phase 2), 5 assumptions, 2 upcoming decisions (VANQUISH interim readout 2026-07-15, Phase 3 oral start 2026-09-30), 4 open questions.

The interesting demo edges are the cross-silo ones. Pfizer discontinuing danuglipron ContradictsAssumption Viking's oral-displaces-injectable thesis from a completely different sponsor; CagriSema's REDEFINE miss ContradictsAssumption efficacy-matches-tirzepatide; Lilly's orforglipron ATTAIN-1 readout InformsQuestion Viking's competitive-window open question.

Demo queries

Once the cookbook is loaded, four queries show the three-layer model in action:

# Cross-silo contradiction: a regulatory signal hits a strategic assumption
omnigraph read --alias assumption-contradictions asmp-oral-displaces-injectable

# Pre-committee briefing: what rests on the upcoming Phase 3 start?
omnigraph read --alias decision-assumptions dec-oral-phase3-start

# Competitive landscape: all compounds targeting the same mechanism
omnigraph read --alias program-competitors prog-vk2735-sc

# Proactive alert: what internal questions does a new signal inform?
omnigraph read --alias signal-informs-questions sig-pfizer-danuglipron-discontinued

Running it

Prerequisites: a local RustFS-backed Omnigraph (the local-rustfs-bootstrap.sh script sets this up in Docker) plus the cookbooks clone.

git clone https://github.com/ModernRelay/omnigraph-cookbooks.git
cd omnigraph-cookbooks/pharma-intel

# Source RustFS credentials
cp .env.omni.example .env.omni
set -a && source ./.env.omni && set +a

# Lint
omnigraph query lint --schema ./schema.pg --query ./queries/signals.gq

# Init + load (one-time, writes to storage)
omnigraph init --schema ./schema.pg s3://omnigraph-local/repos/pharma-intel
omnigraph load --data ./seed.jsonl --mode overwrite s3://omnigraph-local/repos/pharma-intel

# Start the server
omnigraph-server --config ./omnigraph.yaml

# Run any aliased query
omnigraph read --alias decisions-upcoming

Key design choices

  • Three stacked layers. External pipeline, SPIKE intelligence, internal context. Each layer adds a perspective, not another domain.
  • Assumption / Decision / OpenQuestion are first-class nodes so they can be queried, traced, and edged to signals. Not buried as properties.
  • Stable slug prefixes for external identity (comp-, mech-, trial-, co-, deal-, reg-, sig-, pat-, ins-, src-, art-, prog-, asmp-, dec-, q-).
  • Flat kind / level / status enums. No interfaces or subtypes.
  • No embeddings in v1. Narrative surfaces are graph-structured, not vector-search-driven.

Reference

On this page