Bret Kerr · Franklin, MAUnstructured filings into governed, queryable signals the QRS team can trust.
QRS · Healthcare AI Associate — coverage board
Every requirement in the posting is mapped to something already rendered on this artifact — nothing aspirational. Read it the way QRS would brief a portfolio manager: source signal, transformation path, control surface, evidence, and where the evidence lives.
QRS information dashboard
From messy healthcare text to portfolio-manager action.
Every posted requirement has a proof surface on this artifact.
Filing text becomes entities, linked datasets, and scored features.
Extraction, retrieval, relationship mapping, and limitations are explicit.
Signals resolve into ranked candidates and investor-readable narrative.
Signal transformation workflow
Corpus Intake
SEC filings, clinical readouts, ownership context, and market signals enter as messy source text.
Structuring Layer
NER, relationship mapping, Pydantic schemas, graph edges, and Delta-ready tables impose queryable shape.
Model + Retrieval Layer
Deterministic scoring, retrieval-aware summaries, and LLM-assisted extraction stay separated by risk level.
Investment Narrative
Portfolio managers get ranked targets, quality caveats, source provenance, and a human-readable thesis.
Coverage intensity
Illustrative heuristic fit index for page navigation only, based on evidence density in this artifact — not a benchmark or measured score.
Portfolio Management
Ownership-tier classification (Peripheral / Core / Core+) and a ranked P(M&A) candidate table — Semper Maior implemented exactly.
Risk Management
Danger Zone conjunction flag (runway < 2y AND burn/cap > 0.25), a governed write perimeter, and tiered human-in-the-loop safeguards.
Data Science
PyTorch MLP scoring, ten pipelines re-expressed as governed Claude Code skills, and an expert-judgment fine-tuning layer.
Invest
Ranked target watchlist, tier rationale, M&A probability, and narrative brief.
Venture
Company-building signals, clinical/commercial anomalies, and whitespace hypotheses.
Legal / Compliance
Auditable source trails, claim-status tags, and controlled write boundaries.
TechAtlas / QRS
Reusable skills, graph-ready entities, Delta exports, and evaluation hooks.
| Role Requirement | Proof on This Artifact | Where |
|---|---|---|
| Unstructured data → structured representations (knowledge graphs, embeddings, linked datasets) | Ten pipelines with a shared anatomy — input → representation → analyst query → decision; PY-01 renders as a queryable knowledge graph on this page. | Pipeline Matrix ↓ |
| AI-driven workflows: LLM pipelines, retrieval systems, entity extraction, relationship mapping | Anthropic NER stage in the pipeline; ten downloadable skills covering extraction, retrieval, and relationship mapping across therapeutic areas. | Skill Layer → |
| Evaluation frameworks — and an understanding of their limitations in high-stakes settings | A named eval harness (golden sets, verbatim substring verification, retrieval metrics, judged rubrics) plus a five-row failure-mode table; deterministic tensor math owns the scoring where LLMs hallucinate ($12–$289/share Cold-Start Triplet spread). | Eval & Limits ↓ |
| Spark (PySpark), SQL, and Python | A pandas → PySpark port shown as a real diff, a medallion Delta layout, and star-schema SQL with three analyst queries; the entire POC is Python. | Scale Path ↓ |
| Dashboards and visualizations that communicate findings effectively | Danger-zone scatter and tier-rate charts below, the 9:16 exportable infographic board — and this coverage board itself. | Live below |
| Data quality and integrity — best practices in collection, processing, and storage | Provenance ledger, Pydantic validation, dedup checksums, drift alarms — and the Honesty Ledger that classifies every claim on this site. | Honesty Ledger ↓ |
| Cohesive stories and actionable narratives for the investing team | The narrative pipeline below (corpus → dispatch → infographic → dashboard), with a worked synthetic analyst note. | Narrative ↓ |
| Sustained unstructured-data work in AI systems · MA-based, Boston hybrid, US work authorization | Demonstrated by volume, not asserted by tenure: the receipts strip below (1.4M-word verified RAG corpus, governed memory system, this stack). Based in Franklin, MA — no relocation needed; authorized without sponsorship. | Receipts ↓ |
Source provenance
Requirement-to-proof rows point each claim to a rendered page surface or Skill Layer artifact.
Schema discipline
Pydantic, Delta table dry-runs, and generated SQL keep extraction outputs inspectable before writes.
Model limitation handling
LLMs assist extraction; tensor math owns high-stakes scoring where hallucinated prices would be costly.
Human review gates
Expert-judgment tags distinguish verified, background, and proposed claims before investor consumption.
Role description: “Quantitative Research and Strategy, Healthcare AI Associate,” RA Capital Management, posted Apr 17, 2026. Requirement text condensed from the posting; proof column references sections rendered on this page and the Skill Layer view.

