WorkflowClinical Development

TLF-to-Text Results Consistency Checker

CSR number QC against the TLFs — every number traced to the table cell it came from

Every number in a report traced to the table cell it came from, so reviewers decide only the few that disagree.

See one case, screen by screen ↓
demo214numbersin one CSR efficacy section, each looked up in the final run — 213 traced to their table cell, one with no source
demo9findingsleft for the QC reviewer to decide — the other 205 agree or are derived and verified
target94.5%of numbers match their table on the first pass; reviewers decide only the rest
target1.2daysmedian from draft received to QC sign-off
The problem

Why number QC holds up every results document

A CSR section quotes hundreds of numbers, and every one of them has to be found in the TLFs: the right output, the right analysis set, the right arm and visit, the right run. A QC reviewer does it with the draft on one screen and the RTFs on the other, ticking numbers one by one, and typically spends two to five days on a single document.

The errors that get through are rarely typos. They are a responder rate copied from dry run 2 before a data query changed it, a per-protocol sentence quoting the ITT value, a safety percentage divided by the randomised N instead of the safety set, a confidence interval from the sensitivity analysis, a p-value printed as p=0.000. And when one table is re-run, nobody can say quickly where else its old cells are quoted — the synopsis, the congress abstract, the manuscript, the lay summary.

typical2–5daysof manual number QC per document
demo9quotesof one re-run table, in 6 documents, still carrying the old values
typical≈ 50%fewer number errors reaching review, reported for AI-assisted report writing
Where a CSR section’s QC days goestimated
By hand4.5 days
With the solution1.7 days
  • Finding every number in the draft0.8 → 0.1 d
  • Locating the output and cell for each one1.5 → 0.2 d
  • Checking population, denominator, analysis and rounding1 → 0.5 d
  • Queries to the statistician0.5 → 0.4 d
  • Writing the comment log and corrections0.4 → 0.2 d
  • QC sign-off0.3 → 0.3 d

Estimated split for one CSR section, in working days, by hand and with the solution. The totals follow the working solution’s dashboard, which shows a median of 4.5 days by hand and 1.7 days with Results Check for a CSR section.

How it works

How a draft moves

Agents find every number, match it to its table, check the house rules and the other documents, and write the QC report; a QC reviewer decides each finding and signs.

What comes in
Draft inDraft + results tables · report, summary, abstract, paper
Agents at work
Number finderevery number + context
Then
Table matcheroutput, row, column
Then
Rule checker
Cross-document checker
A person decides
QC reviewerdecides each finding and signs
What comes out
QC report
Corrections for writers
Signed QC record
One case, step by step

One CSR section, from draft to signed QC record

