/

Cancer generates 17 million new diagnoses and 10 million deaths annually, yet clinical evidence supporting generic drug repurposing is buried in thousands of unstructured research abstracts. Omdena partnered with a US-based drug repurposing nonprofit, a tech nonprofit accelerating access to repurposed cancer treatments, and deployed 50 contributors to build NLP pipelines extracting clinical outcome measures from randomised controlled trial abstracts. The project delivered a structured outcome database across 584 abstracts, a curated 50-abstract annotation dataset, and three extraction approaches covering rule-based NER, Python Regex, and semi-supervised machine learning
| Outcome | Detail |
| Abstracts processed | 584 randomized controlled trial abstracts |
| Entity types targeted | Drug names, sample sizes, median OS, median PFS, response rates, survival rates |
| Annotation dataset | 50 validated abstracts reviewed by Omdena contributors and the client team |
| Response rates extracted | 102 Group 1 and 72 Group 2 response rate values from the RCT dataset |
| NLP approaches developed | spaCy rule-based NER, Python Regex, and Unsupervised Data Augmentation |
| Contributors | 50 Omdena data science contributors |
| Output delivered | Structured outcome database; curated annotation dataset; pre-annotation API |
Cancer remains one of the most resource-intensive conditions in global healthcare, with 17 million new diagnoses, 10 million deaths, and approximately one trillion dollars in annual costs. A significant share of those costs comes from the price of cancer-specific treatments, even where cheaper generic drugs have demonstrated clinical effectiveness in published research.
Repurposing approved non-cancer generic drugs for oncology use offers a direct route to more affordable treatment. Acting on that opportunity requires locating the clinical evidence, which exists across thousands of randomized controlled trial abstracts but is recorded in unstructured narrative text rather than any standardized, queryable format.
The client faced this bottleneck directly. Extracting relevant outcome measures — patient counts, response rates, survival durations, drug names — from each abstract manually was not feasible at the volume required to survey the clinical literature systematically. The project objective was to automate this extraction at scale.
The client is a US-based drug repurposing nonprofit whose core mission is identifying and accelerating access to affordable, already-approved generic drugs that clinical evidence suggests could be repurposed for cancer treatment. The organization maintains a research program that draws on randomized controlled trial literature to evaluate which off-patent drugs show sufficient clinical evidence to merit further investigation.
Omdena contributed a team of 50 data science contributors to the project. The source material provided by the client consisted of clinical study abstracts containing study IDs, titles, and the abstract text — the primary input for all annotation, extraction, and modeling work conducted across the project.
Clinical research abstracts present structural and linguistic challenges that general-purpose NLP approaches were not designed to handle. Three categories of difficulty shaped every design decision the team made and explained why standard NLP rules that work reliably on general text routinely fail on clinical literature:

The first step was building a validated annotation dataset to serve as ground truth for evaluating extraction approaches. The team configured Labelbox with Model-Assisted Labeling enabled, allowing model-generated pre-annotations to be loaded into the platform before human reviewers assessed each abstract. A pre-annotation API, deployed on Heroku, managed the transfer of model outputs back into Labelbox.

Approximately 90 abstracts were annotated in the initial pass. After a two-stage review involving Omdena contributors first and then the client team, 50 abstracts were confirmed as high quality and usable for model evaluation. A consensus metric tracked labeler agreement on each abstract, measuring index overlap across annotators to surface disagreements before final validation.
The first extraction approach used spaCy’s EntityRuler pipeline to define custom pattern rules for named entity recognition. Rules targeted drug names using exact-match patterns for known compounds including hydroxychloroquine, bevacizumab, pembrolizumab, temozolomide, and others, alongside token-attribute patterns to capture sample size expressions and clinical outcome values from the abstract text.

