We drafted two of the hardest Module 3 CMC sections and scored them against the filed dossier.
A pharmaceutical manufacturer gave us the source library behind a filed Module 3. Asthra drafted from the sources; we scored every subsection side by side against what was filed.
A real filing, with its source library.
CMC dossiers aren't published the way clinical study reports are, so there is no public golden to test against. Instead, a pharmaceutical manufacturer shared the validation reports, specifications and test procedures its CMC team wrote from, together with the Module 3 sections it filed.
That makes the same fair test possible. Asthra gets the inputs the team started from, and we compare what it writes with what was actually submitted. Nothing is synthetic, and nothing was written with this benchmark in mind. The manufacturer and product are not named here.
Two of the hardest sections in Module 3 CMC
Both sit in the drug product part of Module 3, and both are where CMC reviewers dig hardest. One has to reconcile a mountain of validation evidence; the other has to be exact to the last digit.
3.2.P.3.5 Process validation and evaluation
Has to show the commercial process works every time. The evidence sits in dozens of qualification and validation reports, they don’t always agree, and the section has to reconcile them into one argument.
3.2.P.5.1 Specifications
Every test, acceptance criterion and release versus shelf-life limit, in one table reviewers check line by line. A rounded or shifted value is an error.
Draft blind, score side by side.
The filed sections are the answer key. Asthra never sees them. Every subsection is scored by reading the two versions against each other.
Start from a real filing
A pharmaceutical manufacturer gave us the source library behind a filed Module 3, and the filed sections themselves. Those sections become the golden: what a professional CMC team actually submitted.
Hide the answer, keep the sources
Asthra gets the validation reports, specifications and test procedures a CMC writer starts from. The filed sections are held back. Asthra plans retrieval, drafts to the company’s module template, cites to file and page, and runs its own QC.
Extract a fact key from the golden
For each section we pull every fact the golden states: batch details, process parameters, acceptance criteria, study results, cross-references. That gives 136 scorable facts across the two sections.
Score side by side
Each subsection of the draft is read against the matching part of the golden. Every fact is marked covered, partial or missed. Every specification value is checked for an exact match. Every claim is checked for contradiction or fabrication.
Audit the gap flags
Asthra flags missing data instead of inventing it. We check each flag: was the data truly absent from the library, or did Asthra miss something it had? False gaps count against us.
Trace every miss to a cause
Each missed fact is traced through the run logs to retrieval, drafting or the harness, and becomes a regression test before the next run.
- Coverage
- Share of the golden’s facts for that subsection that the draft states, scored 0–10. Partial credit for half-stated facts.
- Numeric
- Of the specification values the draft states, how many match the filed specification exactly. A rounded or shifted value is a miss.
- Divergences
- Where the source library is newer than the filing, a different value is checked against the newer source, not marked wrong.
- Gap flags
- Inline MISSING INFO markers Asthra inserted where it could not find data, each reviewed for whether the data really was absent.
Subsection-by-subsection scorecard.
The specification is near complete. In process validation the PPQ core holds up; the points are lost in validation studies that weren't read before the time limit, and we explain why below.
| 3.2.P.5.1 Specifications | Facts covered | Coverage |
|---|---|---|
| Test rows (product and device) | 29 / 29 | |
| Shared specification across presentations | 1 / 1 | |
| Analytical method column | 3.5 / 5 | |
| Footnotes | 2 / 3 | |
| Cross-references to 3.2.P.5.2 / 5.3 / 5.6 | 1 / 1 | |
| Total | 36.5 / 39 | 94% |
| 3.2.P.3.5 Process validation | Facts covered | Coverage |
|---|---|---|
| Process design and parameters | 9.5 / 14 | |
| PPQ batches | 7 / 8 | |
| Process actuals | 5 / 6 | |
| In-process controls | 1.5 / 4 | |
| Freeze-thaw | 1 / 2 | |
| Pooling homogeneity | 3 / 3 | |
| Filtration, filling, stoppering | 8 / 9 | |
| Visual inspection | 1 / 2 | |
| Device assembly | 6.5 / 8 | |
| Hold times | 3.5 / 6 | |
| Continued process verification | 2 / 2 | |
| Media fill | 3.5 / 10 | |
| Filter validation | 2 / 8 | |
| Autoclave qualification | 3.5 / 11 | |
| Cleaning validation | 1 / 1 | |
| Shipping validation | 3 / 3 | |
| Total | 61 / 97 | 63% |
Up from 83% on 3.2.P.5.1 and 62% on 3.2.P.3.5 in the previous run. Values that follow a newer source than the filing are listed as divergences and not penalised.
What held up, and what didn't.
No invented facts
Across both sections, the reviewers found zero fabrications. Where Asthra couldn’t find something, it flagged the gap instead of writing a plausible-sounding guess.
The specification is complete and exact
All 29 test rows in 3.2.P.5.1 are present, with the right acceptance criteria and the right release versus shelf-life split. All 26 numeric limits match the filed specification.
It used the newer source
In three places the library was newer than the filing: a thaw temperature corrected by a protocol amendment, the commercial filling-speed range, and interim stopper limits. Asthra used the corrected values and listed each divergence for the reviewer.
Source conflicts surfaced, not buried
When two tables in the same PPQ report disagreed on a per-batch out-of-specification count, Asthra flagged it for reviewer attention instead of quietly picking one.
Research started too late (3.2.P.3.5)
The lead agent spent its first five minutes reading the PPQ report itself before handing work to researchers. The retrieval time limit then hit before filter validation, autoclave qualification and one media-fill report were read, costing about 12 facts.
Values read but not written
Thaw parameters, endotoxin limits and media-fill unit counts were retrieved and sat in context, but the module template didn’t ask for them in its tables, so the draft left them out. About 6 facts.
Too many gap flags
Of 13 gap flags in 3.2.P.3.5, none was a real gap. 8 were false gaps where the data was in the library, usually a report found but read only to its first page. 5 asked for detail the filing doesn’t include.
One date without a source
One media-fill run is given its incubation date instead of its run date. Minor, but it is the one claim in the run the sources don’t support.
What happens next
Each miss above is now a regression test. The lead agent hands every validation area to researchers in its first turn instead of reading the PPQ report alone; the module template now asks for thaw, bioburden and endotoxin rows in its process and in-process control tables; and the false-gap check must open a report it has already found before keeping a gap flag. Together these target about 20 of the 36 facts missed in 3.2.P.3.5.
Run it on your own product.
Point Asthra at your validation reports and specifications and compare its draft with your filed Module 3.