VLT-302, a psoriasis study of Veltrimab against placebo. Dr. Maya Chen’s Section 11 — Efficacy Evaluation, Draft v0.9, 38 pages, is due Oct 14. Here is how it gets through QC, screen by screen, in the working solution.

  1. 01On the desk

    Every draft on the desk, number by number

    Lena Ortiz · QC lead, medical writing

    Lena opens Results Check: 1,150 numbers checked in the last 7 days across 9 documents and 3 studies, 18 findings waiting for her, one document due within 2 days. Each draft on the desk shows its verdict bar — CSR §11 Efficacy: 214 numbers, 205 agree, 9 to decide.

    “Every number in your drafts, traced to the table it came from.”

  2. 02One click

    Five agents check the section in order

    The agents

    The Number finder reads 214 numbers on 38 pages with their statistics, arms and visits. The Table matcher finds 213 of them in 16 outputs of the final run, and one with no output. The Rule checker applies 6 house rules and recalculates 5 derived numbers; the Cross-document checker compares the section with 6 other VLT-302 documents.

    “9 findings ready for your decision, each with both locations.”

  3. 03First finding

    66.6% in the draft, 284 (66.4) in the table

    Rule checker

    Page 47: sPGA 0/1 responders, Veltrimab, ITT set. A line runs from the sentence to the cell in Table 14.2.2.1. Six checks pass — output found, endpoint and visit, analysis, arm and column, population, rounding — and two fail: current run and value. The suggested fix is 66.6% → 66.4%.

    “The draft quotes dry run 2 (Sep 12). In the final run (Oct 2) one Week 16 sPGA reading at site 114 was corrected after data query DQ-1187, so Veltrimab responders fell from 285 to 284.”

  4. 04One toggle

    Where the stale number came from

    Lena Ortiz · QC lead, medical writing

    Lena switches the table from Final run to Dry run 2 · Sep 12. The superseded output opens stamped SUPERSEDED, with 285 (66.6) in the Veltrimab column — the cell the draft quotes, from data before database lock.

    The dry-run table footer: “DRY RUN — NOT FOR REPORTING. Data before database lock.”

  5. 05Page 48

    The right number, the wrong analysis set

    Rule checker

    The draft says that in the per-protocol set 27.6% of Veltrimab patients reached PASI 100. That is the ITT value from Table 14.2.3.1. The per-protocol value in Table 14.2.3.2 is 116 (28.7). Population & N and value fail; everything else passes.

    “Change the value — or the population and the table reference.”

  6. 06A question

    Ask the statistician, with both locations attached

    Omar Haddad · Lead biostatistician

    When a finding needs a statistician’s call, Ask statistician drafts the query to Omar Haddad: the page, the value in the draft, the cell in the final run, and “Which value should the document quote?” The sentence and the table cell open highlighted for him.

    Once the query is sent, Omar’s reply: “The sentence names the per-protocol set, so it is 28.7%. If Maya prefers the ITT value, change the population and cite 14.2.3.1 instead.”

  7. 07Page 49

    A number no output reports

    Table matcher

    “Response was durable: 88% of Week 16 PASI 75 responders maintained their response through Week 52.” The Table matcher searched all 412 outputs; the nearest, Table 14.2.1.3, stops at Week 16. The maintenance period is still blinded. With the eight suggested fixes for the other findings accepted in one step, Lena marks the sentence for removal — it goes on Dr. Chen’s corrections list.

    “Week 52 tables are planned for the maintenance-period addendum. Until then the sentence has no source.”

  8. 08Signed

    She signs the QC record

    Lena Ortiz · QC lead, medical writing

    The QC record can be signed only once every finding is accepted, kept with a reason or removed. 214 numbers checked, 9 findings decided, results package Final · Oct 2. Lena picks the meaning of her signature and re-enters her password.

    Meaning of signature: “QC review complete — every number verified against the final tables.”

  9. 09The record

    A number-by-number QC report

    QC report writer

    The QC report lists every finding with its page, the draft value, the table cell, the type and the decision — 641 → 642 count differs, 55.4, 67.0 → 55.9, 66.5 different analysis, p=0.000 → p<0.001 format, 88% sentence removed — then the numbers one by one with their source cell and verdict. It downloads as a PDF, with the comment log as .xlsx.

  10. 10When a table is re-run

    The ripple: every quote of a changed cell

    Table matcher

    Table 14.2.2.1 changed in the final run: 285 (66.6) → 284 (66.4), and the difference 61.4 → 61.2. Its cells are quoted in the CSR, the synopsis, the congress abstract, the manuscript, the lay summary and IB §5.3. Re-check every quote re-runs all 9 against the final run and tells the writers.

    “A data query at site 114 re-scored one sPGA reading. Every quote of the two changed cells is re-checked automatically.”

Who it’s for

Built for everyone who puts a number in a results document.

The same CSR section, seen by the five people who carry it — what their week looked like, and what it looks like now.

LO
Lena OrtizQC lead, medical writing
QC reviewer
Before
Ticks hundreds of numbers by hand against the RTFs for every CSR section, synopsis and abstract.
Now
Decides only the numbers that disagree, each with the sentence and the cell side by side, and signs the QC record.
MC
Dr. Maya ChenLead medical writer
Author
Before
Gets a comment log back days later and has to find each table again to see what was meant.
Now
Receives a corrections list with both locations for every finding, as soon as QC decides.
OH
Omar HaddadLead biostatistician
Statistician
Before
Answers “which number is right?” emails with no page and no output attached.
Now
Gets each query with the sentence and the table cell attached, and answers in one line.
PR
Priya RamanPublications manager
Author
Before
Writes the congress abstract early, from dry runs, and learns late that a table changed.
Now
Sees her abstract on the ripple the moment a re-run changes a cell it quotes.
SP
Sam PatelStatistical programmer
Programmer
Before
Re-runs an output and cannot tell which documents still quote the old cells.
Now
Loads each results package run, marks superseded runs, and sees how often every output is quoted.
Built on the engine

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

