Elucidata: Your Single-Cell Metadata Curation Partner.

High-Level Architecture for CDMO Capacity Modeling

In a nutshell: A large pharma team came to us with a single-cell metadata curation pipeline that already existed, already ran, and had made their problem worse. The answers were already sitting in public human data. Thousands of single-cell studies are deposited in GEO, with more arriving every week. But every lab labels cell types, disease stage and donor metadata differently, so nothing compares across studies. Standardising one dataset takes a curator about a week. That is why teams reason over ten studies instead of two hundred.

We built an agentic AI pipeline that does it in about three hours, for roughly eleven dollars a dataset. Several agents read each study independently. One records only what is written, one reads the surrounding context, one challenges both. A reviewer scores every field for confidence and shows its evidence. Anything uncertain goes to your curator with the reasoning attached. Everything else is ready to use.

At a top-20 pharma, it exceeded 90% accuracy against their own ground truth and mapped 95% of cell types to their internal vocabulary.

The scientific question behind every metadata curation partnership

You have a set of public single-cell datasets and one research question that needs all of them at once: Which cell populations shift in a diseased tissue, and does that shift hold across more than one cohort?

It is a reasonable question. Thousands of relevant studies sit in GEO already and the work stalls anyway, because public data is not comparable as deposited. One study records the “tissue” as “liver”, while another records “liver biopsy, segment IV”. A third leaves the field blank and states the tissue only in its methods section. One labels controls “healthy” whereas another labels them “non-tumor adjacent”.

None of those records are wrong. They simply cannot be placed side by side, and until they can, the atlas does not exist and neither does the analysis waiting behind it.

So you go looking for a partner. This is what we would want you to check, written from a rebuild we ran for a large pharma team after someone else's engagement had already failed.

Why single-cell metadata curation gates everything downstream

It is expert work: Standardization means knowing the biology and the ontologies at once. Anatomy harmonizes to UBERON, disease to MONDO, cell type to the Cell Ontology, cell lines to Cellosaurus, organism to NCBITaxon. Somebody has to know that PBMC is blood, that HepG2 implies a human origin, and that a disease named in a study title has not been established for any sample in it.

It scales linearly: Forty datasets cost 40 times one dataset. Manual curation has no economies of scale, so the ambition of your atlas converts directly into curator months.

It gates trust, not just throughput: A target that came out of datasets nobody can vouch for will not survive internal review. The first question in that room is where the data came from.

The team we worked with had timed their own baseline honestly. About a week and a half per dataset, and the output was still not clean because cell-level curation drifted between curators.

What a failed curation engagement actually looks like

Study this before you sign anything, because the pipeline our client had already bought was not obviously broken. It ran end to end, hosted and technically functional, but failed in three specific ways, and each is worth testing for.

1. It could not scale, because a human had to understand the data first

Every dataset needed a hand-written configuration file specifying the accession, the barcode-to-sample mapping, the paper link, and the supplementary file paths.

That is the trap. A curator had to understand a dataset well enough to describe its structure before the pipeline could touch it. The expert time the pipeline was bought to save had simply moved to the front of the process. Setup effort did not fall as volume rose. It multiplied.

2. String matching cannot read biological context

Extraction was fuzzy matching against a term list, scoring candidates on character similarity.

Consider a sample labelled adjacent normal tissue in a hepatocellular carcinoma study. Fuzzy matching sees the disease term in the study title and tags the sample as diseased. Or it sees normal and tags it a healthy control. Both are wrong. The sample is histologically normal tissue taken from a diseased liver, and which of the two errors you get depends on nothing more than which string happened to score higher.

Tumour-adjacent normal is not an edge case. It is one of the most common designs in cancer single-cell work, and getting it backwards contaminates both arms of every comparison built on it. The same system could not see a method described in prose, or an abbreviation a paper expands exactly once. It matched characters rather than reading biology.

3. Unreliable scores mean reviewing everything

Over 70 percent of values came back empty. Of the values that were filled, fewer than 40 percent were correct, and nothing marked which.

This is the failure that makes the other two unrecoverable. A confidence score exists so a curator can skip most of the output and concentrate on the rest. When the score carries no information, there is nothing to skip. The curator re-checks every field, which is slower than curating from scratch, because now they are verifying someone else's guesses as well as doing the work.

The client had never onboarded her team onto it. She did not trust it enough to ask them to use it.

The question that separates partners: what is your unit of curation?

The output used the cell barcode as its primary key. One row per cell. For a typical dataset that meant roughly 800,000 rows, with study and sample metadata duplicated down every one of them. Past about 700,000 cells the review interface stopped responding altogether.

Our approach comes from years of doing this and is almost boringly simple. Curate what is unique at each level, then propagate downward.

  • Study level. One set of facts per dataset: title, summary, publication, design. Curated once
  • Sample level. One set of facts per specimen: anatomy, disease, model system. Curated once per sample, then extrapolated to every barcode belonging to it. Critically, a study-level fact is not automatically true of every sample beneath it, since one study can mix tissues, disease states, and treatments
  • Cell type. Identify the unique author cell-type labels, harmonize only those, then transfer the result back down to barcode level

Cell type is where this matters most. A dataset with 800,000 cells might contain 50 distinct author labels. Fifty is the number of decisions. The other 799,950 rows are those same 50 decisions repeated.

