WorkflowResearch & Discovery

CRO Data Integration

CRO data integration that catches a changed column or unit before a single value loads

CRO deliverables become clean, cited records within hours, never a wrong unit.

See one case, screen by screen ↓
demo1,000×error caught on a plasma concentration export before any value loaded — the unit had changed from ng/mL to µg/mL
demo11minfrom the file arriving at 09:40 to 9 cited values in the warehouse at 09:51, two decisions included
demo31,482valuesloaded from 271 deliverables over 8 weeks on the sample data, each citing its page or cell
target2.1hmedian from receipt to records in the warehouse, against 3–5 days by hand
In short

What is CRO Data Integration?

Getting the results your contract research organisations send — PDF reports, Excel tables, instrument exports — into your own research data warehouse as clean, consistent records. CRO Data Integration does it with seven agents that classify each deliverable, check its layout, extract and convert every value, test it against the contract and load it with a citation, while the study monitor decides every exception.

How to choose AI solutions for life sciences →

Updated

The problem

Why CRO data takes days to reach the warehouse — and sometimes arrives wrong

A discovery sponsor sends its ADME, DMPK, pharmacology, safety and screening work to six or more CROs, and each sends back its own PDFs, Excel workbooks and instrument exports, in its own layout and its own units. Scientists and data stewards open every file and re-key the values into the house schema — a 24-compound microsomal stability study alone is 96 values — and check controls against the statement of work by eye.

The risk is in what nobody sees. A CRO marks its verapamil control "Pass" against its own SOP range, which is wider than the contract. A CRO upgrades its instrument software and a header changes from ng/mL to µg/mL; a copy-paste or a fixed import script loads every value a thousand times too low, and the clearance, exposure and ranking decisions built on it are wrong with it. The sponsor stays accountable for the data either way.

typical2+h / weekper scientist of manual file handling for ADME CRO data
typical4h / weekper scientist at most, in a second published figure for handling CRO data files
demo3–5daysfrom receipt to the warehouse when values are re-keyed by hand
Where a CRO deliverable's working days goestimated
By hand4.3 days
With the solution0.3 days
  • Logging the package and finding its study and contract0.5 → 0 d
  • Re-keying every value into the house schema1.5 → 0.1 d
  • Converting units and matching compound IDs0.5 → 0 d
  • Checking controls, replicates and recovery against the contract0.8 → 0.1 d
  • Deciding exceptions and writing queries to the CRO0.5 → 0.1 d
  • Loading and spot-checking the warehouse0.5 → 0 d

Estimated split for a typical in-vitro ADME deliverable, from receipt to records in the warehouse, by hand and with the solution.

How it works

How a deliverable moves along the conveyor

Seven agents classify, compare layouts, extract, normalise and check every file against its contract; the study monitor decides each stop.

What comes in
Deliverables inPDF, Excel, CSV · SFTP, portal or mailbox
Agents at work
Deliverable classifierCRO, study, assay
Then
Template drift checkeragainst the last layout
Then
Result extractor
Unit & identity normaliser
Then
Study-spec checkeragainst the contract
A person decides
Study monitordecides each stopped file
What comes out
Cited records loaded
Query to the CRO
CRO scorecard
One case, step by step

One plasma file, from the SFTP drop to the warehouse

