Skip to content
MBiotech.
Drybench Pipeline product page

Docs and methods

Drybench Pipeline.

How the pipeline app queries ClinicalTrials.gov and openFDA, classifies modalities and quotes the historical odds, what it lets you take away, how its code is checked and what it sends where.

Updated 5 October 2026 · v0.1.0

Methods

What the app shows, how it works and how it was built, in the words of its own write-up, followed by the parameter defaults and the data sources with their licences.

What it shows

Pick a disease and the explorer shows the commercial shape of its drug pipeline: how many trials sit at each phase and whether they are recruiting, finished or stopped; which modalities (small molecules, antibodies, cell and gene therapies and so on) have been tested over time; who sponsors the work; how long completed trials took; and why stopped trials stopped.

Beside the live trials it lists the US-approved products whose labels mention the condition, and it sets the pipeline against history: the likelihood of FDA approval from each phase, which the report computes from the phase transitions it recorded between 2011 and 2020, by disease area and by modality.

How it works

Trials come live from the ClinicalTrials.gov API (version 2). The search sends your condition as query.cond and limits results to interventional studies with a drug, biologic or genetic intervention; phase, status, sponsor class and start-year filters are added to the same request. Only 15 fields are requested, 1,000 trials per page, newest start date first, and at most 10 pages are loaded, so the tool always says how many of the matching trials it analysed. Everything else, from the charts to the medians, is computed in your browser.

Each intervention is given a modality from its name. The tool reads keywords such as vaccine and CAR-T, spots antibody-drug conjugates from their two-part names, and otherwise uses International Nonproprietary Name stems: -mab for monoclonal antibodies, -tinib for kinase inhibitors, -siran for siRNA, -rsen for antisense drugs, -cel for cell therapies and 146 more. Names that match nothing, such as company codes, are shown as unclassified rather than guessed. Radiolabelled tracers and contrast agents are marked as diagnostic, and trials that test only those are set apart from the charts.

Approvals come from openFDA: a label search on the Indications and Usage section, counted by application number (brand-name, biologic and generic applications separately, because each count returns at most 1,000), then Drugs@FDA for the sponsor, the original approval date and the marketing status, and the NDC directory for products Drugs@FDA does not cover. Where a label's indications contain a negative phrase, the tool reads them sentence by sentence and flags labels that mention the condition only to rule it out. openFDA cannot search Greek letters, so for a condition such as β-thalassaemia (β-thalassemia on US labels) the tool also searches the other words and keeps the labels whose indications name the condition with the letter. The historical odds are figures from the BIO, Informa Pharma Intelligence and QLS Advisors report on 2011 to 2020, which counted 12,728 phase transitions in company-sponsored programmes.

How it was built

Every API parameter, field name and enum value was checked against the live services before use. A Python script parses the success-rate tables from the report's PDF text rather than retyping them, then checks each value against a second place in the report (its charts) and checks that every likelihood of approval equals the product of its phase rates. A second script checks all 151 naming stems against the WHO stem book.

A Node script saves dated snapshots of the seven example searches, using the same code as the page, so the tool can fall back to them if ClinicalTrials.gov is down or slow. It also does two jobs too heavy for a browser: it reads the wording of every matching label, and it traces labels that openFDA links to no application through the NDC codes printed on them; the page reuses both results for the examples. The classifier, the stop-reason grouping, the label checks, the query builders and the aggregations have unit tests, and the charts are hand-written SVG with keyboard-readable values and a data table behind each one.

Parameter defaults

Trials per search
1,000 trials per page, newest start date first, at most 10 pages; the page always says how many of the matching trials it analysed.
Study scope
Interventional studies with a drug, biologic or genetic intervention.
Modality naming stems
151 International Nonproprietary Name stems, checked against the WHO stem book; names that match nothing are shown as unclassified.
Historical odds
The BIO, Informa Pharma Intelligence and QLS Advisors report on 2011 to 2020 (12,728 phase transitions), quoted with its citation.
Saved snapshots
Dated snapshots of the seven example searches, shown only while they are 60 days old or less.

Data sources, licences and versions

