WorkflowClinical Development

Clinical Study Report Authoring

Clinical study report authoring with every number linked to its table cell — and re-checked on every re-cut

Results drafted within days of database lock, linked to tables.

See one case, screen by screen ↓
demo9,840cellsindexed from 412 tables, listings and figures in 49 minutes after database lock
demo8numbersin 5 sentences flagged when biostatistics re-cut 4 outputs — old and new value side by side
demo53narrativesdrafted in parallel in 47 minutes, every fact cited to its listing row
target5daysfrom database lock to a first full draft
The problem

Why the CSR takes ten weeks after database lock

The database locks, biostatistics delivers hundreds of tables, listings and figures, and the clock on the clinical study report starts. The medical writer turns them into ICH E3 results sections — disposition, baseline, efficacy, safety, conclusions — and writes a narrative for every death, serious adverse event, discontinuation and event of special interest. Much of that time is not writing: it is copying numbers from RTF tables into the draft by hand, then a QC pass that checks every number against the tables again.

Then programming QC re-runs an output. A response flag was derived on a rounded value, one participant moves from responder to non-responder, and four efficacy outputs come back with new numbers. Nobody can say which sentences quoted the changed cells, so the number QC starts over — and a stale number that slips into the submitted report becomes a regulatory question and a correction.

demo68daysfrom database lock to a first full draft by hand — the average of the team's six earlier reports
demo16.5weeksof writing per report by hand, review rounds included
demo412outputsdelivered at lock — 186 tables, 142 listings and 84 figures — for one Phase 3 primary analysis
Where a report's writing weeks goestimated
By hand16.5 days
With the solution2.8 days
  • Copying numbers from tables3 → 0.1 d
  • Drafting results text4 → 0.6 d
  • Writing patient narratives5 → 0.5 d
  • Checking numbers (QC)2.5 → 0.2 d
  • Review rounds2 → 1.4 d

Estimated weeks of writing per report, by hand and with the solution, as the working solution's dashboard shows them on its sample data.

How it works

How a study report moves

Five specialist agents draft, link and re-check every number; a biostatistician and a medical writer sign.

What comes in
Outputs inLocked outputs · tables, listings, figures, re-cuts
Agents at work
Output readertables to cells
Then
Results writerreport sections
Narrative writernarratives in parallel
Then
Number verifierre-checks every re-cut
Template checkerheadings + style
A person decides
Biostatistician and medical writersign their sections
What comes out
Draft report sections
Patient narratives
Number-to-table trace
One case, step by step

One study report, from database lock to a re-cut handled in minutes