Tuesday 7 October, 09:40. Quillon Bioanalytical drops QB-1180_PK_plasma_conc.xlsx on SFTP: LC-MS/MS concentrations of NWB-5104 in mouse plasma after an IV and an oral dose, 9 samples, under contract NWB-SOW-047 §2. Here is what happens next, screen by screen, in the working solution.

  1. 0109:40

    Every CRO on one conveyor

    Dr. Priya Raman · Study monitor, External Research

    Priya monitors the studies Northwind Bio runs at six CROs. Her intake conveyor has a lane for each — Halden, Corrib, Pellucid, Sorrel, Quillon, Larkspur — and four stations: Received, Mapped, QC-checked, Loaded. This week: 38 deliverables, 30 loaded, 1 ready to load, 4 stopped for a decision, 1 waiting on the CRO, 2 on the way in. Quillon's new file sits at Received.

    Drift watch: “Before a single value is mapped, each file is compared with its CRO's last accepted layout — headers, column order, units and value ranges.”

  2. 02One click

    Stopped at Mapped: the concentration unit changed

    Template drift checker

    The deliverable classifier matches the workbook to Quillon, study QB-1180 and contract NWB-SOW-047 §2. The template drift checker compares its header with Quillon template v3, last used on QB-1174 on Sep 29, and finds four changes. Sample became Sample ID and Flag became BLQ — matched by meaning. Route and Time (h) swapped places — matched by name. Column E went from “Conc (ng/mL)” to “Conc (µg/mL)” — and that stops the file.

    The template drift checker never accepts a unit change on its own.

  3. 03What would have loaded

    1.284 ng/mL, or 1,284 ng/mL

    Dr. Priya Raman · Study monitor

    The diff shows what an import would have done: M1-0.25 IV reads 1.284 and would load as 1.284 ng/mL instead of 1,284 ng/mL; M4-2 PO would load as 0.451 instead of 451. The last three Quillon runs at 0.25 h read 1,190–1,410 ng/mL, so the values agree with the new header. Priya chooses “Convert × 1,000 and save template v4” — the rule is applied, template v4 is saved and Sam Patel, the template owner, is informed.

    Her other choices on the same screen: “Query Quillon” or “Hold the file”.

  4. 04QC-checked

    Two samples reported as 0 — below the 1.0 ng/mL limit

    Study-spec checker

    The rest of the intake runs. The result extractor reads 9 samples, IV and oral, each with its cell in column E; the unit and identity normaliser converts the values to ng/mL and matches NWB-5104 through the shipped manifest. The study-spec checker stops at two samples, M1-24 and M4-24 at 24 h, that the export writes as 0 with flag BLQ. Loading 0 would pull exposure down.

    Suggested: “Load both as "below LLOQ (1.0 ng/mL)" — never as zero.”

  5. 0509:49

    Every check passed or decided

    Dr. Priya Raman · Study monitor

    Priya loads both as below LLOQ. The inspector now reads: “Every check passed or is decided. 9 values mapped to house units, each citing its cell or page.” Both decisions sit on the file with her name — the schema drift converted × 1,000 with template v4 saved, and the two samples loaded as below LLOQ.

  6. 0609:51 · Loaded

    Nine values in the research data warehouse

    Warehouse loader

    One click on “Load 9 values”. The warehouse loader checks the records against house schema v4, writes them with house units, qualifiers and flags, holds back no values, links each to its page or cell and refreshes the SAR view for the Cedar program. QB-1180 moves to Loaded — eleven minutes after it arrived.

    The warehouse loader loads only when every exception on the deliverable is decided.

  7. 07Any value

    Every value opens its source cell

    Dr. Lena Ortiz · DMPK scientist

    In the review, the workbook sits beside the record grid. Click NWB-5104, IV at 0.25 h, and a line runs to cell E5: as reported 1.284 µg/mL, in house units 1,284 ng/mL, confidence 97, “µg/mL converted to ng/mL (× 1,000) by the rule approved today”. The two 24 h samples read <LLOQ (1.0 ng/mL), not zero.

  8. 08Same morning

    The change becomes template v4

    Sam Patel · Research data steward

    On File templates, Quillon's plasma concentration export is now v4: column E reads µg/mL → ng/mL. The drift log for the quarter gains its newest row — Oct 7, QB-1180, unit changed, converted × 1,000, template v4 — Dr. Priya Raman. Earlier rows show how harmless changes were handled: a sheet renamed at Halden matched by content, a column moved at Pellucid matched by name.

    Renamed or moved columns are matched above 95% confidence; a unit change in a header always stops the file.

  9. 09Next on her list

    Halden marked it Pass. The contract does not.

    Study-spec checker

    Halden's metabolic stability study HB-26-0417 — 96 values from human and mouse liver microsomes, day 8 of 10 — is read with a page or cell for every value and 46 converted to house units. On page 6 the verapamil control on MLM plate 2 ran at 17.9 min. Halden's SOP accepts 3–20 min and calls it Pass; contract NWB-SOW-031 §4.2 allows 3–15 min, and the report notes a second freeze–thaw of microsome lot ML-2291 on that plate.

    The study-spec checker never marks a failed control as passed — the contract range wins over the CRO's SOP.

  10. 10On the exceptions board

    Hold, flag, record — or query the CRO

    Dr. Priya Raman and Sam Patel

    Each exception arrives with its evidence and a proposed decision. For the plate 2 control: hold the 22 MLM values and ask Halden to repeat the plate with a fresh microsome lot. For NWB-4488, CV 31% against the contracted 20%: load with a “high variability” flag. NWB-4490, not incubated because it precipitated at 1 µM: record as “not tested — solubility”. Corrib's “NB-4493” is not on the shipped manifest, so Sam decides whether it is NWB-4439, digits swapped on the tube label.

    “The agents propose — a named person decides.”

