SummerProject2026/docs/demo_script.md

114 lines
4.5 KiB
Markdown

# Utah Vehicle Health dashboard demo script
Target length: **2 minutes 45 seconds**, embedded in the
[10-minute presentation](presentation_outline.md).
## Before the audience arrives
1. From the repository root, run `node dashboard/server.mjs`.
2. Open `http://127.0.0.1:4173/#overview`.
3. Confirm the header says the sample aggregates validated.
4. Confirm the private-sample development-preview banner is visible.
5. Visit all four routes: Overview, Sample cohorts, Model & benchmark, and Data
& methods.
6. Reset Sample cohorts and leave its sort on largest support.
Do not open developer tools, private files, model artifacts, database clients,
or environment variables during the presentation.
## Live talk track
### 0:00-0:25 — Establish the boundary
**Action:** Start on **Overview**. Point to the development-preview banner before
pointing to a chart.
**Say:**
> The most important element is this banner. Every value in the dashboard comes
> from the private 10,000-vehicle development sample. These are suppression-
> reviewed sample aggregates, not population estimates, and they cannot support
> individual decisions or county rankings.
### 0:25-1:00 — Explain the overview
**Action:** Point to published support and the observed first-attempt non-pass
trend, then the coverage map and vehicle-age chart. Do not rank counties by
outcome.
**Say:**
> The overview reports rounded support and sample first-attempt outcomes for
> returning vehicles. Non-pass combines fail, reject, and abort. The trend is
> descriptive of sampled records only. This county graphic communicates feed
> availability: gray means unavailable, not zero and not better. The age pattern
> is also an observed sample association, not a causal claim or diagnosis.
### 1:00-1:35 — Use Sample cohorts safely
**Action:** Open **Sample cohorts**. Search for `Toyota` or another currently
supported make. Leave sorting on largest support. Point to rounded support and
the “observed sample non-pass” label.
**Say:**
> This view contains only prior make-and-model cohorts that cleared the
> publication thresholds. I can search supported cohorts, but these are observed
> development-sample associations—not reliability grades, rankings, or
> recommendations. Unsupported slices are not inferred in the browser, and
> suppressed rows are absent rather than hidden.
**Action:** Reset the search before leaving the view.
### 1:35-2:15 — Separate the final model from its benchmark
**Action:** Open **Model & benchmark**. Point first to the role badges, then the
2024 calibration-fit scope strip, then the “No vehicle-level prediction service”
boundary.
**Say:**
> The governance decision is explicit: calibrated logistic regression is the
> final prototype model, while the boosted tree is benchmark-only. The numbers
> shown here are pre-2025 checks on the same 2024 sample partition used to fit
> calibration. They are not independent final-performance or population
> estimates, so we do not select between the cards from these values. The
> one-time 2025 comparison shown earlier favored logistic and stays in the report
> and presentation, not the browser bundle. This finished dashboard contains no
> vehicle lookup, personal inputs, or row-level prediction output.
### 2:15-2:40 — Close on method and privacy
**Action:** Open **Data & methods**. Briefly point to Prediction unit, the
chronological timeline, evidence status, and the privacy flow.
**Say:**
> The method page makes the contract visible: the target is the first attempt of
> a returning vehicle's next episode, and every feature ends before that episode.
> Training, tuning, and calibration are chronological. It also records that 2025
> was opened once after choices were frozen. Finally, the public path ends in
> suppressed summaries. No private rows or database connection reach this site.
### 2:40-2:45 — Transition
**Say:**
> That is the prototype: useful sample evidence, with model and privacy
> boundaries kept visible.
Return to the slide deck's privacy architecture.
## If something goes wrong
If the dashboard shows **data unavailable**, do not bypass validation or edit
JSON. Say:
> The site rejected an aggregate-contract mismatch and is failing closed, so it
> shows no estimates. That behavior is part of the privacy and integrity design.
Then continue with a backup screenshot or slides. If a cohort search returns no
rows, explain that unsupported or suppressed cohorts are intentionally absent
and reset the filter. Never substitute remembered values or improvise a vehicle-
level example.