VLT-302 is a Phase 3 trial of Veltrimab 150 mg against placebo (2:1, N=642) in moderate-to-severe plaque psoriasis, with co-primary endpoints PASI 75 and sPGA 0/1 at Week 16. Here is its report, screen by screen, in the working solution.

  1. 01Oct 2, 18:31

    The database locks; 412 outputs are read cell by cell

    Output reader

    Biostatistics delivers 412 outputs from the locked database — 186 tables, 142 listings and 84 figures. The output reader reads them in 49 minutes and indexes 9,840 cells, each with its row, column, population and program run. Every output shows the sections that quote it and how many of its numbers they use.

    “Tables, listings and figures from the VLT-302 locked database — the only place a number in the report may come from.”

  2. 02Oct 3

    53 patient narratives, drafted in parallel

    Narrative writer

    The narrative writer drafts 53 narratives in 47 minutes — serious adverse events including one death, 9 participants who stopped because of an adverse event, and 6 events of special interest. Every fact is checked against the listings. Two facts are missing at the site, so it raises two queries instead of guessing: a discharge date for 302-0207-0119 and a CT pulmonary angiogram report for 302-0618-0026.

    Its rule: “Missing facts become queries, never guesses.”

  3. 03Oct 6, morning

    The report opens on the work itself

    Dr. Maya Chen · Lead medical writer

    Maya's screen is the report: the ICH E3 section list on the left with each section's status, the draft in the centre set like a report page, and the source tables it quotes on the right. 5 of 11 sections are approved. Section 11.4.1 Primary efficacy endpoints, drafted by the results writer, is in review with Omar Haddad.

    “19 numbers · all 19 match their table cell — click any number to open it beside the text.”

  4. 04One click

    62.4% opens Table 14.2.1.1 at its cell

    Dr. Maya Chen · Lead medical writer

    Maya clicks “62.4%”. Table 14.2.1.1 opens beside the text at row PASI 75 responders, column Veltrimab 150 mg (N=428), and a dashed line joins the number to the cell: 267 (62.4). The footer names the source — ADEFF, program t_eff_prim.sas, run 02OCT2026 18:42 — and the chips below list all 10 numbers the section quotes from this table.

    “Exactly as delivered: 267 (62.4) · the text says 62.4%.”

  5. 0510:44

    Biostatistics re-cuts four outputs — one click checks the text

    Number verifier

    Independent programming QC found that the PASI 75 response flag was set on a rounded improvement. Re-derived on the unrounded value per SAP Section 9.2, participant 302-0915-0137 (74.6% improvement) is now a non-responder, and Tables 14.2.1.1–14.2.1.3 and Figure 14.2.1.4 are re-run. A banner appears on the section; Maya clicks “Check the text” and the number verifier works through it step by step: 8 of 38 cells changed, all in the Veltrimab column.

    Steps on screen: read the re-cut outputs · compare cell by cell with delivery 1 · find every sentence that quotes a changed cell · re-check the other numbers · flag for the writer.

  6. 06Seconds later

    8 numbers in 5 sentences, old and new side by side

    Number verifier

    Every sentence that quotes a changed cell is shaded, the old value struck and the new one beside it: PASI 75 62.4% → 62.1% (266/428), the difference 57.3 → 57.0, the 95% CI 51.9, 62.6 → 51.7, 62.3, multiple imputation 63.8% → 63.6%, per-protocol 65.0% → 64.8%. The table shows the struck values in the changed cells. The other 17 numbers that quote the re-cut outputs still match.

    “Old and new value side by side · nothing changes until you accept.”

  7. 07A signed section

    The re-cut reaches a section Omar already signed

    Number verifier

    Section 11.4.3 Subgroup analyses was signed by Omar Haddad at 09:40 that morning. Two of its six numbers now quote changed cells: biologic-naive 64.5% → 64.2%, and weight 100 kg or less 65.0% → 64.7%. Section 13 Discussion and overall conclusions quotes 62.4% too, and is flagged with them.

  8. 08Number check

    Every number in the results, beside its cell

    Dr. Maya Chen · Lead medical writer

    The number check lists all 79 numbers in the VLT-302 results with the section, the text, the source cell, the cell value, the delivery and the check. Filtered to “Changed by re-cut”, it shows the 8 flagged numbers; 25 come from the re-cut outputs and 71 still match. Approval and export stay held while anything is flagged.

    “8 numbers flagged by the 10:44 re-cut.”

  9. 0910:52

    She updates the 5 sentences in one step

    Dr. Maya Chen · Lead medical writer

    Maya clicks “Update 5 sentences”. Before anything changes, the update lists each section with its status and every replacement: 11.4.1 goes from In review to To review, 11.4.3 from Approved to To review, and 13 stays in To review. She confirms, and the results writer replaces each flagged number with the re-cut value.

    “Sections that were in review or approved go back to review and are signed again.”

  10. 10Version 0.3

    The signature is withdrawn; Omar signs again

    Omar Haddad · Biostatistics lead

    The text now quotes the re-cut, all 6 numbers in 11.4.3 match their cells, and the section is marked “signature withdrawn by the re-cut”. The report shows 4 of 11 approved until Omar signs 11.4.3 again. No stale number can be approved or exported.

    “Text updated to the re-cut · 8 numbers changed · Omar Haddad signs 11.4.3 again · the change is version 0.3.”

Who it’s for

Built for everyone who signs the report.

The same report, seen by the five people who write, check and sign it — what their weeks looked like, and what they look like now.

MC
Dr. Maya ChenLead medical writer · signs patient narratives
Lead medical writer
Before
“I spend weeks copying numbers I didn't calculate.” Drafts and checks the results of two reports at once.
Now
Opens a drafted section with every number linked to its cell, and updates the text to a re-cut in one step.
OH
Omar HaddadBiostatistics lead · signs efficacy sections
Biostatistics lead
Before
“I re-ran one table. Which sentences did that break?” Delivers 412 outputs, answers number queries and re-cuts what QC catches.
Now
Sees exactly which sections quote his re-cut, and signs again only the ones whose numbers changed.
SP
Dr. Sam PatelMedical monitor · signs safety sections and narratives of deaths
Medical monitor
Before
“Show me the listing row behind every fact.”
Now
Reads each narrative with its numbered citations beside the listings and the adjudication record, and checks the ICH E3 12.3.2 elements.
LO
Lena OrtizClinical lead · signs the final report
Clinical lead
Before
“Tell me what changed since I last read it.”
Now
Sees every number beside its cell and delivery, and every change a re-cut made, before she signs the complete report.
DO
Dana OkaforStatistical programmer · independent programming QC
Statistical programmer
Before
“QC found it; now the text has to follow.”
Now
Delivers the re-cut, and each delivery is compared cell by cell with the last one.
Built on the engine

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