The candidate behind the POC
Bret Kerr — AI-native research and strategy operator. This is not a defense of a non-traditional background; it is an argument that the background is the prerequisite. A decade of creative and digital-strategy leadership inside a global email-security enterprise (Mimecast, through its IPO and PE take-private) is a decade of building trust-sensitive, compliance-bounded work for a company whose entire product is handling other people's confidential data. Layer on recent applied-AI and MCP-security consulting in the cybersecurity sector — including publicly predicting the $14B cybersecurity “haircut” before the market repriced it — and hackathon-winning multi-model orchestration, and you have the exact prerequisites for building secure, hallucination-resistant AI pipelines in regulated finance. This page is the credential: every requirement of the QRS Healthcare AI Associate role has a working demonstration above.
| QRS Need | Career Proof | Proof on This Page |
|---|---|---|
| Unstructured data → structured representations | Built ContextJamming.com — an AI-native research system turning long-form research into structured chapters, metadata, and search surfaces. | SEC 10-Q / 10-K / 14D-9 text → NER → typed features → Databricks Delta tables. |
| RAG, embeddings & knowledge workflows | Hands-on Claude, ChatGPT, Gemini, Codex Code; SQLite/FTS and vector-search retrieval; cross-model review as a code-review heuristic — verification stays deterministic. | Retrieval-aware pipeline design — deterministic tensor math where LLMs hallucinate. |
| Entity & relationship mapping | Founder profiles, technical dossiers, market maps, investment-style narratives. | 50-company universe, ownership-tier classification, Kolchinsky FounderFile. |
| Trust-sensitive / regulated complexity | A decade inside a global email-security enterprise (Mimecast, IPO → PE take-private); recent applied-AI and MCP-security consulting in cybersecurity. | Semper Maior implemented exactly — Danger Zone conjunction, Core/Peripheral tiers — plus MNPI-safe governance hooks. |
| Senior stakeholder collaboration | A decade of creative and digital-strategy leadership at Mimecast, turning ambiguous executive inputs into polished, accurate outputs. | This page — an executive-ready interview artifact, built and shipped solo. |
“Bret sees around corners.”
Bret's manager as SVP, Brand & AI Strategy at Mimecast, Spring 2025 — bonded over AI research.
A skill is a one-time encoding of a workflow — the trigger conditions, the governance, the failure modes — that every analyst then inherits for free. The math compounds: if one skill turns a 45-minute recurring task into a 5-minute reviewed run, and ten analysts hit that task twice a week, that single skill returns roughly 13 hours a week to the team. This page ships ten.
Illustrative adoption model — same honesty standard as the synthetic universe above. The mechanism is real: skills committed to a repo are inherited by every teammate running Claude Code, no install step.
I am strongest where technical ambiguity, unstructured source material, AI workflow design, and executive-facing communication overlap. For RA Capital, that means transforming large bodies of text and research into structured evidence, useful retrieval surfaces, and clear analytical narratives that support investment teams operating in high-complexity healthcare AI markets.
Danger Zone Scatter + Ownership Tier M&A Rates
Danger Zone = runway < 2y ANDburn/cap > 0.25. The conjunction is what signals acute strategic necessity — a deal, dilutive financing, or cash exhaustion is imminent.
Per RA's 1H23 Semper Maior report, 98% of H1'23 M&A premiums accrued to the Core set. The 5/15/35% tier rates shown here are illustrative priors used to generate synthetic training labels for this POC — not RA empirical acquisition rates.
Core / Peripheral / Danger Zone — the published framework, automated
This automates the Core/Peripheral and Danger Zone classifications published in RA Capital's RApport series. A synthetic 13F institutional-ownership extract is cross-referenced against a specialist-investor roster: at least one specialist biotech holder makes a company Core; none makes it Peripheral. The distinction is where the capital goes — per the RApport Semper Maior series, over 98% of biotech M&A capital has flowed into Core companies.
Every dataset in this module is synthetic — invented issuers, invented holders. No real fund's positions are shown or implied. There is no LLM anywhere in this classification path: set membership and threshold arithmetic, displayed in full below.
| Holder of record | Position | Match |
|---|---|---|
| Beacon Biotech Specialists LP | $24.1M | SPECIALIST |
| Meridian Global Index | $18.6M | generalist |
| Harborlight Capital | $9.2M | generalist |
Specialist roster (illustrative): Beacon Biotech Specialists LP · Foxglove Life Sciences Fund · Sable Point Biotech Partners. Production swaps this for a maintained registry of specialist biotech investors.
| Cash & equivalents (10-Q) | $151.0M |
| Quarterly net burn | $23.5M |
| Market cap | $310.0M |
annualized_burn = $23.5M × 4 = $94.0M
cash_runway = $151.0M ÷ $94.0M = 1.61y
burn_to_cap = $94.0M ÷ $310.0M = 30.3%
runway < 2.0y ? TRUE ◄ condition met
burn/cap > 25% ? TRUE ◄ condition met
BOTH required → DANGER ZONE| Ticker | Specialists | Tier | Runway | Burn/Cap | Flag |
|---|---|---|---|---|---|
| AXBI | 1 | Core | 1.61y | 30.3% | ⚠ DZ |
| CYTR | 2 | Core | 3.75y | 6.1% | — |
| NMDL | 0 | Peripheral | 1.38y | 26.7% | ⚠ DZ |
| VLTX | 1 | Core | 4.01y | 7.7% | — |
| ORPH | 1 | Core | 1.45y | 29.3% | ⚠ DZ |
| TRBN | 0 | Peripheral | 2.71y | 6.7% | — |
| HLXP | 1 | Core | 2.86y | 31.7% | — |
| SLNT | 0 | Peripheral | 2.64y | 5.9% | — |
Framework attribution: Core/Peripheral specialist-ownership classification and the Danger Zone conjunction (<2y runway AND burn-to-cap >25%) as published in RA Capital's RApport Semper Maior series. All issuers, holders, and figures above are synthetic — the framework is real; the data is not.
You can't debug the black box with the black box
The strongest objection to AI-built pipelines: if two models share a structural blind spot, cross-model consensus won't catch it — it will confidently log the failure as a success. The answer is not a better reviewer. It is a wall.
Agents propose, gates dispose. LLMs write and refactor pipeline code. Whether that code's output is trusted is decided exclusively by deterministic, non-LLM machinery: schema contracts, mathematical invariants, golden oracles, reconciliation checks, statistical process control with hard thresholds, and a circuit breaker.
Zero LLM calls in the verification path — grep-checkable: nothing under
verification/imports a model client or the network.
Claude / Codex write pipeline code
Refactors, features, fixes
GemClaw cross-model review — a code-review heuristic, nothing more
PROPOSES →Schema contracts, nullability, ranges, key uniqueness, row-count reconciliation, sequence-gap detection on the ordered feed. (21 checks, 0 failed)
Property-based invariants (Hypothesis, derandomized): probability axioms, conjunction semantics, monotonicity, MC estimator vs closed-form oracle, KG referential integrity. (12 checks, 0 failed)
Frozen fixtures with expected outputs at explicit tolerances. Regeneration only via a human-flagged, logged command. (9 checks, 0 failed)
Each critical aggregate recomputed by an independent second implementation; |Δ| < ε asserted. Spec-design only — labeled, not faked.
PSI / KS distance vs stored baselines + CUSUM, hard thresholds pinned in thresholds.yaml. Spec-design only — labeled, not faked.
Any failure halts downstream writes (page JSON, Delta export), quarantines the batch, and emits a structured failure record. No silent retries.
| Pipeline | G1 contracts | G2 invariants | G3 goldens |
|---|---|---|---|
| sec_ingestion | ✓ 9/9 | — | — |
| universe.json | ✓ 11/11 | — | ✓ 4/4 |
| sec_ingestion → universe.json | ✓ 1/1 | — | — |
| ma_predictor | — | ✓ 2/2 | — |
| ra_metrics | — | ✓ 3/3 | ✓ 5/5 |
| ma_predictor (MC engine) | — | ✓ 3/3 | — |
| kg-triples.json | — | ✓ 3/3 | — |
| verification/tests | — | ✓ 1/1 | — |
Silently dropped row 17/50 (JMBY) from a copy of universe.json — 2% loss, no error raised → quarantine/redteam_20260704T184015Z_a92961cd_fault_a/failure_record_00_DATA-01.json
Sign flip injected into ra_metrics.compute_burn_to_cap_ratio (in-memory monkeypatch; source untouched) — lints, types, runs green → quarantine/redteam_20260704T184015Z_a92961cd_fault_b/failure_record_00_MATH-10.json
{
"taxonomy": "DATA-01",
"gate": 1,
"gate_name": "Data contracts",
"pipeline": "sec_ingestion → universe.json",
"check": "row-count reconciliation: source == sink",
"expected": "50",
"observed": "49",
"run_id": "redteam_20260704T184015Z_a92961cd_fault_a",
"context": "make redteam — injected fault_a: Silently dropped row 17/50 (JMBY) from a copy of universe.json — 2% loss, no error raised",
"input_hashes": {
"app/RACap-POC/universe.json": "359719e563ae4a885909c9260a29235c1ff49cc114da9c6f31d0f5caa97ba8dc",
"public/racap-poc/kg-triples.json": "70073d4cb85b7403f3f4d0e67204c8a734b4c3d3eccc1e4dbd2c559d5089a0e1",
"verification/thresholds.yaml": "3c7b755da3708ac909961cc8d45865ac448ee5889acda94ca90ab71005dbed8d",
"verification/golden/raw_universe.json": "9ba05c50437d383df57656107e35641c47c407b20d30e1090c58199e97a0488a",
"verification/golden/metrics_golden.json": "9f3523dcb8fc08cf42815c0e8461da92d208f42052fec19e5885a3f9c3e4f171",
"verification/golden/universe_golden.json": "359719e563ae4a885909c9260a29235c1ff49cc114da9c6f31d0f5caa97ba8dc",
"ra-danger-zone/src/ra_metrics.py": "99a44e397daa189d57d2efd3609d8a76c0bbf9febf23c8d4ad7ba3f7fa616ce8",
"ra-danger-zone/src/sec_ingestion.py": "7b991add893a4e48370cb98ca275d6e5c8001c16d41503dacc7d7918f27d09ec",
"ra-danger-zone/src/ma_predictor.py": "0e5c0763597155438eb8e777647126ae4dc2951f35f9bf90606af7e38a124a57",
"ra-danger-zone/src/db_export.py": "9f56a4971c0288a45865c365d6f9d86ffcd71eba0271e97f9727900595336d49"
},
"git_sha": "a92961cd5ca5ff4ed793419358ad217e90dd5255",
"blocked_actions": [
"app/RACap-POC/universe.json regeneration (page data)",
"Databricks Delta export (db_export.export_to_databricks)"
],
"timestamp": "2026-07-04T18:40:15+00:00"
}Stated plainly: cross-model consensus (GemClaw) stays in this repo as a code-review heuristic — useful for catching smells, never counted as verification. Gates 4–5 (dual-path reconciliation, drift SPC) are spec-design only and labeled STUBBED above; their hard thresholds are already pinned in verification/thresholds.yamlso implementing them can't silently invent tolerances. Everything green on this panel is the committed output of make verify and make redteam against synthetic seed=42 data.
Inherently safe infrastructure, not just capable infrastructure
A fund handling material non-public information needs an AI pipeline whose safety is structural, not prompted. Claude Code's PreToolUse / PostToolUsehooks are deterministic enforcement: an external script inspects every tool call and returns allow / deny / ask before the call executes. Prompt injection can rewrite a model's instructions; it cannot rewrite an external hook.
#!/usr/bin/env bash
# .claude/hooks/pretooluse-sql-guard.sh
# Wired to PreToolUse — fires on every Bash/SQL tool call
# BEFORE it reaches any database. Blocks on exit code 2.
payload="$(cat)" # hook receives tool input on stdin
sql="$(jq -r '.tool_input.command // empty' <<<"$payload")"
# Case-insensitive scan for destructive DDL/DML
if grep -iqE '\b(DROP|DELETE|TRUNCATE|ALTER)\b' <<<"$sql"; then
echo "BLOCKED: destructive statement rejected by SQL guard." >&2
echo " matched: $(grep -ioE '\b(DROP|DELETE|TRUNCATE|ALTER)\b' <<<"$sql" | head -1)" >&2
printf '%s\t%s\t%s\n' "$(date -u +%FT%TZ)" "DENY" "$sql" \
>> .claude/audit/sql-guard.log # append-only audit trail
exit 2 # exit 2 = block the command
fi
exit 0 # SELECT / read-only → allow- Prompt injection can override a system prompt; it cannot override an external exit code.
- Adherence to prompted rules decays under long-context load — a hook fires every single call.
- Subagents that never saw the system prompt still hit the same perimeter.
$ claude ▸ Bash("psql -c 'DROP TABLE gold.fact_catalyst;'")
BLOCKED: destructive statement rejected by SQL guard.
matched: DROP
↳ PreToolUse hook exited 2 — command never reached the database.
↳ appended: 2026-07-03T14:22:07Z DENY DROP TABLE gold.fact_catalyst;The same governance posture extends to memory. The SkillMemoryBank lineage — Lane 2 Best in Show at the Red Hat OpenAccelerator Agent Build Day, Boston, June 2026 — runs a local IBM Granite model to compress interaction traces into a governed MEMORY.md. That compaction stage has zero network egress: raw traces are summarized on the machine, never shipped to a cloud API. Combined with the hook perimeter above, the result is an auditable pipeline with MNPI-safe defaults — destructive writes blocked deterministically, and sensitive memory compressed locally rather than transmitted.
* Anthropic NER replaces synthetic data in production — 10-Q/10-K/14D-9 parsing via sec-edgar-downloader + Claude API entity extraction
Portfolio · Risk · Data Science · Evals · Scale Path · Governance
Each pipeline follows the same anatomy: an unstructured source, the structured representation it becomes — knowledge graph, embeddings, or linked dataset — one query an analyst would actually ask of it, and the decision it supports. The paired Claude Code skill (footer of each card) carries the governance; the workflow is the point.
Status chips grade what this page can demonstrate, not what was built elsewhere — the conservative reading. All chips resolve to the Honesty Ledger.
Four-module pipeline
def generate_universe(seed: int = 42) -> pd.DataFrame:
rng = np.random.default_rng(seed)
# Cash: log-normal skewed toward lower balances
cash_raw = rng.lognormal(mean=4.8, sigma=0.9, size=50) * 1e6
cash_equivalents = np.clip(cash_raw, 20e6, 800e6)
# Specialist ownership: bimodal (40% zeros, rest Poisson(3))
zero_mask = rng.random(50) < 0.40
counts = rng.poisson(lam=3.0, size=50).clip(1, 8)
specialist_ownership_count = np.where(zero_mask, 0, counts)
# has_cvr / has_mae from simulated 14D-9 NER pass
has_cvr = rng.random(50) < 0.28
has_mae = rng.random(50) < 0.62def classify_danger_zone(
cash_runway_years: pd.Series,
burn_to_cap_ratio: pd.Series,
runway_threshold: float = 2.0,
burn_cap_threshold: float = 0.25,
) -> pd.Series:
"""Flag Semper Maior Danger Zone — BOTH conditions required.
98% of M&A premiums flow to Core set companies.
Danger Zone = structural necessity, not opportunity.
"""
return (
(cash_runway_years < runway_threshold) &
(burn_to_cap_ratio > burn_cap_threshold)
).rename("danger_zone")class MAPredictor(nn.Module):
"""Two-layer MLP for M&A probability scoring.
Why PyTorch, not an LLM?
RA Capital's tests showed LLM "Cold-Start Triplet" hallucinations
ranging from $12–$289/share on identical assets. Deterministic
tensor math owns the scoring; LLMs handle SEC text extraction.
"""
def __init__(self) -> None:
super().__init__()
self.net = nn.Sequential(
nn.Linear(5, 32), nn.ReLU(), nn.Dropout(0.3),
nn.Linear(32, 16), nn.ReLU(), nn.Dropout(0.3),
nn.Linear(16, 1), nn.Sigmoid(),
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.net(x)def export_to_databricks(df: pd.DataFrame, dry_run: bool = True) -> None:
"""Export scored universe to Databricks Delta table.
Free Edition constraints:
- No persistent clusters → local PyTorch, push result set only
- 15GB storage limit → sufficient for rolling snapshot history
- No Databricks Jobs → schedule externally (Airflow / Claude Code CLI)
"""
if dry_run or not _check_env():
print(_CREATE_DDL)
print(f"INSERT INTO {_TABLE} ...")
return
with dbsql.connect(hostname, http_path, access_token) as conn:
cursor.execute(_CREATE_DDL)
cursor.execute(f"TRUNCATE TABLE {_TABLE}")
cursor.execute(f"INSERT INTO {_TABLE} ...")POC → QRS production infrastructure
| Component | This POC | Production (QRS) |
|---|---|---|
| Data ingestion | NumPy synthetic | sec-edgar-downloader + Anthropic NER |
| Storage | Local DataFrames | Databricks Delta Lake (paid tier) |
| ML training | Local PyTorch | MLflow on Databricks + hyperparameter sweep |
| Scheduling | python main.py | Airflow DAG or Claude Code CLI cron |
| Model versioning | None | MLflow Model Registry |
| Governance | Dry-run SQL logs | Unity Catalog + lineage tracking |
pip install -r requirements.txt
python main.py
# Options
python main.py --epochs 200 --output-dir ./results
python main.py --no-dry-run # requires Databricks env varsA structured representation the investment team can query
PY-01 turns biomedical text into typed entities and relationships: company, target, indication, trial, and mechanism. This demo ships as a static JSON graph and renders entirely in the browser. It has no live Neo4j dependency and carries the conservative label the page promises: implemented on synthetic data.
Static asset: /racap-poc/kg-triples.json · node color by entity type · click a node for its triples · filters run client-side.
From corpus to cohesive stories: the narrative pipeline
The JD asks for cohesive stories and actionable narratives for the investing team. The Semantic Triple Transformation pattern is the communication layer: research is structured once, then rendered into the right artifact for the decision. In a fund setting, benchmark deltas matter only when they change a workflow, a screen, or a risk posture.
Research corpus
Public filings, trial registries, literature, market notes, and analyst questions enter as source material.
Semantic triples
Entities and relationships become portable claims: company, target, indication, trial, mechanism, evidence.
Narrative outputs
The same structured payload can become an analyst note, longform dispatch, infographic JSON, dashboard, or briefing memo.
Distribution surface
The final artifact is tuned to the decision venue: investment meeting, diligence dashboard, partner update, or public proof.
A synthetic complement-biology readout moved from “interesting” to “position-review required” after the graph linked the sponsor, C5aR1 mechanism, and PNH indication to a near-term trial node. The structured data does not make the investment call; it narrows the question. The uncertainty band remains wide because the evidence is registry-level and lacks validated efficacy deltas. The action is therefore not “buy” or “sell.” It is a diligence queue: verify freshness, compare mechanism neighbors, inspect ownership tier, and decide whether the event belongs on the risk calendar.
The LLM proposes; the deterministic layer disposes
A VC financial model cannot run on stochastic outputs. This architecture visibly decouples the two: a probabilistic model extracts entities and relationships from unstructured filings, and a deterministic rule layer — not a model — adjusts the Probability-of-Success score by explicit, auditable percentages. The extraction is allowed to be fuzzy; the calculus is not.
“…the tender offer values each share at $47.00 in cash, plus one non-tradeable contingent value rightper share. The Company's lead asset, zavolimab, did not meet its Phase II primary endpointin the ORION-2 study, though a pre-specified secondary showed…”
(sponsor: Corvex Bio)
──[acquires_via_tender]──▶ (target: Halcyon Rx)
(target: Halcyon Rx)
──[develops]──▶ (drug: zavolimab)
(drug: zavolimab)
──[failed_endpoint]──▶ (Phase II primary)
(deal: 14D-9)
──[includes]──▶ (structure: CVR)Fuzzy by design — the model reads text. Its output is a proposal, not a number the model is trusted to compute.
| ▶ Phase II primary endpoint miss | −18% |
| ▶ CVR (contingent value right) present in 14D-9 | +6% |
| ○ Material Adverse Effect clause flagged | — |
| ○ Specialist-investor Core holder on register | — |
base_PoS = 0.41
endpoint miss −0.18
CVR present +0.06
─────────────────────────
grounded_PoS = 0.29The failure this prevents: an LLM asked to “score” the deal directly can hallucinate a Probability-of-Success anywhere in a wide band on identical text. Here the model never touches the arithmetic — it proposes structured facts, and a deterministic layer disposes the score. Excerpt, drug, and sponsor are all synthetic.
Evaluation frameworks — and their limitations in high-stakes settings
An AI workflow an investment team can trust is an evaluated workflow. This is the harness around every pipeline on this page — each component graded honestly: implemented with a receipt, implemented on synthetic data, or spec.
Citation faithfulness — verbatim substring verification
ImplementedEvery generated claim must substring-match its source document verbatim, or it gets flagged before a reader ever sees it. This is not a spec: the mechanism is built and deployed in the Anthropic Book corpus project on this domain — 727 source documents, a ~1.4M-word corpus, embedding-based retrieval, and the verifier gating every citation. The RACap-POC adopts the same verifier as its faithfulness gate: a generated insight that cannot point to its exact source text does not ship to an analyst.
Golden-set regression
SpecA curated set of question → expected-answer pairs per pipeline, versioned alongside the code. Deploys gate on passing — a retrieval change that silently breaks the danger-zone screen fails CI before it reaches the investment team. Spec, honestly labeled: the sets are designed but not yet curated.
Retrieval quality metrics
SpecRecall@k and MRR against the golden set, reported per pipeline — because a RAG system that retrieves the wrong filings answers confidently from the wrong world. Depends on the golden sets above, so it inherits their spec status.
LLM-as-judge with rubric + human spot-check ratio
SpecRubric-scored judge models for qualities substring checks cannot catch — coherence, completeness, tone. Known limitation, stated up front: judge-model bias and rubric drift are real; that is exactly why a fixed human spot-check ratio exists rather than trusting the judge unsupervised.
Deterministic governance — Claude Code lifecycle hooks
ImplementedPreToolUse/PostToolUse hooks as enforcement, not suggestion: allow / deny / ask decisions with full audit logging, built into the skill layer's governance rail and the SkillMemoryBank governance layer. Deterministic hooks beat prompt-only guardrails for financial and clinical data for three reasons: prompt injection can rewrite a model's instructions but not an external hook; adherence to prompted rules degrades under long-context load while a hook fires every time; and subagents that never saw the system prompt still hit the same perimeter.
| Failure mode | Why it matters at an investment firm | Mitigation in this stack |
|---|---|---|
| Hallucination under sparse retrieval | False confidence exactly where evidence is thinnest — early-stage assets, rare indications | Verbatim substring verifier + abstention threshold: no matched source, no claim |
| Temporal drift / knowledge cutoff | A stale catalyst date or superseded trial status quietly poisons an event calendar | Per-record provenance timestamps + freshness alarms (data-quality section below) |
| Entity-linking ambiguity — ticker vs. molecule vs. program name | Insights attributed to the wrong company or asset; the worst kind of confident error | Linked-dataset IDs + a disambiguation pass in the knowledge-graph pipeline |
| Silent schema drift in upstream sources | A renamed field corrupts every downstream mart without a single loud failure | Pydantic validation at ingestion + drift alarms before writes reach silver/gold |
| Overconfident point estimates | A single P(M&A) number invites mis-sized positions | Uncertainty surfacing — MC-Dropout std bands in ra-danger-zone — and a decision-support, not advice, posture |
Calibration humility: the METR 2025 randomized controlled trial found experienced developers using AI tools were 19% slower on familiar codebases — which is why this stack measures its productivity and quality claims instead of assuming them.
And the intellectual anchor: the Expert Judgment Layer on this page covers the Thinking Machines Lab / Bridgewater result — the strongest public evidence that replicating expert judgment is an evaluation problem before it is a modeling problem. The fine-tune won because the team could measure expert agreement precisely enough to train against it.
Spark (PySpark), SQL, and Python — the same logic at universe scale
Python is everywhere on this page. This section shows the other two-thirds of the JD's stack line: the danger-zone feature computation ported pandas → PySpark as a real diff, the Delta storage layout it would run against, and the SQL an analyst would put on top. The point is fluency, not a claim of production deployment.
# src/ra_metrics.py — pandas
# (this is what scores the universe on this page)
result["cash_runway_years"] = (
result["cash_equivalents"] / result["annual_burn_rate"]
)
result["burn_to_cap_ratio"] = (
result["annual_burn_rate"] / result["market_cap"]
)
result["danger_zone"] = (
(result["cash_runway_years"] < 2.0) &
(result["burn_to_cap_ratio"] > 0.25)
)
result["ownership_tier"] = result[
"specialist_ownership_count"
].map(_tier)
result["below_cash"] = (
result["market_cap"] < result["cash_equivalents"]
)# src/ra_metrics_spark.py — PySpark
# (same logic, declared for a full-universe Delta lake)
df = (
df.withColumn("cash_runway_years",
F.col("cash_equivalents") / F.col("annual_burn_rate"))
.withColumn("burn_to_cap_ratio",
F.col("annual_burn_rate") / F.col("market_cap"))
.withColumn("danger_zone",
(F.col("cash_runway_years") < F.lit(2.0)) &
(F.col("burn_to_cap_ratio") > F.lit(0.25)))
.withColumn("ownership_tier",
F.when(F.col("specialist_ownership_count") == 0, F.lit(0))
.when(F.col("specialist_ownership_count") <= 2, F.lit(1))
.otherwise(F.lit(2)))
.withColumn("below_cash",
F.col("market_cap") < F.col("cash_equivalents"))
)
# spark-submit --master 'local[2]' src/ra_metrics_spark.pyWhat actually changes at scale: the pandas version makes five sequential in-memory passes; the Spark version declares five narrow, partition-local transformations that Catalyst fuses into one code-generated stage, executed lazily at the first action — and the only shuffle in the whole job is the final tier aggregate. Partitioning and shuffle placement, not syntax, are the real port.
Target production layout, consistent with the existing Delta export in ra-danger-zone (db_export.py) — bronze keeps the evidence, silver earns the trust, gold answers the questions.
-- illustrative star schema — synthetic data
CREATE TABLE IF NOT EXISTS gold.fact_catalyst (
catalyst_id BIGINT,
company_key BIGINT, -- -> gold.dim_company
trial_key BIGINT, -- -> gold.dim_trial
program_key BIGINT, -- -> gold.dim_program
mechanism_key BIGINT, -- -> gold.dim_mechanism
event_type STRING, -- readout | pdufa | adcom | loe
expected_date DATE,
confidence DOUBLE, -- provenance-weighted
source_url STRING, -- per-record provenance
retrieved_at TIMESTAMP,
content_hash STRING
) USING DELTA;
-- dim_company / dim_trial / dim_program / dim_mechanism
-- follow the same pattern: surrogate key, natural ids,
-- slowly-changing attributes, provenance columns.SELECT c.ticker, f.event_type, f.expected_date
FROM gold.fact_catalyst f
JOIN gold.dim_company c USING (company_key)
JOIN holdings h ON h.ticker = c.ticker
WHERE f.expected_date
BETWEEN current_date() AND date_add(current_date(), 90)
ORDER BY f.expected_date;What an analyst learns: The next 90 days of binary-event exposure across the book, in one pass — the trial-readout calendar builds itself.
SELECT c.ticker, m.cash_runway_years,
m.below_cash, m.ownership_tier
FROM gold.semper_maior_metrics m
JOIN gold.dim_company c USING (company_key)
WHERE m.below_cash AND m.ownership_tier = 2 -- Core+
ORDER BY m.cash_runway_years;What an analyst learns: Core+ names the market prices below their own cash — the mispriced-optionality screen. Reuses the ra-danger-zone below_cash flag scored on this page.
SELECT mech.mechanism,
COUNT(DISTINCT p.company_key) AS names,
SUM(c.market_cap) AS cluster_cap
FROM gold.dim_mechanism mech
JOIN gold.dim_program p USING (mechanism_key)
JOIN gold.dim_company c USING (company_key)
GROUP BY mech.mechanism
HAVING COUNT(DISTINCT p.company_key) >= 5
ORDER BY cluster_cap DESC;What an analyst learns: Where the (synthetic) universe crowds into the same mechanism — a correlation and crowding lens before adding a correlated name.
The QRS team lives in Databricks, PySpark, and Snowflake. The top-of-page receipt links to a real Free Edition Delta table and published dashboard; the terminal below remains a SIMULATED stream showing how the production export would report schema checks, parquet writes, and Delta commits.
The scored universe writes to a Databricks Delta table with schema enforcement and tier partitioning. Open the export to watch the (simulated) PySpark job stream its logs — schema check, JSON → Parquet, partition write, and the version commit. This log is illustrative — the same medallion path now runs live on Databricks Free Edition (see receipt above).
A self-service PM tool built on the pipeline's gold-layer output.
If the embed above stays blank, the host is blocking iframe embedding — use the button instead.
Verifiable artifacts mapped to the JD
This strip carries the unstructured-data requirement through proof volume and inspectable artifacts. No tenure claim, no inflated numbers, no private-client details.
Data quality and integrity: collection, processing, and storage
The stack is designed around a simple discipline: the analyst should know where a claim came from, when it was retrieved, how it was transformed, and whether it is production-real, synthetic, or design-only.
Partial-schema-tolerant Pydantic validation
PY-01 tolerates missing fields without silently accepting malformed records; invalid edges stay out of the graph.
Deduplication + content checksums
Every bronze record carries a SHA-256 content hash; silver deduplicates on it before validation.
Per-record provenance ledger
Source URL, retrieval timestamp, parser version, content hash, and claim lineage travel with the record.
Schema-drift alarms
Unexpected field loss, type changes, or enum expansion should stop writes before silver/gold tables update.
Medallion storage layout
Live on Free Edition: bronze keeps raw + provenance, silver enforces five CHECK expectations with a quarantine sibling, gold feeds the published dashboard.
Golden-set regression check
A SQL assertion verifies gold-layer counts and tier means against the published seed=42 summary before anything ships.
Human review gates
The current page separates verified, background, synthetic, and spec claims before a reader consumes them.
Storage note
The storage layout references the medallion diagram in Scale Path: bronze for raw public sources, silver for parsed and validated records, gold for analyst-queryable marts feeding dashboards and retrieval workflows.
What each claim class means
The chips across this page grade evidence, not ambition. A claim is either linked to a production-real receipt, implemented on synthetic data, or a design that would need institutional data and review before production use.
Production-real / linked receipt
Implemented on synthetic data
The first 90 days on QRS
The plan is deliberately institutional. A useful QRS workflow is not just a good demo; it is a governed system that matches how the investing team actually works.
Map the institution before shipping
Learn RA's actual data estate, compliance perimeter, and the investment team's real query patterns. Inventory tooling, source systems, and current dashboards. Ship nothing broad; map everything carefully.
Ship one narrow eval-gated workflow
Choose one retrieval workflow with the investment team, wire provenance from day one, and add the substring-verifier faithfulness gate before anyone treats the output as decision support.
Operationalize and hand off
Move golden-set regression into CI, bring the provenance ledger live, document the workflow, and make sure the system survives without its author sitting next to it.
One pipeline is a demo. Three interlocking systems are a practice.
ra-danger-zone is one output of a larger research architecture I build and operate in public. The same discipline on this page — typed classification logic, validation gates, honest synthetic labels — runs at system scale across three live builds: a recursive research orchestrator, a preference-data labeling harness, and the open-source skill arsenal that powers both.
Why it matters for RA Capital: the loop is the research throughput engine, the labeler is the data-quality economics, and the skills are the distribution mechanism. Each one gates its own output before a human sees it — the same posture an investment team needs from any AI system it trusts.
Architectural Determinism: from expert-agent orchestration to a formal AI/physics thesis.
A second proof point for RA Capital is not another web artifact; it is the research method behind it. I conducted an independent academic research program that connected theoretical physics, cognitive neuroscience, and frontier AI architecture, then turned that work into a LaTeX-orchestrated preprint, public explainer, diagrams, and audio overview.
The project asks whether the doctoral priors behind frontier AI labs reappear as system architecture: Hassabis's UCL work on scene construction as a bottom-up simulation engine for DeepMind, and the AdS/CFT/holography lineage around Constitutional AI as a boundary-condition model for Anthropic-style alignment. The claim is framed as an isomorphism to test and qualify, not a loose metaphor to admire.
The work received endorsement from Dr. Herbert Roitblat, Chief Data Scientist Emeritus at Mimecast. I treat that as a serious expert signal, while keeping the artifact labeled as independent research rather than peer-reviewed publication.
RA Capital relevance: this is the same muscle the QRS role needs — convert unfamiliar technical domains into explicit claims, audit the evidence, use frontier models as research instruments, and ship the result in a form experts can challenge.
Read the case study →Field report · AI biology · July 2026
The Silicon Synthesis
A field report on the moment biology stopped behaving like a descriptive archive and started behaving like an engineering surface.
I. The Hit Rate
Spring arrived in a 96-well plate.
Chai Discovery's spring 2026 demonstration had the grammar of a small lab note and the consequence of a new operating system. One 96-well plate. A target with no prior functional binder. A set of proposed antibodies sent into the wet lab. Then the result: 20% bound. In a field where historical computational baselines treated de novo antibody binding as a near-miracle, the signal read like a discontinuity.
The number is the story because the plate was not a visualization. It was a physical adjudicator. The proposed leap was about 100× over the historical baseline, and the crucial word is over. The model did not merely summarize literature. It made a bet about molecular reality, then reality answered.
Biology is no longer only a body of descriptions. It is becoming a medium engineers can compile against.
II. The Engineering Turn
The limiting factor moved.
The old biology was a descriptive science because its deepest objects were too small, too dynamic, and too interdependent to command. The question was whether a mechanism existed at all. Now the question has shifted. The limiting factor is less often biological risk in the old sense and more often data quality, computational fidelity, and whether the model has seen enough of life's state space to generalize.
That is why the AI biology story belongs on an RA Capital proof artifact. It is a market-structure story disguised as a lab story. When biology becomes data plus compute, the moat moves: from owning a hypothesis to owning the feedback loop that tells the hypothesis when it is wrong.
III. The Bitter Lesson
Anton lost to the general machine.
David Shaw's Anton represented one theory of biological computation: hand-coded molecular dynamics burned into specialized silicon, a machine built to simulate physical motion from first principles. AlphaFold 3 represented the other theory: diffusion plus Pairformer, running on commodity GPUs, learning from the shape of biological data itself.
The Bitter Lesson in the wet lab is not that physics stopped mattering. It is that scalable learning systems learned to carry more of the physics than the hand-built machinery could encode. Boltz-1/2 from MIT Jameel Clinic delivered open-source AF3-class performance. Isomorphic's IsoDDE pushed further by modeling induced fit, outperforming AF3 by 2.3× on antibody-antigen prediction. The center of gravity moved from specialized machines to general systems trained against enough biology.
IV. Scaling Laws Meet Metagenomics
The training set became the planet.
Evolutionary Scale's ESMC models were trained on 2.8–6.8B raw environmental sequences. The ESM Atlas now holds more than 1.1B predicted structures. The importance of the metagenomic turn is not just volume. It is distribution. Raw environmental sequence pulls the model out of curated human databases and into the grammar produced by evolution itself.
Then the black box started giving up recognizable parts. Sparse autoencoders applied to the 6B-parameter ESMC, expanding a 2,560-dimensional hidden state into a 16,384-dimensional codebook at layer 60, spontaneously isolated the nucleophilic elbow, catalytic triads, Rossmann folds, and P-loops. On 4,868 SwissProt microbial enzymes, the result was 78.9% top-1 enzyme function accuracy, 37.6% over sequence-ML baselines and approaching BLASTp.
The model did not memorize the protein universe. It found handles inside it.
V. The Virtual Cell
From protein maps to cellular weather.
The Chan Zuckerberg Initiative's Virtual Biology Initiative is the systems-level version of the same bet: build models that can reason across cells, perturbations, and species instead of stopping at single proteins. Its commitment is $500M toward the data foundation for AI-accelerated biology.
TranscriptFormer trained on 112M cells across 12 species and 1.53B years of evolution, then showed zero-shot behavior on rhesus and marmoset. rBio adds a reasoning layer trained with reinforcement learning and soft biological-accuracy rewards. This is the Virtual Cell idea in miniature: not a single model, but a stack where simulated perturbation, cellular state, and natural-language explanation begin to share a common surface.
VI. Agentic Science and the Taste Bottleneck
The agents can read. Taste is harder.
DeepMind's Co-Scientist uses an Elo tournament to rank and refine hypotheses. Future House and Edison Scientific's Kosmos has read 1,500 papers, executed 42,000 lines of code, and produced a fully cited report in a single run. The direction is unmistakable: the scientific method is being unbundled into search, critique, experiment design, execution, and synthesis.
But interpretation remains stubborn. Experts agree only about ~70% of the time on complex biological interpretation. That is the taste bottleneck. RLHF can reward a plausible answer, but the frontier question is whether a system can learn the judgment that distinguishes an elegant dead end from a program of work.
VII. The Data Wall and Wet-Lab Moats
Data quality becomes strategy.
The strongest AI biology companies are not only model companies. They are data-loop companies. Edison and Incyte point toward a compounding feedback loop, where proprietary experiments improve the system that chooses the next experiment. AbInitio's proprietary biomanufacturing data suggests a different moat, closer to process intelligence than target discovery. CZI's Billion Cells effort with 10x, Ultima, and Scale Bio pushes the public-data side of the same thesis.
Focused Research Organizations fill the middle. Cultivarium, Parallel Squared, and E11 Bio are not merely philanthropic curiosities. They are infrastructure repairs: tools and datasets that academia struggles to maintain, venture capital struggles to justify, and the next generation of biological models may require.
VIII. Programmable Biology in the Clinic
The proof has to leave the screen.
The clinic is where programmable biology stops being a metaphor. Four rows matter because they are not concept art. They are named assets, named targets, and named stages moving through the slow machinery of medicine.
The lesson for investors is not that every computational molecule works. The lesson is that the translation surface is now visible: design, bind, validate, manufacture, dose, measure, and feed the result back into the system.
IX. Coda
The failure rate becomes a systems problem.
The 90% clinical failure rate does not vanish because a model can generate a binder. It becomes, in principle, a computational problem: toxicity, off-target effects, developability, patient stratification, trial design, and manufacturing constraints all become surfaces to model, test, and improve.
The institutions that treat biology as data plus compute will define the next era of medicine. The institutions that treat it as a prettier literature search will miss the turn. The Silicon Synthesis is the moment the laboratory, the model, and the capital stack begin to share one grammar.
Three questions for the QRS team
A POC is a set of answers; the better signal is the quality of the questions behind it. These are the three I would want to work through with the team in the first weeks — each one is a real fork in the architecture, not a rhetorical flourish.
What accuracy bar does the team hold extraction to on the hardest documents — 14D-9 deal terms and binary trial readouts — and how is that measured today? The deterministic-grounding split-view on this page assumes the extraction is fuzzy and the calculus is not; I want to calibrate that threshold to how QRS already grades it.
Where does a static TechAtlas landscape map stop earning its keep and a dynamic, queryable knowledge graph start? The PY-01 graph here is one answer; I want to understand which questions the team wishes it could ask of the map but currently cannot.
For high-stakes triage, where does the team draw the line between a fine-tuned open-weight model (the CISPO / Tinker path above) and a commercial API — on cost, on MNPI containment, on the ability to preserve minority-token reasoning signal? This is the most consequential architecture decision and I would rather debate it than assume it.
Biotech M&A 2026 Playbook
An AI-generated video walkthrough (NotebookLM) built from RA Capital's Semper Maior 2026 report — the same thesis this pipeline encodes into Danger Zone and ownership-tier signals.
Public-data decision-support artifact
All data shown is synthetic or from public sources; no material non-public information is used or sought. Outputs are decision-support infrastructure, not investment advice or recommendations. Built independently; no RA Capital confidential information was used. RA Capital and division names are referenced for illustrative mapping only; trademarks belong to their owners.
In memory of Dr. Bret Ratner (1893–1957), immunologist and pioneer of pediatric allergy research — proof that betting on rigorous science to improve human health runs in the family. → founder-files/ratner