Skip to content

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.

  1. 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.

  2. 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.

  3. Upload a raw FID archive.

    Open SpectraCheck, choose Upload FID, and drop the raw instrument bundle. For Bruker data, upload the fid file with its acqus parameter file. For Agilent data, upload the raw fid binary. JCAMP-DX .jdx files can be used when raw FID evidence is not available. MolTrace stores the original archive read-only for audit and reprocessing.

  4. 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.

  5. 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.

FileCapture
quickstart-step-1.pngSign-up or workspace confirmation screen.
quickstart-step-2.pngNew project modal with project metadata fields.
quickstart-step-3.pngFID upload screen with raw file and parameter file accepted.
quickstart-step-4.pngResults view with peak table, confidence score, and contradiction panel.
quickstart-step-5.pngExport dialog with jurisdiction and format options visible.

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.

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_weighting option (uniform | boltzmann, default uniform) 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. Default uniform keeps 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, default generic). 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). New POST /candidates/compare/jcoupling endpoint returns per-candidate labels (strong | partial | weak | poor_j_agreement plus j_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/multiplets endpoint 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 a generate_synthetic_multiplet forward 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_window so 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-history returns 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: true via POST /admin/users/{user_id}/gsd-graduation with a required reason. Graduated tenants see experimental: false on their own /spectrum/analyze/gsd responses; 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 same flip_readiness_verdict + flip_readiness_reasons + flip_readiness_policy payload comes back, just scoped to one tenant’s slice of the audit stream. scope_actor_user_id echoes 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_reasons so the FE renders the “ready to flip experimental: 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 flip experimental: false on 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/gsd now writes a structured spectrum.analyze_gsd audit 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 via GET /audit/events?event_type=spectrum.analyze_gsd. The countdown to flipping experimental: false is 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, and baseline_noise_sigma for 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/process now complete in under a minute.