Module 3 sections · Training guide
Specification Builder
Set tests and acceptance criteria, check them against ICH Q6A and the impurity thresholds for your maximum daily dose, and write the specification, analytical procedures, justification and excipient sections.
Open the tool at https://app.cmcfy.com/app/specification-builder.html. This guide is also online at https://cmcfy.com/guides/specification-builder.html
1. What this module does
The module writes 3.2.S.4.1, 4.2 and 4.5 for a drug substance, or 3.2.P.5.1, 5.2, 5.6 and 3.2.P.4 for a drug product. It works out the ICH Q3A or Q3B reporting, identification and qualification thresholds from your maximum daily dose and checks every impurity limit against them.
It also checks that the tests ICH Q6A expects for the dosage form are present, that residual solvent limits meet ICH Q3C, and that every non-compendial method has a procedure summary.
What you get
- Word or PDF files for the specification, analytical procedures, justification of specification and control of excipients.
- A summary file that the Batch Analysis & CoA, Development Studio and QOS Composer & Dossier Assembler can read.
2. Before you start
Have these ready. You can still start with the example data and replace it piece by piece.
- Maximum daily dose of the drug substance (mg/day) and the dosage form.
- Each test with method reference, acceptance criterion and, ideally, the range of batch results.
- Each impurity with its type (specified identified, specified unidentified, unspecified, total), limit, maximum found and any qualified level from toxicology.
- Residual solvents and limits; method summaries with system suitability; excipients with their quality standard and origin.
- Status of the ICH Q3D and nitrosamine risk assessments.
3. Step by step with the example
Open the tool at app.cmcfy.com/app/specification-builder.html. The example is loaded when the page opens, so every panel already has realistic data. Follow the steps to see how it works, then replace the example with your own data.
Enter product and dose
Choose drug product or drug substance, the dosage form and the Maximum daily dose. Say whether the ICH Q3D and nitrosamine risk assessments are done. The headline shows the thresholds for your dose: for 100 mg/day, reporting 0.1%, identification 0.2%, qualification 0.2%.

Enter the specification
One test per line with method and acceptance criterion. Batch results (lowest to highest) are optional but make the justification much stronger.
Enter impurity limits and solvents
Enter each impurity with its type and limit. The tool compares each limit with the thresholds and with the batch data.

Required tests by ICH Q6A for the dosage form. Resolve alerts
The example has deliberate problems: an impurity limit above the qualification threshold with no qualified level, an unspecified impurity limit above the identification threshold, dichloromethane at 800 ppm against the Q3C limit of 600 ppm, a chromatographic method with no system suitability, and two excipients that need extra information.

Read the narratives
The justification of specification and of impurity limits are written from your data, citing the thresholds and batch results. Edit them, or use AI to polish the wording.

Preview and download
Preview 3.2.P.5.1, 5.2, 5.6 and 3.2.P.4, check the review, and download. Save the summary for the batch analysis and QOS.