| Entity Type | Pattern Approach |
| Drug names | Exact-match patterns for known generic and brand compounds |
| Sample size | Numeric token followed by patient-variant regex (e.g., “245 patients”) |
| Response rate | Phrase patterns anchored to “response rate was” followed by numeric value |
| Median OS / PFS | Token sequences combining outcome abbreviation with numeric and unit tokens |
A parallel extraction approach using Python’s Regex library captured eight specific clinical outcome measures across all 584 abstracts in the RCT dataset. The regex model extracted 102 Group 1 and 72 Group 2 response rate values, 58 and 55 median overall survival figures, 45 and 43 median progression-free survival values, and 81 and 61 survival rate figures, respectively.
Hazard ratio and p-value extraction was attempted under both the spaCy and regex approaches. Both entity types showed too much notational variation across abstracts for rule-based methods to capture reliably. HR and p-value results were excluded from the final output and documented as targets for a future ML-based extraction phase where learned representations can handle the variation that fixed rules cannot.
Machine learning approaches were explored to complement the two rule-based methods. The primary approach was Unsupervised Data Augmentation, designed to improve model performance where only a small labeled dataset was available, using the 50-abstract annotation set more effectively than standard supervised training alone.
A rule-based model using Python Regex provided an interpretable baseline against which the ML approaches were compared. The parallel development of rule-based and ML approaches was intentional: each method had different strengths on different entity types, and the architecture was designed to allow the best-performing approach for each entity to be selected independently.
| Study ID | Drug(s) | SampleSize | MedianOS | MedianPFS | G1 ResponseRate | G2 ResponseRate |
| NCT[ID] | Drug name(s) extracted | n patients | x.x mo | x.x mo | xx% | xx% |
| NCT[ID] | Drug name(s) extracted | n patients | x.x mo | — | xx% | — |
| NCT[ID] | Drug name(s) extracted | n patients | — | x.x mo | xx% | xx% |
Table 1: Schema of the structured outcome database delivered across 584 RCT abstracts. Each row in the delivered database represents one processed abstract. — indicates the entity was not reported in that abstract. Hazard ratios and p-values are excluded across all records due to notational variation too high for rule-based extraction.
The pipeline was applied to all 584 randomized controlled trial abstracts in the project dataset, extracting and structuring predefined clinical outcome measures at a scale that manual review could not have matched within a comparable timeline. Three outputs were delivered:
For entities where rule-based extraction proved reliable, the database gave the client structured, queryable records of clinical outcomes that previously existed only as narrative text. Hazard ratios and p-values were excluded from the delivered output and documented as the priority target for the next extraction phase.
The primary impact is structural. Before this project, the client’s research program depended on manual review of individual clinical abstracts to identify which generic drugs showed meaningful outcomes in cancer trials. The NLP pipeline converted that abstract-by-abstract manual process into an automated extraction workflow that operates across the full 584-abstract dataset simultaneously.
A structured, queryable database of outcome measures changed what was analytically possible. The client could filter across drug names, response rate thresholds, survival durations, and patient group sizes across 584 abstracts at once, rather than reading each abstract individually to locate comparable data points. This shifted the research workflow from extraction to analysis.
The pipeline was also reusable and extendable. New RCT abstracts could be processed through the same annotation and extraction workflow, incrementally extending the database as the clinical literature grew without rebuilding the system. The pre-annotation API reduced the marginal cost of adding each new batch of abstracts.
The regex and spaCy models extracted entities from 584 abstracts, but measuring their precision and recall required a complete ground truth set that was not available for the full dataset at project completion. Building the annotation dataset in parallel with the extraction models, rather than sequentially, would have enabled formal performance evaluation from the first deployment rather than at the end.
The consensus metric used to track labeler agreement measured index overlap between annotations rather than whether annotators agreed on the semantic content of the labeled entity. High consensus scores therefore did not guarantee label precision, and a second manual review layer was required to catch disagreements that the automated metric missed. Semantic agreement metrics would have surfaced these issues earlier.
Hazard ratio and p-value extraction was attempted across both the regex and spaCy rule sets and excluded from the final output because notational variation across abstracts was too high for fixed rules to handle reliably. These entities require an ML approach where the model learns from examples across varied notation rather than matching against a fixed pattern set.
The immediate next step is completing a full ground truth annotation dataset, which will enable formal precision and recall evaluation of all three extraction approaches across the 584-abstract corpus. With a validated evaluation set, the best-performing approach for each entity type can be selected and promoted to the primary extraction model for that entity class.
Longer-term development includes extending the pipeline from abstract text to full paper content, which contains richer outcome data but significantly more noise and formatting variation. Expanding the entity set to cover hazard ratios, p-values, and additional drug classes not included in the initial scope would broaden database coverage across the repurposing literature.
The NLP pipeline processed all 584 RCT abstracts in the project dataset and produced a structured database of predefined outcome measures. The database captures drug names, sample sizes, median overall survival, median progression-free survival, response rates, and survival rates, enabling queryable access to clinical data that previously existed only in unstructured narrative text.
Fifty clinical study abstracts were annotated in Labelbox and validated by Omdena contributors and the client team through a two-stage review process. The dataset constitutes a reusable ground truth resource for training and evaluating future NLP models, with annotation quality enforced through both the automated consensus metric and manual correction where the metric was insufficient.
The project delivered three distinct extraction methodologies: a spaCy EntityRuler pipeline for pattern-based NER, a Python Regex system that extended entity coverage to eight additional clinical outcome types, and an Unsupervised Data Augmentation approach for low-labeled-data conditions. Each approach is documented and independently extendable as the client’s entity set expands.
This case study documents Omdena’s collaboration with a US-based drug repurposing nonprofit focused on repurposing affordable generic drugs for cancer treatment. A team of 50 Omdena contributors built NLP and machine learning pipelines to extract and structure predefined clinical outcome measures from 584 randomized controlled trial abstracts, delivering a structured outcome database, a validated annotation dataset, and a pre-annotation API.