Agents find every number, match it to its table, check the house rules and the other documents, and write the QC report; a QC reviewer decides each finding and signs.

Number finder

Extracts every number in a draft with its statistic, endpoint, arm, visit, population and sentence, and marks derived numbers with the cells they are built from.

  • Extract only — never edits the draft
  • Every number keeps its page and sentence
Table matcher

Finds the output and the exact cell each number came from in the current results package, and records any superseded run that also contains the value.

  • Current run only for the verdict
  • Cites output, row, column and run time
  • If nothing fits, says which outputs were searched
Rule checker

Compares value, population, denominator, analysis, arm and visit with the house rules, recalculates every derived number, and gives a verdict, a reason and a suggested fix.

  • Rounds once from the table value
  • Never marks a finding resolved — a person decides
Cross-document checker

Checks that the synopsis, abstract, manuscript and summaries agree with each other and with signed documents.

  • Reports disagreements; never picks a winner
QC report writer

Writes the number-by-number QC report, the comment log and the corrections memo for each writer.

  • Reports decisions exactly as recorded
  • Both locations cited for every finding
QC reviewer

Decides each finding and signs. The agents propose; a named person decides.

Ask in plain words

Ask about any number, table or document

QC reviewers, writers and statisticians can ask in plain words — or tell it what to change. Every answer points to the sentence and the cell.

Where is Table 14.2.2.1 quoted, and what changed?

The final run (Oct 2) changed 2 cells: Veltrimab responders 285 (66.6) → 284 (66.4) and the difference 61.4 → 61.2 (data query DQ-1187, site 114). Those cells are quoted 9 times in 6 documents with the old values — CSR §11, the abstract, the manuscript, the lay summary, the synopsis and IB §5.3. The synopsis and IB corrections are already with the writers.

Why does the safety set matter?

Safety percentages use the safety set — the 427 Veltrimab patients who were treated — not the 428 randomised. Dividing by 428 gives 52.1% for any TEAE instead of 52.2%, and 12.1% for nasopharyngitis in the manuscript instead of 12.2%.

Add a rule: “about N times” must be within 5% of the table ratio

Done. New house rule: “about N times” must be within 5% of the ratio of the table values. CSR §11 says “about 10 times”, and 72.7 ÷ 7.0 = 10.4 — 3.8% away, so it stays derived · verified. The rule is live in Settings and on the audit trail.

Is CSR §11 ready for QC sign-off?

Not yet. 9 findings still need a decision. 8 have a suggested fix you can accept in one step; the Week 52 sentence has no source and needs removing or a reason.

Every screen

The working solution, as it ships.

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

HomeNumbers checked, findings waiting, every draft on the desk with its verdict bar, and what a re-run table touched.
Agents at workNumber finder, Table matcher, Rule checker, Cross-document checker and QC report writer, each step in view.
A stale table versionThe sentence and the cell side by side, eight checks, the reason and the suggested fix.
The superseded runOne toggle shows the dry-run table the old number was copied from, stamped superseded.
A wrong populationA per-protocol sentence quoting the ITT value, with the per-protocol cell it should cite.
Ask the statisticianThe query to the lead biostatistician, with the sentence and the table cell attached.
A number with no sourceNo output reports Week 52 — 412 outputs searched, the nearest shown, and the suggested change: remove the sentence.
Signing the QC recordNumbers checked, findings decided, the results package, the meaning of the signature and a password re-entry.
The QC reportEvery finding with its decision, then the numbers one by one with their source cell — PDF, with the comment log as .xlsx.
Every findingEvery number that disagrees with its table, across all documents, ready to send to the writers.
When a table is re-runThe cells that changed, the cause, and every sentence in every document that quotes them.
Source tablesEach output of the results package with its population, run time, quotes and status — final, changed or superseded.
The dashboardNumbers checked, what went wrong by type and document, time to QC sign-off and the most-quoted outputs.
Governance

Built for regulated writing: traced, decided by people, signed.

Both locations, for every findingEach finding links the sentence in the draft to the output, row, column and run time of the cell it was checked against, in the QC report and the comment log.
One results package is the truthVerdicts use the current run only. A number that matches a superseded run is flagged as a stale table version, with the old run shown so you can see where it came from.
Drafts are never edited by agentsThe agents only read the draft. Accepted fixes go to the document’s author on a corrections list; the writer changes the text.
Only a person resolves a findingEvery finding is accepted, kept as written with a reason, removed, or sent to the statistician — by a named reviewer. The agents never mark one resolved.
Signed with re-authenticationThe QC record is signed with an electronic signature: the signer, the meaning of the signature and a password re-entry, recorded together. It can be signed only once every finding is decided.
Who, when and why, on the recordEvery decision, setting change and agent run is on the audit trail, and the QC record — every number, both locations and each decision — is kept with the document version.
Configuration

