| .vscode | ||
| dashboard | ||
| docs | ||
| scripts | ||
| sql | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
SummerProject2026
Kevin Bell's summer 2026 data project using state of Utah county vehicle-registration and emissions-inspection data.
See the data inventory and the data-backed project shortlist.
Selected project
The selected direction is Utah Vehicle Health, an explainable model and dashboard for the first-attempt outcome of a vehicle's next inspection episode. Start with the project charter, then use the modeling protocol and dashboard specification as the project contracts. The latest private-sample pipeline findings are summarized in development results, with intended use and limitations consolidated in the model card.
Safe database access in VS Code
The local .env file contains the standard PostgreSQL connection variables and
is intentionally excluded from Git. Never put those values in source code,
screenshots, browser JavaScript, or a Bolt project.
- Install the workspace-recommended PostgreSQL extension by Microsoft
(
ms-ossdata.vscode-pgsql). - In VS Code, run Tasks: Run Task and choose
Countydata: test read-only connection. It loads
.env, requires TLS, and forces the PostgreSQL session into read-only mode. - To browse the server visually, open the PostgreSQL sidebar and add a
connection using the values in
.env. Set SSL mode to Require, save the profile at User scope, and store the password in macOS Keychain rather than workspace settings. - Connect to
countydataand run sql/00_read_only_connection_check.sql. Safe aggregate examples are in sql/01_safe_data_overview.sql.
The selected project's first aggregate cohort check is
sql/10_episode_cohort_feasibility.sql.
Private bounded extraction is handled by
scripts/export_inspection_batch.py; it
requires the project-specific VIN_HASH_KEY described in .env.example and
never writes a raw VIN.
The current database login has write privileges even though this project only needs reads. Ask the database administrator for a dedicated read-only role before connecting any deployed service. Until then, always use explicit read-only transactions.
Reproducible development workflow
Create the local environment once:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/create_vin_hash_key.py
The recommended way to run the pipeline is Tasks: Run Task in VS Code. The tasks preserve the intended order:
- Test the read-only TLS connection.
- Run the source outcome-mapping and aggregate feasibility audits.
- Export the private 10,000-vehicle development histories.
- Build the private DuckDB warehouse and Parquet feature mart.
- Run every test.
- Train the baselines while leaving the 2025 test partition locked.
- Train the nonlinear comparison while leaving the same partition locked.
The development history sample is deliberately not population-representative. It exists to exercise feature engineering and modeling before a complete, contiguous bounded extraction is approved. Generated extracts, marts, database files, keys, and model artifacts remain under Git-ignored private paths.
The 2025 metrics are not calculated by the normal training task. Unlocking them
requires the conspicuous --evaluate-locked flag after the feature set,
hyperparameters, calibration method, and reporting plan are frozen.
That gate was opened once on the page-sampled development extract during live
verification; the normal artifact paths were then regenerated closed. The
audit trail is in development results, and no
further 2025-informed tuning is permitted.
Sanitized dashboard preview
After training both closed model bundles, run Tasks: Run Task and choose
Utah Vehicle Health: export sanitized dashboard preview. The exporter
publishes only suppression-reviewed JSON under dashboard/public/data; it
refuses the sampled mart unless the explicit development-preview flag is used
and refuses model artifacts containing holdout metrics.
Preview the site without exposing the repository root:
node dashboard/server.mjs
Then open http://localhost:4173. Do not serve the repository root, because it
contains the local connection profile and private ignored directories.
The checked-in bundle is visibly labeled as a non-population development preview. Before a real public-data release, rerun the frozen pipeline on an approved complete extraction and pass the publication review documented in the dashboard specification.
Local and Bolt handoff instructions are in
dashboard/README.md. Bolt can import a GitHub repository,
but the hosted site root must be the dashboard directory; never copy .env,
private data, model artifacts, or database tooling into a web project.
Data safety and publishing
The source contains direct identifiers and operational data, including VINs, plates, user records, sessions, and upload metadata. A public dashboard should contain only de-identified aggregates and model outputs with minimum group-size suppression.
Recommended deployment flow:
countydata (read-only) -> local ETL/modeling -> sanitized aggregate tables/files
-> Bolt-hosted dashboard
Do not connect a browser directly to countydata. If the dashboard must refresh
automatically, use a scheduled backend job with a dedicated read-only database
role and copy only approved aggregate results into the hosted application.