Pitch Follow-up: Multi-Program Demo¶
One system, four discovery programs, one growing graph.
We ran graffold across four animal-health programs, then merged them into a single cross-species knowledge graph. Each program stands alone — and together they compound. Includes a blinded gold-standard evaluation against an expert team's target list.
Programs¶
Each program is a 1,000-paper literature graph (harmonized), color-coded by entity type. Click any node to inspect; use Fullscreen for presentation.
Post-weaning ETEC in pigs · 8,752 entities · 20,150 relationships
| Type | Count | Type | Count | |
|---|---|---|---|---|
| Evidence | 2,228 | Organism | 827 | |
| Compound | 1,701 | Disease | 501 | |
| Target | 1,661 | Decision | 209 | |
| Mechanism | 1,250 | Tool | 61 |
Largest of the four — the flagship program (literature + Atlas reasoning + institutional seed).
Mucin protection (swine / poultry) · 2,489 entities · 4,785 relationships
| Type | Count | Type | Count | |
|---|---|---|---|---|
| Target | 491 | Organism | 386 | |
| Compound | 487 | Evidence | 313 | |
| Mechanism | 477 | Disease | 259 |
The subject of the blinded gold-standard evaluation below.
Broiler coccidiosis · 2,528 entities · 4,555 relationships
| Type | Count | Type | Count | |
|---|---|---|---|---|
| Compound | 564 | Target | 390 | |
| Mechanism | 503 | Organism | 334 | |
| Evidence | 503 | Disease | 117 |
Bovine mastitis · 2,428 entities · 6,117 relationships
| Type | Count | Type | Count | |
|---|---|---|---|---|
| Compound | 536 | Evidence | 353 | |
| Target | 511 | Organism | 292 | |
| Mechanism | 452 | Disease | 171 |
All four programs merged · 8,681 entities · 21,605 relationships · 662 shared across programs
Gold-bordered nodes appear in multiple programs — shared mechanisms, organisms, and compounds that transfer across species and diseases. This is the cross-program value: inflammation biology found for mastitis informs ETEC; a probiotic characterized once serves every program.
The graph grows as searches expand. Each program starts focused, then the corpus broadens and the graph fills in. Merging programs reveals shared biology no single search would surface.
flowchart LR
Q1["Focused query set<br/><small>one disease</small>"] --> G1["Program graph<br/><small>~2.5K entities</small>"]
G1 --> Q2["Broadened corpus<br/><small>adjacent biology</small>"]
Q2 --> G2["Denser graph<br/><small>8.7K entities</small>"]
G2 --> M["Merge programs<br/><small>shared biology surfaces</small>"]
M --> KG[("Cross-species<br/>knowledge graph")]
- Start focused — a program begins with disease-specific queries (~2,400–2,500 entities)
- Expand the corpus — broadening to adjacent biology (adhesins, toxins, host models, comparative pathogens) grows a program to 8,700+ entities
- Merge programs — 662 entities are shared across the four programs: inflammation mechanisms, probiotic organisms, conserved targets. Each new program makes the others richer.
- The whole exceeds the sum — a cohesive cross-species graph where discovery in one species transfers to the next
Blinded gold-standard evaluation { #blinded-evaluation }¶
The test: can graffold independently recover an expert team's specific targets and compounds from only a high-level direction — no answers in the seed?
Alltech's team had identified the mucin-degrading enzyme machinery to block. We stripped the specific proteins, UniProt IDs, and ~27 named inhibitors from the seed, then ran the same 1,000-paper literature enrichment. Two blinding levels:
- Scenario A (aim only): seed = "protect gut mucin, block pathogen adhesion." No enzyme classes, no targets, no compounds. Thesis-agnostic queries.
- Scenario B (enzyme classes): seed keeps the three enzyme classes (sialidases / chitinases / collagenases) but no specific proteins or compounds.
| Metric | A — aim only | B — enzyme classes | Full (seeded w/ answers) |
|---|---|---|---|
| Enzyme classes recovered | 2 / 4 | 4 / 4 | 4 / 4 |
| Specific targets recovered | 5 / 9 | 6 / 9 | 8 / 9 |
| Named compounds recovered | 3 / 27 | 8 / 27 | 13 / 27 |
| New targets surfaced | 75 | 91 | 97 |
| Evidence citations | — | 287 | 313 |
What the blinded graph recovered on its own¶
From a one-paragraph direction, no answers in the seed
All three C. perfringens sialidases (NanI, NanH, NanJ) by name — even in Scenario A (aim only), from just "protect mucin." Plus collagenase, chitinase, and E. coli ChiA.
Headline compounds (Scenario B): the marquee neuraminidase inhibitors (oseltamivir, zanamivir, peramivir), top antisialidase flavonoids (quercetin, apigenin, kaempferol), and siastatin — which the full seeded run did not surface.
91 new candidate targets Alltech had not listed — beta-N-acetylglucosaminidase, GH29 glycosyl hydrolases, hemagglutinin/protease, gelatinase — several directly on-thesis.
Honest gaps: Scenario B missed 3 targets (Salmonella chitinase, Salmonella collagenase, influenza neuraminidase) — thinner in the pig/poultry-gut literature the queries pulled, and addressable with pathogen-specific queries. The A→B gap is expected: an enzyme-class hint steers the search into the right neighborhood.
The takeaway¶
Given a one-paragraph direction, graffold's literature enrichment recovered the majority of an expert team's specific target list and their headline compounds, cited each with literature, and surfaced ~90 additional literature-supported candidates — in ~35 minutes for ~$5 of compute. This is recovery from the corpus against a blinded gold set (retrieval + resolution), not de-novo molecule design — that reasoning layer is Atlas's. Point it in the general direction and it recovers most of the answer; give it zero hints and it still finds half.
Reliability, speed & cost { #value-study }¶
A controlled study across these same three programs (Bedrock DeepSeek-v3.2, KGs served over the API) measured what the graph buys a discovery pipeline versus a model reasoning alone or doing live literature research.
Verdict stability — same question asked 7× per target¶
| Program | Model flip rate | KG flip rate |
|---|---|---|
| Zoetis — mastitis | 29% | 0% |
| Elanco — coccidiosis | 29% | 0% |
| Alltech — mucin | 21% | 0% |
The model returns a different validated/killed verdict on ~1 in 4 targets across identical prompts. The KG's verdict is a deterministic query — bit-identical every run.
Speed & cost — 30 queries/arm, 3 diseases¶
| Arm | Latency | Tokens/query | PubMed calls |
|---|---|---|---|
| KG-grounded | 18.4s | 6,928 | 0 |
| Live PubMed research | 33.3s | 39,179 | 5.6 |
| Model only (control) | 17.0s | 4,058 | 0 |
KG vs live research: ~1.8× faster, ~5.7× fewer tokens (~32k saved/query), ~6 PubMed round-trips avoided. Research is a fixed cost paid once at ingestion; the KG amortizes it to a cheap, reusable lookup — it wins on cost from the first reuse.
Honest boundary
Reliability measures consistency, not truth — the KG answers the same way every run, but correctness depends on ingestion quality. The demonstrated wins are that the graph is reproducible and cheaper; correctness is earned as multi-source statistics accumulate per edge (one paper is a weak claim; the same edge corroborated by many is strong). On well-published diseases a strong model also generates good cross-disease bridges unaided — the KG's value is reliability, cost, and the decisions/negatives a model cannot know, not out-generating it.
Reproduce¶
# Enrich a program (1,000 papers)
python benchmarks/multi_program.py enrich alltech-blinded --papers 1000
# Score against the gold-standard target list
python benchmarks/alltech_eval.py ~/.graffold/parquet/alltech-blinded-harmonized
# Merge all programs into the master cross-species graph
python benchmarks/multi_program.py merge
See the pitch for the overall thesis, or the ETEC runbook for the full CLI walkthrough.