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:
- External pipeline. What's actually happening in the market.
Compound,Mechanism,Trial,Company,Deal,RegulatoryAction. - SPIKE intelligence,
Signal/Pattern/InsightwithFormsPattern,ContradictsPattern,HighlightsPatternedges, plus provenance viaSpottedInArtifact→InformationArtifact→PublishedBySource→SourceEntity. - 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):
| Pattern | Kind | What it captures |
|---|---|---|
| GLP-1 Pipeline Explosion | dynamic | 30+ candidates across 10+ sponsors racing an addressable market ≥$150B |
| Oral GLP-1 Thesis | dynamic | Primary-care unlock via oral formulation. And the signals contradicting it |
| Efficacy Ceiling | challenge | Weight-loss magnitude plateauing; tolerability now the differentiator |
| Payer Pushback | challenge | PBM 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-discontinuedRunning 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-upcomingKey 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/statusenums. No interfaces or subtypes. - No embeddings in v1. Narrative surfaces are graph-structured, not vector-search-driven.
Reference
pharma-intelcookbook. Schema, seed, queries, config- Cookbooks repo overview
- Industry Intelligence guide. Base SPIKE model this cookbook extends