Five specialist agents draft, link and re-check every number; a biostatistician and a medical writer sign.

Output reader

Reads every table, listing and figure from the locked database and turns each one into addressable cells — row, column, population and program run — and detects re-issues and re-cuts.

  • Never rounds or reformats a value — stored exactly as printed
  • Reads only outputs from the locked delivery
Results writer

Drafts the ICH E3 results sections — disposition, baseline, efficacy and safety — in the report template, following the SAP for endpoint names, populations and methods, and proposes new wording after a re-cut.

  • No number without a source cell
  • No claims beyond the tables
  • Unblinded outputs only after lock
Narrative writer

Writes patient narratives for deaths, serious events, discontinuations and events of special interest from the participant listings and SAE eCRF pages, with the ICH E3 12.3.2 elements.

  • Every fact cited to a listing or report
  • Missing facts become site queries, never guesses
  • Participant identifiers only — no names
Number verifier

Checks every number in every section and narrative against its linked cell — value, rounding, population and column — compares each new delivery cell by cell and flags the sentences that quote a changed value.

  • Blocks approval on any mismatch
  • Runs again on every re-issue
Template checker

Confirms every required ICH E3 heading is present, every “Table x” and “Section y” cross-reference resolves, and the house style is followed.

  • Reports only — never rewrites signed text
Biostatistician and medical writer

Sign efficacy and narratives. The agents propose; a named person decides.

Ask in plain words

Ask about any number, section or narrative

Ask about any number, section, narrative or re-cut in the report — or say what to change. Every answer points to its source.

Where does 62.4% come from?

62.4% is the PASI 75 response at Week 16 with Veltrimab 150 mg — 267 of 428 participants. It comes from Table 14.2.1.1, row “PASI 75 responders”, column “Veltrimab 150 mg (N=428)”, full analysis set with missing data counted as non-response. Program t_eff_prim.sas, run Oct 2 at 18:42. It is quoted in sections 11.4.1 and 13.

Which narratives are waiting on a site?

Two: 302-0207-0119 (acute cholecystitis — discharge date missing) and 302-0618-0026 (pulmonary embolism — CT report not yet received). Both queries went out on Oct 3; the narrative writer will re-draft as soon as the site replies.

Add a rule: flag any narrative without a hospital discharge date

Done. Every serious-event narrative that involves a hospital stay is now checked: if the discharge date is not in the listings or the SAE eCRF page, the narrative is flagged and a query is drafted for the site. It applies to all 38 serious-event narratives — 1 is flagged today (302-0207-0119).

Summarize safety for the medical monitor

To Week 16, adverse events were reported in 57.9% of Veltrimab and 52.3% of placebo participants. Serious events: 6.1% versus 5.6%; serious infections 1.4% versus 0.9%. One death — a fatal myocardial infarction on Day 97, adjudicated as cardiovascular death and assessed as not related. Injection site erythema was the only event clearly more frequent with Veltrimab (3.3% versus 0.9%).

Every screen

The working solution, as it ships.

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

The reportSections with their status, the draft set like a report page, and the source tables it quotes beside it.
Number to cellClick a number and its table opens at the exact cell, joined by a line, with the value exactly as delivered.
Checking a re-cutThe number verifier reads the re-cut, compares it cell by cell and finds every sentence that quotes a changed cell.
Flagged sentencesEach flagged number shaded, the old value struck and the new one beside it, in the text and in the table.
A signed section flaggedThe re-cut reaches an approved subgroup section; its two changed numbers are flagged before anything changes.
Number checkEvery number in the results beside its source cell, delivery and check, filtered to those a re-cut changed.
Update to the re-cutEvery replacement by section, and which sections go back to review, before the text is updated.
Signature withdrawnThe updated section back to review, its signature withdrawn by the re-cut, every number matching its cell.
Patient narrativesSerious events, discontinuations and events of special interest, with arm, onset, seriousness, progress and status.
One narrative and its sourcesThe listings beside the narrative, each fact numbered to its source, and the ICH E3 12.3.2 elements checked.
Study outputsEvery delivery from biostatistics compared with the last, and each output with the sections that quote it.
DashboardLock to first draft against reports written by hand, narratives by week and status, and where the writing time goes.
Your rulesTemplate, rounding and style, who signs each part, and the rules every draft is checked against.
Governance

Built for submission: cited, re-checked, signed.

