Utah Vehicle Health
Predicting a returning vehicle's next-episode first-attempt non-pass outcome.
One focused prediction question — a development prototype, not a population study or decision tool.
Kevin Bell · Summer 2026 development prototype
Research question
Using only information available before an inspection episode begins, how well can a calibrated logistic regression estimate whether a returning vehicle's next episode will have a first-attempt non-pass outcome?
- Attempts ≤ 30 days apart form one episode — rapid fail/retest sequences never become repeated target rows.
- The target is the first attempt of a returning vehicle's next episode.
- Non-pass combines fail, reject, and abort; blanks stay unlabeled.
Development data
Complete histories for a non-representative sample
Pipeline reconciliation counts — not Utah totals. Page sampling over-represents vehicles with more records, and feeds do not cover all 29 counties.
Leakage-safe design
Every feature window ends before the target
Uses (all pre-episode)
- Prior outcomes, history depth, timing
- Vehicle age, season, public county context
- Previously observed make / model
Excludes
- Current-test diagnostics & later attempts
- Future records, identifiers, stations, technicians
The 2025 gate was opened once after specs were frozen — a development holdout, not a pristine future test.
Model comparison
| Model | Role | PR-AUC | Brier |
|---|---|---|---|
| Training prevalence | Baseline | 0.123 | 0.1076 |
| Previous episode | Baseline | 0.158 | 0.1731 |
| Logistic + Platt | Final | 0.261 | 0.1011 |
| Boosted tree + Platt | Benchmark | 0.238 | 0.1024 |
Logistic beat both baselines and the boosted-tree benchmark. We avoid the word “accuracy,” which hides class imbalance and calibration.
Model decision
Keep calibrated logistic regression
-
Final model: calibrated logistic regression
(
C=0.03, Platt scaling). - Benchmark only: histogram gradient boosting — not a second final model.
- The tree did not improve the declared sample metrics enough to justify its complexity.
- Logistic regression is easier to audit and explain.
Switch to the dashboard
Follow demo_script.md. Keep the development-preview
banner in view. Show logistic as final, the tree as benchmark-only,
and that there is no vehicle-level prediction service.
Privacy architecture
A deliberately narrow public boundary
- No VINs, plates, ZIPs, stations, technician IDs, private tokens, raw JSON, credentials, operational records, or row-level predictions.
- The browser has no database connection.
- The dashboard fails closed if its aggregate contract does not validate.
Limitations
What this sample cannot claim
- The page-sampled cohort is not population-representative.
- Feeds are partial and change over time.
- Geography and source era are confounded.
- Reject / abort do not necessarily mean mechanical failure.
- 2025 is a one-time development holdout, not external validation.
- Sample associations do not support county rankings or causal conclusions.
Close
A complete, honest development prototype
One precise question · a leakage-safe timeline · calibrated logistic regression as the final model · a boosted-tree benchmark · a privacy-reviewed static dashboard.
The value is the discipline of making only the claims the data and release boundary can support.
Questions?
Happy to go deep on episode construction, calibration, privacy, or the dashboard.