GeneRisk AI

ML-Powered Cancer Risk Prediction

LIVEPythonXGBoostReactRailwayFlaskscikit-learn
GeneRisk AI dashboard showing DNA sequence risk classification results and model confidence scores

Outcome metrics

97.37%
Classification accuracy on held-out test data
<1s
Typical end-to-end prediction response time
1 API
Flask service backing both dashboard and batch use

The problem

Genomic risk screening is dominated by tooling built for bioinformaticians: command-line pipelines, file formats nobody outside the lab reads, and turnaround measured in hours. The people who need the answer — clinicians, researchers running a first-pass triage — are not the people the tooling was designed for. We wanted to find out whether a well-engineered gradient-boosted model behind a plain web interface could return a defensible risk classification from a DNA sequence in under a second, without asking the user to learn a pipeline.

The approach

Feature engineering over raw sequence

Raw nucleotide sequences are not directly usable by a tabular model, so the first half of the work was representation. We built a deterministic feature extraction stage that turns each sequence into a fixed-width numeric vector, then held that stage constant so every later accuracy comparison measured the model rather than the preprocessing.

  • k-mer frequency encoding across multiple k values to capture local motifs
  • GC content, sequence length and composition-ratio features
  • Deterministic, versioned preprocessing shared by training and inference

Model selection and validation

XGBoost was chosen over a deep sequence model deliberately: on this dataset size it trained in minutes rather than hours, produced per-feature importances a domain reviewer could interrogate, and gave up nothing measurable in accuracy. Validation used stratified splits with a test set untouched until the final evaluation.

  • Stratified train/validation/test split preserving class balance
  • Hyperparameter search over depth, learning rate and subsampling
  • 97.37% accuracy on the held-out test set, with the confusion matrix reviewed rather than the headline number alone
  • Feature importance surfaced in the UI so a prediction can be questioned

Serving it to non-specialists

A Flask API loads the serialised model once at process start and exposes a single prediction endpoint; a React dashboard handles sequence input, validation and result presentation. Both are deployed on Railway, which kept infrastructure work proportional to the size of the project.

  • Model loaded once at boot, not per request
  • Input validation and clear error states for malformed sequences
  • Results presented with confidence, not as a bare label

The outcome

GeneRisk AI classifies a submitted DNA sequence at 97.37% accuracy on held-out test data and returns the result, with model confidence and contributing features, in about a second — through a browser, with no bioinformatics pipeline for the user to install or operate.

  • 97.37% accuracy on a held-out test set the model never saw during tuning
  • Sub-second typical prediction latency end to end
  • Explainable output: contributing features shown alongside every prediction
  • Deployed and reachable as a normal web application, not a research notebook

A public URL for this product is not currently published. The figures above come from HEILC's own build and evaluation records for the project.

Bring us the next one

If your problem looks like any of these — a model that needs to be trusted, a corpus that needs to be searchable, a deadline that is not moving — we should talk.