Who it’s for

Built for everyone who touches CRO data.

The same deliverables, seen by the four people who carry them — what their week looked like, and what it looks like now.

PR
Dr. Priya RamanStudy monitor · decides exceptions, approves CRO queries, loads to the warehouse
Study monitor, External Research
Before
Finds out after the fact that a control was out of contract or a unit had changed — once the numbers are already in the warehouse.
Now
Sees every file stop at the station where it fails, with the evidence beside it, and decides each stop on the belt.
SP
Sam PatelOwns each CRO's file templates, the unit rules and compound identity
Research data steward
Before
Hears about a renamed header or a new unit after the warehouse does, and traces it back by hand.
Now
Is informed of every template change, owns each version and the drift log, and decides compound identity when a name is not on the shipped manifest.
LO
Dr. Lena OrtizReads clearance and exposure values in the SAR view, with their sources
DMPK scientist, Program Aster
Before
Trusts that a value in the warehouse is right, without a way to see the cell or page it came from.
Now
Opens any value to its source cell or report page, with its house unit, the conversion rule and any qualifier or flag.
OH
Omar HaddadReads the CRO scorecards and approves contract amendments
Head of External Research
Before
Asks which CRO costs the team rework, and gets anecdotes instead of evidence.
Now
Gets a CRO scorecard — deliverables, on time, clean on first pass, QC failures and open queries — and sees where each CRO's checks fail.
Built on the engine

7 agents. Each with one job, and hard limits.

Seven agents classify, compare layouts, extract, normalise and check every file against its contract; the study monitor decides each stop.

Deliverable classifier

Reads every file in a CRO package — report PDF, results workbook, instrument export, cover email — and identifies the CRO, study, assay and contract schedule, matched to the open study in the study register.

  • Never guesses a study — unmatched packages go to a person
  • GLP studies are labelled on arrival
Template drift checker

Before anything is mapped, compares each file with the CRO's last accepted template: header names, column order, units written in headers, sheet names and each numeric column's range against the last three runs. Renamed or moved columns are matched and recorded; a unit change shows a before/after header diff.

  • Never accepts a unit change on its own
  • Never maps an unmatched column
  • Every template change is versioned with who approved it
Result extractor

Turns report tables, workbook cells and instrument exports into result records in the house schema — compound as reported, assay, matrix, condition, parameter, value, unit, qualifier, replicates — with the file and page or cell for every value.

  • Qualifiers (>, <, BLQ) are kept as reported
  • Zero is never written for a value below the quantification limit
Unit & identity normaliser

Converts every value to the house unit by the approved unit rules and matches each compound as reported to the registry through the manifest shipped for the study, proposing the likeliest match when a name does not fit.

  • Converts only by an approved rule
  • Ambiguous identities go to the data steward
Study-spec checker

Tests every acceptance criterion in the contract schedule — positive and reference controls, replicate variability, recovery, integrity markers, time points, compounds delivered against the manifest and turnaround — and raises an exception with the evidence for each failure.

  • Never marks a failed control as passed
  • The contract range wins over the CRO's SOP
  • Proposes — a person decides
CRO query writer

Drafts a short, courteous query to the CRO study director: what was found, the report page or workbook cell, the contract clause, which values are held and what is requested.

  • Sends only after a person approves
  • No internal compound structures in messages
Warehouse loader

Loads decided deliverables to the research data warehouse, each record with its house unit, qualifier, flags and citation, keeps held values out until they are released and refreshes the SAR view.

  • Loads only when every exception is decided
  • GLP data labelled “convenience copy”
  • Every load on the audit trail
Study monitor

Converts, holds, queries or loads. The agents propose; a named person decides.

Ask in plain words

Ask about any deliverable, value or contract

Ask in plain words about a file, a value and its source, a contract's acceptance criteria or a CRO's performance — or tell it to add a rule. Answers point to the page or cell.

Why did the Quillon file stop?