The barcode is an output of curation, not a unit of it. Ask any prospective partner what a curator actually reviews, because no accuracy improvement rescues a queue a human cannot read.

Where the evidence actually sits

With the structure fixed, the remaining difficulty is that evidence sits somewhere different every time: sometimes in the sample's characteristics fields, sometimes only in the series summary, the publication, or a supplementary table.

And when an attribute is genuinely not stated anywhere, the correct output is empty. Fill that gap with something plausible and you have produced an error nothing downstream can detect.

One real record

GSM3178782 is a sample in GSE115469, a public human liver atlas. Its GEO record is short. The title reads Patient 1 Total Liver Homogenate. The single characteristics field reads tissue: Total Liver Homogenate.

That field does not contain a tissue. Total Liver Homogenate is a preparation method, and no UBERON concept exists for it. Read into the free-text extraction protocol and the specimen turns out to be a resected caudate lobe, a real anatomical structure with a standard UBERON term. The correct answer was there all along, one field away from where anyone would look.

The assay chemistry sits in that same protocol block. The genome build sits in the data processing notes. Disease is not stated anywhere in the sample record at all. Three of those four answers were never in a structured field, in one record, from a careful lab running a well-regarded study.

What good curation architecture looks like

One indexed evidence set, built before curation starts: The paper resolved automatically and converted to structured text, with introduction and references dropped. Supplementary files indexed by content rather than filename. Abbreviations expanded in place, so HCC becomes hepatocellular carcinoma before anything downstream interprets it. Curator input is a dataset identifier and a source with no configuration file.

Three readers under opposed mandates: All three read the identical evidence set, so any disagreement is about interpretation rather than about who opened which file.

That sceptic example is the tumour-adjacent normal case from earlier. A single model pass answers rather than deliberates, so the first plausible disease it meets becomes the answer. The step that asks whether the disease applies to this sample had to live outside the model.

Scoring computed outside the thing being scored: A referee resolves the three outputs into the best-supported value per field, then maps it into the client's internal vocabulary. The model supplies sub-scores and rationales, and deterministic code computes the weighted total and assigns the verdict. Agreement between opposed readers is evidence. Disagreement is a flag. A model rating its own confidence is grading its own work.

What your curators will actually see

Evidence is ranked the way they would rank it: Sample metadata, then sample title, then supplementary tables, then Methods, then abstract, then study title.

Every field lands in one of five states: verified, borderline, unmapped, missing, or not applicable. Unmapped keeps the raw author term rather than rounding it to something wrong.

Review is by exception, with each flag arriving with alternatives and reasoning attached. Scores are conservative on purpose, because a score that flatters the pipeline teaches curators to ignore it. And the weak spots are named: tissue and disease are the least accurate fields, and the failure to watch for is a patient's systemic diagnosis being applied to healthy control tissue.

What it delivered, including the target we missed

Success metrics were agreed before work started. The client selected the datasets, mixing easy, medium, and hard cases. Ground truth was curated by hand twice, by independent curators, with disagreements resolved before sign-off. Manual curation was timed as it happened, which is where the one-week baseline comes from. Accuracy measured against a pipeline's own output is not accuracy, so ask how any figure was established before you take it seriously.

For a dataset with 200 samples and 50 distinct cell types, hands-on curation moved from about a week to roughly eight hours, against a pipeline runtime near 30 minutes. Compute cost runs near one dollar for a base run with small per-sample increments, which is compute rather than the cost of an engagement, but it does mean the marginal cost of one more dataset is negligible.

Cell-type accuracy came in at 85 percent against a 90 percent target. We missed it. Cell-type harmonization is the hardest of the three levels, because author labels are free text with no convention behind them and the right Cell Ontology term is often a judgment call rather than a lookup. Low-confidence mappings route to review rather than passing through quietly, so the shortfall shows up as curator time instead of as a wrong value in your atlas.

Questions worth asking any curation partner

  • What is your unit of curation?
    One row per cell means the burden was reorganized, not reduced
  • How much setup does each dataset need from my team?
    Configuration files mean effort multiplies with volume
  • Which ontologies do you harmonize to, and how do you version them?
    UBERON, MONDO and the Cell Ontology all release on their own cadence, and a pipeline that does not pin versions is not reproducible
  • How do you handle tumour-adjacent normal?
    A partner who cannot answer this is doing string matching
  • What happens when a field is not stated anywhere?
    It should come back empty and marked
  • Where does the confidence score come from?
    If the model that produced the value also rates it, that is self-assessment
  • How was your accuracy figure established?
    Independently dual-curated ground truth is a different claim entirely
  • Can my curators extend the vocabulary themselves?
    If a novel term needs an engineering ticket, your backlog moves rather than clears

What this generalizes to

Fix the unit of curation before fixing the model. Treat curation failure as an evidence-location problem. Record absence as absence. Compute confidence outside the thing being scored. None of it is specific to single-cell data, since scattered evidence, author-specific vocabulary, and unrecorded absence turn up wherever data has to be harmonized before it can be analyzed.

If your team is assembling atlases from public data, or carrying a curation backlog that gates everything downstream, we would be glad to give you a walk through of how this one was built. Connect with us.

Blog Categories

Talk to our Data Expert
Thank you for reaching out!

Our team will get in touch with you over email within next 24-48hrs.
Oops! Something went wrong while submitting the form.

Watch the full Webinar

Blog Categories