What gets annotated

SNVs — single-nucleotide variants

A→G, C→T substitutions including missense, synonymous, splice-site (±1/2 from exon boundary), and nonsense (premature stop). Streamed from upstream alignment (BWA-MEM, ISAAC, or the aligner your sequencer ships with) as standard VCF/VCF.GZ.

Small indels

1–50 bp insertions and deletions, including frameshift and in-frame indels. Each variant is normalized to left-alignment with split multi-allelic records separated so each REF/ALT pair gets its own annotation row — matches what your internal VCF normalization step would do.

VCF/VCF.GZ ingest is the only required input. No platform-specific configuration — any sequencer that emits standard VCF (Illumina, PacBio HiFi/Revio, Element, Oxford Nanopore, BGI) feeds directly into the same pipeline.

Annotation sources

ClinVar

Pathogenicity significance (Pathogenic / Likely Pathogenic / VUS / Likely Benign / Benign), associated condition, and review status. Pulled per variant record; surfaced verbatim in the interpretation narrative.

gnomAD v4

Population allele frequency via the gnomAD GraphQL API, cached in the frequency_cache table for repeat lookups. Tier coloring shown in dashboard and PDF: <1% rare 1–5% uncommon >5% common

OMIM

Gene–disease associations surfaced in the interpretation narrative when a P/LP variant is in an OMIM-phenotype gene. Helps tie the call to a clinical differential.

ACMG/AMP auto-classification

The rule engine in lib/acmg-classifier.js runs after AI annotation. It aggregates ClinVar significance, gnomAD frequency, variant type, and gene-level LoF intolerance into the standard ACMG/AMP verdict set. The full criteria string and a plain-language summary are stored per-variant.

The verdict (Pathogenic / Likely Pathogenic / VUS / Likely Benign / Benign) plus the criteria code string appears as a sortable column in the dashboard and as a color-coded badge in every report template.

Pipeline stages

Stage 1

Ingest & parse

VCF header stripped, variant records normalized (left-aligned, multiallelic split per REF/ALT pair). HGVS genomic notation computed directly from chr:pos:ref:alt as g. string. Zygosity (Hom/Het/Hem) read from the genotype field.

Stage 2

Parallel annotation

gnomAD v4 GraphQL lookups (cached in frequency_cache by chr:pos:ref:alt key) run concurrently with the AI annotation call via lib/polsia-ai.js. Real gnomAD API value overrides any AI-estimated frequency.

Stage 3

ACMG classification

Rule engine in lib/acmg-classifier.js runs after annotation; verdict, criteria string, and plain-language summary written to variants.acmg_verdict, acmg_criteria, acmg_summary.

Stage 4

Report generation

lib/pdf-generator.js + lib/report-templates.js render the chosen template (Standard / Rare Disease / Oncology / Carrier Screening) into a downloadable PDF. Template select is a dropdown in the dashboard PDF bar.

What every report contains

See a live annotated report →

See one variant annotated end to end — including ACMG criteria codes, evidence summary, and HGVS notation — on the example annotated variant page.

Next step

Ready to run your first samples?

5 free samples, no contract. Upload a VCF and get an annotated clinical report. Institutional pilots (10+ samples) include a signed BAA + DUA + dedicated onboarding engineer before first upload.