QB-1180 stopped at Mapped because its layout no longer matches Quillon template v3. Column E now reads “Conc (µg/mL)” where the template and the contract say ng/mL. The values agree with the new unit: 1.284 at 0.25 h, against 1,190–1,410 ng/mL in the last three runs. Loaded as-is, all 9 values would be 1,000× too low. Route and Time also swapped places and two headers were renamed — those matched on their own.

What is blocking the Halden stability load?

Three decisions are open on HB-26-0417 (D-2611). The verapamil control on MLM plate 2 ran at 17.9 min — the contract allows 3–15 min; Halden marked it “Pass” against its own SOP and notes a second freeze–thaw of the microsome lot. 22 values wait on this. NWB-4488 replicates differ, CV 31%. NWB-4490 was not tested — solubility.

Which CRO fails quality checks most often?

Over the last 8 weeks, Halden Biosciences: 6.1% QC failures, 83% on time. Then Corrib Labs 4.2%, Quillon Bioanalytical 3.8%, Sorrel Bioservices 3.1%, Pellucid Safety 2.0% and Larkspur Screening 1.6%. Most of Halden's failures are controls — its SOP accepts a wider verapamil range in mouse microsomes than the contract.

Add a rule: remind the CRO when a deliverable is 2 days late

Added “Send the CRO a reminder when a deliverable is 2 working days past the contracted turnaround” to Settings. Today it would remind Corrib Labs about CL-7719 (day 12 of 10). Every reminder is on the audit trail.

Every screen

The working solution, as it ships.

13 screens from the working solution, on its sample data. Pick one to see it large.

Intake conveyorA lane for each CRO and four stations — Received, Mapped, QC-checked, Loaded — with the week's counts and the drift watch beside them.
Schema drift caughtQuillon's file stopped at Mapped: the before/after header diff, what would have loaded and the three choices — convert, query or hold.
Below the quantification limitTwo samples written as 0 with flag BLQ, the cells they came from and the suggested decision: load as below LLOQ, never as zero.
Ready to loadEvery check passed or decided, each decision with the name of the person who made it.
LoadedNine values in the research data warehouse at 09:51, each with its source; the file moves to the Loaded station.
From value to source cellThe workbook beside the records: a line from each value to its cell, as reported and in house units, with the rule that converted it.
DeliverablesEvery package with its CRO, program, values, stage and turnaround against the contract, filtered by status, CRO or assay family.
Reviewing a study reportHalden's microsomal stability report next to its 96 values; the out-of-contract control on plate 2 marked, each value citing its page.
ExceptionsNeeds a decision, waiting on the CRO and decided today — each with its evidence, what it affects and a proposed decision.
File templates and the drift logEach CRO's accepted layout by version, the drift rules, and every layout change caught this quarter with how it was resolved.
Study specsEach contract's acceptance criteria beside the CRO's own SOP, with the criteria where the contract wins.
CRO performanceValues loaded per week, on time against the contract by CRO, where checks fail and the exception mix — over the last 8 weeks.
SettingsWho decides each kind of exception, and the quality rules the agents apply — each one a setting your team changes.
Governance

Built for data integrity: cited, decided, on the record.

Every value cites its sourceEach record carries its file and page and table, or sheet and cell, and every conversion names the unit rule that made it — as reported and in house units, side by side.
A named person decides every stopThe agents propose a decision with the evidence; the study monitor decides each exception and drift, and the data steward decides compound identity.
A unit change always needs a personA unit change in a header or an unmatched column stops the file. The accepted conversion becomes a new template version, with who approved it and when, and the template owner is informed.
Held values never reach the warehouseValues load only when every exception on the deliverable is decided. Held values stay out until released, and qualified values such as BLQ or > 60 min never become plain numbers.
The contract, not the CRO's SOPControls, replicates, recovery and turnaround are checked against the statement of work. The study specs screen shows where a CRO's own SOP is looser, so a result marked “Pass” cannot slip through.
On the audit trail, nothing sent unseenEvery agent step, decision, template change and load is recorded with who and when. Queries to CROs go out only after the study monitor approves, and GLP study data loads only as a labelled convenience copy — the signed report stays the record.
Configuration

Your contracts and rules, not ours

Who decides, which rules the agents apply and where deliverables come from are settings, changed by your team and on the audit trail.