Every number cites its cellEach number in the report links to its table, row, column and program run, and each narrative fact to its listing row. A section cannot be approved while any number lacks a source cell.
The right person signs each partEfficacy sections are signed by biostatistics, safety sections by the medical monitor, narratives by medical writing and the final report by the clinical lead. Each approval is an electronic signature with its meaning, date and time.
A re-cut flags the text that quotes itEvery delivery from biostatistics is kept and compared cell by cell with the last. Each sentence that quotes a changed cell is flagged with the old and new value, and approval and export are held until it is resolved.
A changed section is signed againWhen an update changes an approved section, its signature is withdrawn and it goes back to its signer. A signed section never changes silently.
Every version and step keptEach change makes a new version, and earlier versions are kept and can be compared. Deliveries, agent steps, comments and signatures are recorded with who, what and when.
Agents draft; people decideThe agents draft, check and propose. They never approve, never sign and never change signed text without a person, and unblinded outputs are visible only after database lock.
Configuration

Your template, your sign-offs, your rules

The template the agents write into, how numbers are quoted, who signs each part and the rules every draft is checked against are settings.

SettingDefaultChoose from
Report templateICH E3 house template v4.2ICH E3 house template v4.2 · ICH E3 abbreviated report v2.0 · Phase 1 report template v1.3
PercentagesAs in the table (one decimal)As in the table (one decimal) · Whole numbers in the summary only
Writing styleHouse style guide 2026House style guide 2026 · Journal style (AMA 11th)
Efficacy sections signed byOmar Haddad · BiostatisticsOmar Haddad or Dana Okafor (Biostatistics)
Safety sections signed byDr. Sam Patel · Medical monitorDr. Sam Patel (medical monitor) or Dr. Maya Chen (medical writing)
Final report signed byLena Ortiz · Clinical leadLena Ortiz (clinical lead) or Dr. Maya Chen (medical writing)
Block approval when a number has no source cellOnOn · Off
Send safety sections to the medical monitor before medical writingOffOn · Off
Connections

Works with the outputs your report is written from

Tables, listings and figuresRTF and PDF outputs from the locked database, read cell by cell
Re-cuts and re-issueseach new delivery from biostatistics, compared cell by cell with the last
Statistical analysis planendpoint names, populations and analysis methods
CSR template and style guideyour ICH E3 house template and house style
Participant listings and SAE eCRF pagesadverse events, dosing, history, medications, laboratory values and adjudication records
Wordthe report exported to Word once every number matches
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
5days
from database lock to a first full draft
By hand≈ 68 days
With agents≈ 5 days
target
100%
of numbers linked to their table cell
every number checked before approval
target
2min
to find every sentence a table re-cut changed
By hand≈ 1–2 days of re-QC
With agents≈ 2 minutes

“demo” = seen in the working solution, on its sample study data · “target” = the design goal, measured in the live solution · “estimated” = our estimate · by hand = the same team's last six reports, in the solution's sample data · report structure follows ICH E3. People, studies and products named on this page are fictional — characters and sample data in the working solution.

Questions

What medical writing teams ask us.

What is clinical study report authoring software?

Software that helps medical writers turn a trial's locked tables, listings and figures into the ICH E3 clinical study report. Clinical Study Report Authoring drafts the results sections and patient narratives with five agents, links every number to its table cell and every narrative fact to its listing row, and leaves the decisions and signatures to people.

How does it handle a re-cut from biostatistics?

Every delivery is kept and compared cell by cell with the last. When an output is re-run, the number verifier finds every sentence that quotes a changed cell and flags it with the old and new value side by side. Approval and export are held until the writer updates the text, and an approved section that changes goes back to its signer.

Does it write patient narratives?

Yes. The narrative writer drafts narratives for deaths, serious adverse events, discontinuations and events of special interest from the participant listings and SAE eCRF pages, with the ICH E3 12.3.2 elements, and cites every fact to its source. When a fact is missing it drafts a query to the site instead of guessing.

Can the AI put a number in the report that is not in the tables?

It is built not to. The results writer writes only numbers it can link to a cell in the locked outputs, and the output reader stores every value exactly as printed. The number verifier checks each number's value, rounding, population and column, and a section cannot be approved while any number lacks a source cell or does not match it.

Do people stay in control of the report?

Yes. The agents draft, check and propose; they never approve or sign. Efficacy sections are signed by biostatistics, safety sections by the medical monitor, narratives by medical writing and the final report by the clinical lead, each with an electronic signature and its meaning.

Can we use our own CSR template, style guide and sign-off owners?

Yes. The report template, how percentages are rounded, the writing style, who signs efficacy, safety, narratives and the final report, and the rules every draft is checked against are settings.

How long does it take to go live?

The Agentic Solution Engine builds and deploys it from your requirements and documents — your CSR template, style guide, SAP and a past study's outputs — and it goes live once every quality gate has passed. We will walk you through it on one of your own studies first.

See it on
your study outputs.

We'll run Clinical Study Report Authoring on the outputs and template of one of your own completed studies.