Your house style, not ours

What counts as a match, how numbers are rounded, and who decides are settings — each change recorded in the audit trail.

SettingDefaultChoose from
Results package numbers are matched againstVLT-302 final run · Oct 2VLT-302 final run · Oct 2 · VLT-302 dry run 2 · Sep 12
Flag numbers that match a superseded runOnOn · Off
Compare with signed documentsOnOn · Off
RoundingHalf away from zero (SAS ROUND)Half away from zero (SAS ROUND) · Half to even
Percentages in the bodyOne decimal (72.7%)One decimal (72.7%) · Whole numbers (73%)
Small p-valuesp<0.001p<0.001 · p<.001
Treat format-only differences as notesOffOn · Off
Who signs the QC recordLena OrtizLena Ortiz · Dana Okafor
Connections

Works with the documents and outputs you already have

Draft documentsCSR sections, synopses, abstracts, manuscripts, lay summaries and IB sections, in Word or PDF
Results packageTLF outputs from each run, RTF or PDF — final and superseded
Statistical analysis planthe endpoints, populations and analyses numbers are read against
Signed documentssynopsis, IB and other signed text the drafts are compared with
Your authoring systemdrafts arrive by upload or from where writers work
QC report and comment logPDF report and .xlsx comment log, kept with the document version
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
1.2days
median from draft received to QC sign-off
By hand2–5 days
With agents1.2 days
target
94.5%
of numbers match their table on the first pass; reviewers decide only the rest
typical
≈ 50%
fewer number errors reaching review, reported for AI-assisted report writing

“demo” = seen in the working solution, on its sample study data · “target” = the design goal, measured in the live solution · “estimated” = our estimate · “typical” = published figures (sponsor results for AI-assisted report writing — about half the number errors reaching review; manual QC 2–5 days per document). People, companies and products named on this page are fictional — characters and sample data in the working solution.

Questions

What medical writing and biostatistics teams ask us.

What is a TLF-to-text consistency check?

It is the QC step that confirms every number quoted in a results document — a CSR section, synopsis, abstract, manuscript or lay summary — matches the tables, listings and figures it came from. Results Check does it number by number: it finds each number, locates its output and cell, and checks value, population, denominator, analysis and rounding.

How does it know which table a number came from?

The Number finder records each number with its statistic, endpoint, arm, visit and the analysis set named in the sentence. The Table matcher then finds the output whose title, population, endpoint and visit fit, and the row and column for the arm and statistic, in the current run. If nothing fits, it says which outputs it searched and shows the nearest.

Does it catch numbers copied from a dry run?

Yes. Verdicts use the current run only, and a number that matches a superseded run is flagged as a stale table version, with the old run one toggle away. When a table is re-run, every quote of the changed cells, in every document, is re-checked.

How does it handle rounding and derived numbers?

By your house rules — for example, round once, half away from zero; one decimal for percentages in CSRs; p<0.001 for small p-values. Derived numbers such as differences, ratios and “about N times” are recalculated from the cells they are built from. Format-only differences can be treated as notes.

Does the AI change our drafts?

No. The agents only read drafts. Accepted fixes go to the document’s author on a corrections list, and the writer makes the change.

Do people stay in control?

Yes. Only a named reviewer can accept a fix, keep a number with a reason, remove a sentence or send a query to the statistician, and only once every finding is decided can the QC record be signed — with an electronic signature that records the meaning and asks for the password again.

Which documents can it check?

Any document that quotes results: CSR sections, synopses, interim reports, congress abstracts, journal manuscripts, plain-language summaries and Investigator’s Brochure sections, in Word or PDF, against TLF outputs in RTF or PDF.

How long does it take to go live?

The Agentic Solution Engine builds and deploys it from your requirements — your house style rules, QC report template and a results package with drafts that quote it — and it goes live once every quality gate has passed. We will walk you through it on one of your own drafts first.

See it on
your drafts.

We’ll run Results Check on one of your own drafts against its results package.