SettingDefaultChoose from
ADME and safety exceptions (Halden, Pellucid) go toDr. Priya RamanDr. Priya Raman · Dr. Lena Ortiz · Sam Patel · Omar Haddad · Dana Okafor
Compound identity — any name not on the shipped manifestSam PatelDr. Priya Raman · Dr. Lena Ortiz · Sam Patel · Omar Haddad · Dana Okafor
Hold values when a control is outside the contracted range — even when the CRO marks it “Pass” against its own SOPOnOn · Off
Flag replicate variability aboveCV 20%Step up or down
Minimum recovery for permeability70%Step up or down — mass balance below it raises an exception
Stop the file when a unit in a header changesAlways onA person accepts the conversion and a new template version is saved
Match renamed or moved columns automaticallyOnOn · Off — above 95% confidence, recorded on the file and in the drift log
Compare value ranges with the last 3 runsOnA column that jumps 10× or more stops the file even if the header did not change
Connections

Works with what your CROs already send

CRO PDF reportsfinal reports, tables and study notes, read page by page
Excel result tablesresults workbooks and PK parameter sheets, read cell by cell
Instrument exportsLC-MS/MS and plate reader exports in CSV or XLSX
Study contracts and specsstatements of work and their acceptance criteria
Compound registryregistry IDs and the manifest shipped with each study
SFTP, CRO portal and mailboxintake per CRO — a drop folder checked every 10 min, a daily portal sync or email
What it changes

The difference, in numbers.

Every figure is labelled: a target the solution is built to, an estimate, a typical published result, or a proven one.

target
2.1h
median from receipt to records in the warehouse
By hand3–5 days
With agents≈ 2 h
estimated
70–90%
less transcription effort for scientists and data stewards
By handevery value re-keyed
With agents10–30% of the effort
target
100%
of files compared with the CRO's last accepted layout before any value loads
layout checked first

“demo” = seen in the working solution, on its sample data · “target” = the design goal, measured in the live solution · “estimated” = our estimate · “typical” = published figures (TetraScience customer story on drug transporter assays — 2+ hours per scientist per week handling ADME CRO data; Benchling — up to 4 hours per scientist per week). The sponsor, CROs, compounds, studies and people named on this page are fictional — characters and sample data in the working solution.

Questions

What external research teams ask us.

What is CRO data integration?

Getting the results your contract research organisations send — PDF reports, Excel tables, instrument exports — into your own research data warehouse as clean, consistent records. CRO Data Integration does it with seven agents that classify each deliverable, check its layout, extract and convert every value, test it against the contract and load it with a citation, while the study monitor decides every exception.

How does it catch a CRO changing its file layout or units?

Before a single value is mapped, the template drift checker compares each file with that CRO's last accepted template: header names, column order, units in headers and value ranges against the last three runs. Renamed or moved columns are matched and recorded; a unit change or an unmatched column stops the file with a before/after header diff and what would have loaded. A person accepts the conversion, and it is saved as a new template version.

Does it check results against our contract or the CRO's SOP?

Against your contract. The study-spec checker tests controls, replicates, recovery, integrity markers, time points, compounds delivered and turnaround against the statement of work, and the contract range wins when the CRO's own SOP is looser — as with a verapamil control the CRO marked “Pass” at 17.9 min against a contracted 3–15 min.

How does it handle BLQ values and qualifiers?

Qualified values such as > 60 min or < LLOQ are kept as reported and never turned into plain numbers. When an export writes 0 for a sample below the quantification limit, the study-spec checker raises it and the value loads as below LLOQ — zero is never written.

Can we trace a value in the warehouse back to the CRO's file?

Yes. Every record cites its file and page and table, or sheet and cell, and any conversion names the unit rule that made it. In the review, clicking a value draws a line to the exact page or cell it came from.

Do people stay in control of what loads and what goes to the CRO?

Yes. The agents propose and a named person decides every exception and every drift; compound identity goes to the data steward. Values load only when every exception on the deliverable is decided, held values never reach the warehouse, and a query goes to the CRO only after the study monitor approves it.

Can it take GLP study data?

GLP study data loads as a labelled convenience copy for research use, after a person confirms it. The signed report and the test facility's archived dataset stay the record, and every value cites the signed report page.

How long does it take to go live?

The Agentic Solution Engine builds and deploys it from your requirements and documents — your statements of work, each CRO's file layouts, your unit rules and a sample of past deliverables — and it goes live once every quality gate has passed. We will walk you through it on your own CRO data first.

See it on
your CRO data.

We'll run CRO Data Integration on a sample of your own past CRO deliverables and contracts.