Live demo
CBCT Scan Validator. A pass, review or reject on every scan as it lands.
An AI quality gate that inspects every incoming dental CBCT scan the moment it lands and returns a pass, review, or reject verdict, with the specific defect class and the exact action a technician should take, ideally before the patient leaves the chair.
Walk through it, six steps
A scan lands
Studies arrive from the scanner via a chrooted SFTP endpoint or a scheduled drive mirror. An object-finalize event wakes the inference service, which scales from zero. Everything here is synthetic; real scans never leave the private environment.
The problem.
Bad scans had been slipping through for a decade: movement blur, cut-off fields of view, scanner artifacts. Each one discovered late costs a design-queue slot and a patient recall. A vendor quoted $98,200 upfront plus $2,200 a month to solve it. The bet: build it in-house on commodity cloud for two orders of magnitude less.
- ~$50/mo vs $124,600 vendor year one, ~99% cheaper over 3 years
- 0.82 patient-grouped, leakage-free eval, 191 scans
- 2.2 s OpenVINO on CPU, scale-to-zero Cloud Run
- 85% accuracy on a fixed holdout or the build fails
How it fits together.
Training
- PyTorch + Lightning + MONAI, six benchmarked architectures
- Frozen nnU-Net encoder + slice-sequence head
- DVC data versions · W&B and MLflow tracking
Serving
- FastAPI on Cloud Run, CPU only, scale to zero
- PyTorch → ONNX → OpenVINO IR baked into the image
- 2.2 s encoder pass · ~20 s event to verdict
Data flow
- SFTP endpoint + scheduled drive mirror into object storage
- Lifecycle prefixes: intake, tensors, checkpoints, holdout, archive
- Idempotent, self-healing sync with quarantine on repeat failure
Guardrails
- Header rules for defects the model cannot see
- Confidence gates: 0.80 auto, 0.50 review
- 85% CT gate in CI · tag-triggered releases
Where it landed.
Shipped about eight weeks ahead of the original schedule, at roughly $50 a month against a vendor's $124,600 first year. The honest part: after cleaning label leakage the best model sits at 0.82 AUROC, the benchmark showed the ceiling is training data rather than architecture, and the system is framed accordingly, a workflow quality gate with a human in the loop, not a diagnostic device. Every scan, name, and number in this tour is synthetic.