Sources and licences

  • ClinicalTrials.gov API v2ClinicalTrials.gov Terms and Conditions: no charge; attribute the source, keep the data current, show the processing date and state modifications (the data carry copyright outside the US)

    Live trial records: phase, status, dates, sponsor, enrolment, interventions and stop reasons

    Source: ClinicalTrials.gov, U.S. National Library of Medicine, with the ClinicalTrials.gov processing date shown in the tool (or, if that is unavailable, the retrieval time). Modified by this site: records are filtered to interventional drug, biologic and genetic trials, aggregated and labelled with a modality, and trials that test only an imaging agent are set apart from the counts; titles, sponsors and stop reasons are as registered, though long stop reasons are shortened in a chart's data table. Saved snapshots are dated and are not shown once they are more than 60 days old.

    ClinicalTrials.gov terms and conditions

  • openFDA drug label, Drugs@FDA and NDC endpointsCC0 1.0

    US-approved products whose label indications mention the condition, with sponsor, approval date and marketing status

    Data from openFDA, U.S. Food and Drug Administration. Not endorsed by the FDA.

  • BIO, Informa Pharma Intelligence and QLS Advisors: Clinical Development Success Rates 2011–2020 (February 2021)No reuse licence; © BIO, QLS Advisors and Informa UK Ltd 2021. Figures quoted with attribution

    Phase success rates, likelihood of approval by area and modality, and phase durations (Figures 2, 5b, 6, 7, 8b, 10b, 17)

    Thomas D, Chancellor D, Micklus A, LaFever S, Hay M, Chaudhuri S, Bowden R, Lo AW. Clinical Development Success Rates and Contributing Factors 2011–2020. BIO, Informa Pharma Intelligence and QLS Advisors, 2021. Figures are quoted with attribution; the report is not redistributed.

  • WHO: Use of stems in the selection of INN for pharmaceutical substances, 2024CC BY-NC-SA 3.0 IGO (reference only)

    The naming stems behind the modality classifier, checked stem by stem against Part II B. The short class labels are the tool's own; a few are standard class names (such as tyrosine kinase inhibitor) that the book also uses

    WHO. Use of stems in the selection of International Nonproprietary Names (INN) for pharmaceutical substances, 2024. Geneva: World Health Organization; 2024. Licence: CC BY-NC-SA 3.0 IGO.

Times on screen are local time with the UTC offset; times in exports are UTC. Dates with no time are shown at the precision the source gave them.

Exports

Today the app has no file export. What you can take away is the address, whose ?condition= link (with any filters) reopens the same search, and each chart's data table, which sits behind the chart in the page. ClinicalTrials.gov's data date and the app's modifications are stated beside the results.

Release gate: before the app leaves the preview, its exports and printed reports will carry the data versions, parameters, limits and a timestamp needed to reproduce a result, as the regulatory position says. This section will describe each format as it ships.

Verification

Each module below is a set of automated tests in the app's source code, with the expected results written into the tests. They check the app's logic against recorded inputs and stored reference records; none of them calls a live service.

src/components/tools/drug-pipeline-explorer/success.test.ts
The shipped success-rate figures match the report, every group has four phase rates and four likelihoods of approval, presets map to report groups that exist, and thin evidence is flagged.
src/components/tools/drug-pipeline-explorer/modality.test.ts
The modality classifier: antibodies under old and new naming schemes, antibody-drug conjugates, small molecules by stem, peptides, nucleic-acid drugs, cell and gene therapies, vaccines, placebos and diagnostic agents, names that stems misread, and a well-formed rule table.
src/components/tools/drug-pipeline-explorer/ctgov.test.ts
The ClinicalTrials.gov query: filters combined into one request, paging tokens, cleaned condition text, partial dates, phase buckets and the parsing of a page of studies.
src/components/tools/drug-pipeline-explorer/openfda.test.ts
openFDA label searches (phrases, possessives, accents and Greek letters), application counts, Drugs@FDA and NDC fallbacks, label wording that rules a condition out, and parent names without salt words.
src/components/tools/drug-pipeline-explorer/aggregate.test.ts
Quantiles, status groups, durations from completed trials with actual dates only, the breakdowns by phase, period, sponsor and modality, and tracer-only trials set apart.
src/components/tools/drug-pipeline-explorer/why-stopped.test.ts
Stop reasons grouped by the first matching rule, with mentions that are not the reason and denials left out.
src/components/tools/drug-pipeline-explorer/filters.test.ts
Filter checks with the failing input named, and filters that round-trip through the address with bad values dropped.
src/components/tools/drug-pipeline-explorer/snapshot.test.ts
Snapshots older than the limit are not shown, and shipped snapshots carry their terms.
pipeline/drug-pipeline-explorer/extract_bio2021.py and verify_stems.py
Build-time checks: the report's tables parsed from its text and checked against its charts, every likelihood equal to the product of its phase rates, and all 151 stems checked against the WHO stem book.

