Quick Start
Use this guide to create a project, upload a first spectrum, review the result, and export an ICH-ready report. Each production step must ship with a screenshot or short screen recording before customer onboarding.
Five-minute path
Section titled “Five-minute path”-
Create an account.
Go to the MolTrace app, sign up, confirm your email, and open your workspace. Your workspace isolates projects, files, reports, and audit events by organization.
-
Create your first project.
Click New Project, enter a compound, batch, or study name, and choose the organization that owns the data. Use a name that will still make sense in the audit log six months later, such as
Batch 001 - Ibuprofen impurity review. -
Upload a raw FID archive.
Open SpectraCheck, choose Upload FID, and drop the raw instrument bundle. For Bruker data, upload the
fidfile with itsacqusparameter file. For Agilent data, upload the rawfidbinary. JCAMP-DX.jdxfiles can be used when raw FID evidence is not available. MolTrace stores the original archive read-only for audit and reprocessing. -
Review the result.
Wait for processing to complete, then inspect the peak table, confidence score, impurity flags, contradictions, and evidence trail. Treat confidence above
80%as review-ready only when the contradiction panel is clear. Resolve amber warnings and impurity flags before accepting the interpretation. -
Export your report.
Click Export, choose ICH Report, select the jurisdiction, and choose PDF or Word. Supported jurisdiction options should include FDA, EMA, PMDA, and Health Canada when the corresponding regulatory content has been verified. The exported report includes reviewed evidence, threshold context, approvals, software version, and audit trail entries.
Required screenshots
Section titled “Required screenshots”| File | Capture |
|---|---|
quickstart-step-1.png | Sign-up or workspace confirmation screen. |
quickstart-step-2.png | New project modal with project metadata fields. |
quickstart-step-3.png | FID upload screen with raw file and parameter file accepted. |
quickstart-step-4.png | Results view with peak table, confidence score, and contradiction panel. |
quickstart-step-5.png | Export dialog with jurisdiction and format options visible. |
Screenshot gate
Section titled “Screenshot gate”Before this page is customer-facing, capture one screenshot for every numbered step. If any step cannot be captured cleanly, the product flow should be simplified before the documentation ships.
The usability test is simple: hand this page to someone who has never used MolTrace. If they cannot reach a downloaded report without help, rewrite the confusing step and log the product friction in the roadmap.
Recent changes
Section titled “Recent changes”Every release of the MolTrace backend ships notes describing new detectors, validation results, and contract additions. See the Changelog for the running log.
Highlights tenants will notice from the latest releases:
- v0.7.5 — Boltzmann conformer weighting fixes the sugar blind spot. When Karplus 3D refinement is enabled, the new
karplus_conformer_weightingoption (uniform | boltzmann, defaultuniform) weights each conformer by its MMFF-energy Boltzmann population instead of counting it once. Measured corpus effect: β-D-galactose recovers from 8.49 → ~10.1 Hz onto its literature value, and the locked-vs-mobile separation widens. The clean result — once conformers are population-weighted, the generic Karplus relation discriminates better than the electronegativity-corrected HLA one, so the sugar gap was a weighting problem, not an equation one. Defaultuniformkeeps existing responses byte-for-byte identical. - v0.7.4 — Selectable Haasnoot–Altona Karplus relation (with an honest negative result). The vicinal-³J refinement gains a second relation via
karplus_method(generic | haasnoot_altona, defaultgeneric). HLA recovers covalently-locked diaxials per-conformer (trans-decalin at 11.64 Hz, above the generic ceiling), but a candid corpus study — shipped as a regression gate — shows it doesn’t improve averaged discrimination under unweighted conformers, which motivated the v0.7.5 weighting fix. Ships opt-in and default-off. The SpectraCheck J-agreement panel surfaces a “J prediction model” toggle (Topological / Karplus 3D → relation + weighting) so reviewers can compare deliberately. - v0.7.2–v0.7.3 — Opt-in Karplus 3D ³J refinement + measured-accuracy gate. Layer 40’s topological J-predictor can replace the flat 7.0 Hz vicinal placeholder with a conformer-averaged Karplus estimate (RDKit ETKDGv3 + MMFF). Validated against an 8-molecule literature corpus at 0.44 Hz mean absolute error with clean locked-vs-mobile separation. Default-off and byte-identical when omitted.
- v0.7.1 — Multiplet J-couplings now score candidate structures. The recovered J-couplings from v0.7.0 multiplet analysis feed the unified candidate-confidence engine as the 40th evidence layer (
multiplet_jcoupling). NewPOST /candidates/compare/jcouplingendpoint returns per-candidate labels (strong | partial | weak | poor_j_agreementplusj_coupling_contradiction) so the FE can render a J-agreement badge per candidate. Connectivity-based contradiction capping flags candidates whose topology cannot produce a large observed J. Purely additive: existing callers unchanged when no multiplet input is supplied. - v0.7.0 — Multiplet analysis with GSD-enhanced J-coupling. New
POST /spectrum/analyze/multipletsendpoint takes a GSD peak list and returns the recognised multiplets (s/d/t/q/p/sext/sept/dd/dt/td/ddd/m) with recovered J couplings. Includes agenerate_synthetic_multipletforward modeller exposed via per-multiplet predicted-vs-observed overlay positions so the FE can render the synthetic pattern in light red over the observed peaks. Closes Prompt 4: 8 quinine multiplets resolved with J values within 0.3 Hz of literature, and a known hidden 11.4 Hz coupling benchmark recovered where standard peak picking misses it. - v0.6.10 — Adoption-velocity telemetry rolled into the rollup, closing the v0.6 GSD soak loop. The rollup gains
newly_graduated_in_windowso adoption-velocity charts can show “X tenants graduated this quarter” alongside the v0.6.8 “X tenants total are graduated” snapshot. The full readiness panel — per-call metrics + flip verdict + current adoption + velocity — now fits in a single API call, with the per-tenant graduation history as a second call for the auditor view. The v0.6 GSD soak loop (v0.6.0 → v0.6.10, eleven releases) is feature-complete. - v0.6.9 — Per-tenant graduation history endpoint.
GET /admin/users/{user_id}/gsd-graduation-historyreturns the full graduate/ungraduate history of a tenant in newest-first order, each event carrying the admin’s documented reason and structured before/after state. Auditors can reconstruct every graduation decision without filtering the global audit-event stream client-side. - v0.6.8 — Adoption telemetry rolled into the readiness panel. The GSD telemetry rollup now carries
graduated_user_count— full platform count on the global rollup, 0-or-1 when scoped via?actor_user_id. The readiness panel can render “X tenants graduated” without a separate user-list scan. The full v0.6 soak story now fits in one API call. - v0.6.7 — Per-tenant graduation knob shipped. Admins can now graduate individual tenants out of
experimental: trueviaPOST /admin/users/{user_id}/gsd-graduationwith a required reason. Graduated tenants seeexperimental: falseon their own/spectrum/analyze/gsdresponses; the soak telemetry splits cleanly between still-experimental and graduated calls so dashboards can track adoption. The full pipeline now reads end-to-end: telemetry → rollup → verdict → graduation action. - v0.6.6 — Per-tenant graduation readiness verdict. The GSD telemetry rollup now accepts
?actor_user_id=<id>(admin-only) so admins can graduate individual tenants out of the experimental backend ahead of the platform-wide flip. The sameflip_readiness_verdict+flip_readiness_reasons+flip_readiness_policypayload comes back, just scoped to one tenant’s slice of the audit stream.scope_actor_user_idechoes the request scope so the response is self-describing. - v0.6.5 — Backend-owned flip-readiness verdict. The GSD telemetry rollup now includes
flip_readiness_verdict("insufficient_data" | "clear" | "blocked") +flip_readiness_reasonsso the FE renders the “ready to flipexperimental: false?” decision as-is instead of hand-coding thresholds. Policy snapshot (500-invocation floor, 5 % error ceiling, 95 % solvent-detect floor) ships in every response, so a future policy tightening is a one-line backend change. - v0.6.4 — Server-side aggregation for the GSD readiness panel. The new
GET /spectrum/analyze/gsd/telemetry-summary?window_days=90(admin-only) returns a pre-aggregated rollup — invocations, error rate, median / p95 wall time, solvent auto-detect rate, slices by nucleus / level / error kind — so the admin readiness panel renders in a single round trip instead of pulling every event and aggregating in the browser. Together with the raw per-event stream (v0.6.3), the workflow to flipexperimental: falseon the GSD backend is fully covered: per-event audit for tenant inspection, aggregate rollup for the operational review. - v0.6.3 — Soak telemetry for the opt-in GSD backend. Every call to
POST /spectrum/analyze/gsdnow writes a structuredspectrum.analyze_gsdaudit event capturing request shape (level, nucleus, declared solvent, field MHz, input size, wall time) and outcome shape (peak / environment counts by category, detected solvent labels, error class when the call fails). Tenants can query their own events viaGET /audit/events?event_type=spectrum.analyze_gsd. The countdown to flippingexperimental: falseis now measured on tenant data, not gut feel. - v0.6.2 — Validation now spans a real 100-fixture HMDB corpus. The opt-in GSD backend now ships with a curated 100-fixture real-instrument HMDB validation corpus (60 × ¹H + 40 × ¹³C, mix of Bruker and Varian raw FIDs) on top of the existing NMRShiftDB2 corpus and the HMDB-style synthetic mini-corpus. 95 of 100 real HMDB fixtures parse cleanly and 93 % of those with a known solvent auto-detect the expected peak — the literal Prompt 3 validation criterion is now met on real instrument data, not just curated test sets.
- v0.6.1 — Per-peak QC fit metrics on every detector. The peak table now exposes
fit_redchi,fit_rmse,fwhm_ppm,signal_to_noise, andbaseline_noise_sigmafor every raw-FID peak — the same regulatory-tier QC quintuple the GSD backend already published. Look for the per-peak QC expand in the SpectraCheck peak table. - v0.6.0 — Strict production-promotion gate cleared. The opt-in Mestrenova-style GSD backend (Step 2’s “GSD” selector option) now clears its 95 % solvent auto-detect + median compound-environment delta ≤ 2 promotion target on the curated NMRShiftDB2 corpus.
- v0.5.0 — 8.5× speedup on dense ¹³C. Heavy ¹³C raw FIDs that previously took 5+ minutes through the legacy
/nmr/raw-fid/processnow complete in under a minute.