The methodology.
CardioSense is a cardiovascular risk screening instrument built on a gradient-boosted decision tree ensemble. It ingests eleven structured clinical signals and emits a calibrated probability of disease, intended as a triage aid — never as a substitute for clinical judgement.
Inputs
The eleven signals consumed at inference time.
- Age
- Years, integer · 1–120
- Sex
- 1 female · 2 male
- Height & weight
- cm / kg — used to derive BMI
- Systolic / diastolic BP
- mmHg
- Cholesterol
- 1 normal · 2 above · 3 well above
- Glucose
- 1 normal · 2 above · 3 well above
- Smoke / alcohol / active
- Binary lifestyle factors
Model
What sits behind the API.
- Algorithm
- XGBoost gradient-boosted classifier
- Training corpus
- ≈ 70,000 patient records — Cardiovascular Disease Dataset + Framingham-derived features
- Output
- Probability ∈ [0, 1] · binary label · model confidence
- Inference layer
- Flask service on Railway, called via TanStack server function
- Persistence
- Managed Postgres with row-level security per user
Limitations
Read these before trusting the number.
- Not diagnostic
- Screening only — never replaces clinical judgement.
- Population bias
- Training data skews adult European demographics.
- Static features
- No time-series, ECG, or imaging signals are used.
- Calibration drift
- Probabilities are calibrated on training data; real-world distribution may differ.
FAQ
Common questions about scope and accuracy.
No. It is a screening aid. The output is a calibrated probability intended to support — never replace — a clinician's judgement.
≈ 70,000 anonymised patient records from the public Cardiovascular Disease Dataset, augmented with Framingham-style features.
On held-out validation: ~73% accuracy, AUC 0.79. Performance degrades on populations under-represented in training (notably non-European cohorts).
The original dataset codes cholesterol and glucose as ordinal levels rather than raw mg/dL values, so the model expects the same coding at inference.
In an encrypted Postgres database with row-level security — only your authenticated account can read, write or delete your own records.
Yes. Each record can be deleted from History at any time, immediately and permanently.
⚕ For screening and educational use only
Try it →