Release gate: before the app leaves the preview, each release will publish a verification dataset with expected outputs on this page, so you can run your own checks. None has been published yet.

Security overview

The app is a set of static files that runs in your browser, with no account and no server of ours in the data path. The privacy statement, the hosts it contacts and the headers its workspace is served with are generated from its registry entry, the same record that sets the browser's policy.

What leaves your browser

What leaves your device. Requests for Drybench Pipeline's own files (pages, scripts, data files and images) go to the host that serves it. That host keeps standard web-server logs (IP address, user agent, requested address, time). Anything in the address bar before the # (a search, a SMILES, an accession or a step) is sent to this site's host when a page loads or a link is opened; anything after the # is not sent. The conditions and filters you search go directly from your browser to the public services in the table below, exactly as if you used their websites; they see those identifiers and your IP address, under their own terms. Nothing else leaves your device: the app carries no analytics and no error reporting, loads no font or script from any other origin, and there is no server of ours in the data path.

What never leaves your device. Anything you save in the app, your preferences, and anything you have not chosen to export or share. They live in this browser's storage on this device.

Where you choose to send data. A link you copy carries what you were looking at (the condition and filters); anyone who receives it can read it, and mail and chat tools may fetch the link to show a preview. A file you export or share goes wherever you send it.

Hosts the app contacts

  • clinicaltrials.gov

    Operator
    U.S. National Library of Medicine
    What for
    Trial records for the condition and filters you search, and the registry's processing date.
    What it receives
    the condition and filters you search
    When
    on lookup
  • api.fda.gov

    Operator
    U.S. Food and Drug Administration
    What for
    US drug labels that name the condition, with the Drugs@FDA and NDC records of their applications.
    What it receives
    the condition you search, and application and product codes taken from openFDA's own answers
    When
    on lookup

Headers the workspace is served with

These are the exact header values, generated from the app's registry entry.

Content-Security-Policy
default-src 'self'; script-src 'self' 'unsafe-inline'; worker-src 'self' blob:; connect-src 'self' https://clinicaltrials.gov https://api.fda.gov blob:; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'
Referrer-Policy
no-referrer
Permissions-Policy
camera=(), microphone=(), geolocation=(), payment=(), usb=()
X-Content-Type-Options
nosniff
Cross-Origin-Opener-Policy
same-origin

Limits

  1. 1. Not medical or investment advice. The success rates are industry-wide historical averages for company-sponsored programmes seeking FDA approval between 2011 and 2020. They are not a forecast for any trial, drug or company, and the report counts drug programmes rather than trials.
  2. 2. The condition mapping behind the odds is this tool's own choice; the report does not publish which indications sit in each disease area. You can pick a different group.
  3. 3. Trial records are entered by sponsors. Statuses can lag, dates can be estimates, and the condition search uses ClinicalTrials.gov's own matching, which can include trials where the condition is not the main focus.
  4. 4. Searches with more than 10,000 matching trials analyse the 10,000 with the latest start dates, and the tool says so.
  5. 5. Modalities come from drug names. Many interventions have no stem (company codes, older drugs), so they stay unclassified, and a stem describes how a name was built, not how every product is made. ClinicalTrials.gov registers radiotracers and imaging agents as drugs; the tool sets them apart as diagnostics but can miss tracers named only by a company code.
  6. 6. Durations use completed trials with actual start and primary completion dates only, so trials that stopped early are not in them. They measure single trials, not the years a drug spends in development.
  7. 7. Approvals are US FDA only and are matched on label wording, so they can include passing mentions and miss differently worded labels. openFDA links some current labels to no application: the example searches trace those through the NDC codes on the label, other searches only count them. A label is flagged when every mention of the condition in it rules the condition out; every label is checked for the examples, and up to 12 applications for other searches. A discontinued product's label can stay in openFDA. The date shown is the original approval of the product's application, which can predate the approval for this condition.
  8. 8. The saved snapshots cover the seven example searches with default filters. They were saved on 28 September 2026 (ClinicalTrials.gov data of 25 September 2026), keep only the 100 most recently started trials for the list, and are not shown once they are more than 60 days old.

Next step

Want this tuned to your pipeline?

Email m.beale@me.com with what you need, or use the contact page.

Available from September 2026 for full-time roles and selected freelance projects.