4. Field reference
Every input in the tool, panel by panel. Tables accept rows pasted straight from Excel, comma-separated text, or a loaded file; check the columns after loading a file. Fields marked “when it applies” appear only for the choices that need them.
1 · Product and dose
| Field | What to enter |
|---|---|
| Specification for | Choose one: Drug product (3.2.P.5); Drug substance (3.2.S.4). |
| Submission region | Choose one: US: FDA (NDA, ANDA, BLA, IND); EU: EMA and national agencies (MAA); Both US and EU. |
| Product or substance name | Type it in. |
| Dosage form when it applies | Choose one: Solid oral (tablet, capsule); Oral liquid; Parenteral (injection); Other. |
| Maximum daily dose of drug substance (mg/day) | Sets the ICH Q3A/Q3B thresholds and the elemental and residual solvent context. Type a number. |
| Elemental impurities (ICH Q3D) | Choose one: Risk assessment done; no routine test needed; Risk assessment done; controlled by a test; Risk assessment not done yet. |
| Nitrosamines | Choose one: Risk assessment done; no risk identified; Risk identified; nitrosamine controlled in this specification; Risk assessment not done yet. |
2 · Specification
One test per line. Batch results (lowest to highest) are optional but make the justification much stronger.
| Field | What to enter |
|---|---|
| Tests | A table. Columns: Test | Method | Acceptance criterion | Batch results (min–max). Paste rows from Excel, type comma-separated rows, or press Load file (Excel, CSV, Word, PDF or a scan). |
3 · Impurity limits
Use % relative to the drug substance. Qualified level is the highest level shown safe in toxicology or clinical studies, if known.
| Field | What to enter |
|---|---|
| Impurities | Limits and results in % relative to the drug substance. A table. Columns: Impurity | Type (specified identified / specified unidentified / unspecified / total) | Limit (%) | Max found in batches (%) | Qualified level (%). Paste rows from Excel, type comma-separated rows, or press Load file (Excel, CSV, Word, PDF or a scan). |
4 · Residual solvents
| Field | What to enter |
|---|---|
| Solvents controlled | A table. Columns: Solvent | Limit (ppm). Paste rows from Excel, type comma-separated rows, or press Load file (Excel, CSV, Word, PDF or a scan). |
5 · Analytical procedures
Every non-compendial method in the specification needs a procedure summary for 3.2.S.4.2 or 3.2.P.5.2.
| Field | What to enter |
|---|---|
| Procedures | A table. Columns: Method ID | Technique | Column or instrument | Key conditions | System suitability. Paste rows from Excel, type comma-separated rows, or press Load file (Excel, CSV, Word, PDF or a scan). |
6 · Excipients (3.2.P.4) shown when it applies
| Field | What to enter |
|---|---|
| Excipients | A table. Columns: Excipient | Quality standard | Origin (synthetic / vegetable / mineral / animal) | Novel (yes/no). Paste rows from Excel, type comma-separated rows, or press Load file (Excel, CSV, Word, PDF or a scan). |
5. Checks and alerts
Calculations and pass/fail outcomes always come from fixed rules, never from AI. The tool checks:
- Every test has an acceptance criterion and a method reference; the tests ICH Q6A expects for the dosage form are present.
- Assay range no wider than 95.0–105.0% for a drug product without justification; dissolution criterion gives a Q value and a time point.
- Limits for total and for unspecified impurities; each limit against the reporting, identification and qualification thresholds for the dose; batch results above a proposed limit are critical; limits more than three times the highest batch result are flagged.
- Residual solvents against ICH Q3C Option 1; Class 1 solvents flagged.
- ICH Q3D and nitrosamine risk assessments done; when a risk needs a test, the test is in the specification.
- Every method has a procedure summary; chromatographic methods have system suitability criteria.
- Excipients of animal origin, in-house standards, novel excipients and missing quality standards are flagged for 3.2.P.4.
How to resolve alerts
- Critical alerts block the download and must be fixed in the data. A failing result can instead be linked to an investigation: type the investigation reference and outcome and press Record.
- Major alerts block the download until you fix them or type a justification and press Accept justification.
- Minor alerts do not block anything. They are listed in the documents so the reviewer sees them.
- Some alerts have an Apply fix button that makes the change for you. Reopen undoes a justification.
Narratives
This module writes: Justification of specification; Justification of impurity limits. Each narrative is written by fixed rules from your data. You can edit it in the box. Rewrite with AI (where your plan includes AI) rewrites it in regulatory style; every number in the text is checked against your data, and a number that does not match is flagged under the box and blocks the download until you correct it. Reset to rule-based text brings back the original.
6. Preview, gap review and download
- Press Preview next to a section, or Preview and download all. The document opens in a preview window, exactly as the Word file will read.
- The left side lists the review, run on your device: gaps in the data (missing values, open alerts), gaps in the report (missing content the guidance expects, placeholders such as [site] or TBD left in the text) and, if you load the approved protocol under Compare with the protocol, differences from the protocol (requirements, criteria, batches or time points it plans that the report does not show).
- Click a finding to jump to the place in the preview. Fix it in the tool, then preview again.
- Optional AI review: a second read for contradictions, claims without data and vague wording. The report text is sent to Claude only when you press it, and only where your plan includes AI. Check every AI finding; AI can be wrong.
- Press Download Word (.docx) or Download PDF. With several documents open, All as Word (.zip) and All as PDF (.zip) download the set. The download buttons stay disabled while a blocking alert is open; the preview still works.
Documents this module produces
| Section | Document |
|---|---|
| 3.2.P.5.1 / 3.2.S.4.1 | Specification(s) |
| 3.2.P.5.2 / 3.2.S.4.2 | Analytical procedures |
| 3.2.P.5.6 / 3.2.S.4.5 | Justification of specification(s) |
| 3.2.P.4 | Control of excipients (drug product) |
Use Save project to keep your work as a file on your computer, and Open project to continue later. Start blank clears every field; Load example brings the example back. Nothing is stored on CMCfy servers.
7. US and EU submissions
US mode cites USP general chapters (for example USP <905> uniformity of dosage units, <711> dissolution). EU mode maps them to Ph. Eur. (2.9.40, 2.9.3) and flags any method that cites USP/NF only. Choose Both US and EU to cite both. The ICH thresholds are the same in both regions.
8. Working with other modules
- Add this summary in the Batch Analysis & CoA under Specification from Specification Builder: its tests replace the specification table there.
- The Development Studio uses it to confirm that critical attributes have a test.
- Impurity assessments (M7, nitrosamines, Q3D) are written in the Impurity & Risk Studio.
- Excipients needing more than a compendial reference are written in full in the Excipients Writer module.
9. Common pitfalls
- Entering the dose per unit instead of the maximum daily dose. The thresholds depend on the daily dose.
- Proposing limits far above batch experience with no justification; reviewers ask for limits based on data.
- Leaving "Risk assessment not done yet" for Q3D or nitrosamines at submission; both are expected.
- Using different test names here and in the batch analysis. Batch results are matched to tests by name.
10. Practice exercises
Each exercise starts from the example (press Load example to reset). We run these on every update of this guide, so the result you see should match.
See the thresholds move with the dose
Change Maximum daily dose of drug substance (mg/day) to 2000.
Expected resultThe headline note now gives the thresholds for 2000 mg/day: reporting 0.05%.
Mark the nitrosamine risk assessment as not done
Set Nitrosamines to "Risk assessment not done yet".
Expected resultA major alert says the nitrosamine risk assessment is not done.
Fix the residual solvent limit
In Solvents controlled, change dichloromethane from 800 to 600 ppm.
Expected resultThe alert about the Q3C Option 1 limit of 600 ppm is gone.