Active scenario: baseline
Scenario comparison
No comparison loaded.
Select a scenario to compare against baseline.
Set race context, timing, and operating mode. This frame drives all downstream vote, production, and risk calculations.
🎓Playbook — Set up▾
What this stage models
Sets the planning context. Templates load a realistic starting posture by office and contest context, then you override where local evidence is stronger. Election date drives timeline feasibility in later stages.
Scenario name → saved with export
Template selection → default planning posture
Election date → weeks remaining auto-calc
Mode → persuasion vs turnout emphasis
Template selection → default planning posture
Election date → weeks remaining auto-calc
Mode → persuasion vs turnout emphasis
Common mistakes
- Using "U.S. House / Congressional" for a governor race and reading the map like a district contest
- Leaving election date blank then forgetting to set weeks remaining manually
- Setting mode to Late-start before you know your capacity constraints
A plan is only meaningful relative to time constraints. Set election date first — everything else scales from it.
Race setup
Set office-aware race context, election date, weeks remaining, and mode. This establishes the planning context for all downstream math.
What this is
Templates set planning defaults and guidance language. They do not change core math. Use them to start from a realistic race context, then override where local evidence justifies it.
Why office level matters
Office level shapes how wide uncertainty should be, how much persuasion is realistically available, how much vote may arrive before Election Day, and how cautiously leadership should read the model. A statewide race is not just a bigger district race.
Why it matters
Timeline affects later production planning. In early use, treat as reference only.
If unsure
Leave blank; you can set it later when production planning is added.
What this changes
In later phases, persuasion-first emphasizes persuasion volume before GOTV surge.
Universe
Define the size of the electorate you’re modeling (registration or expected voters). Be consistent with turnout assumptions.
How it’s used
Turnout votes = U × turnout %. Persuasion universe = U × persuasion %.
How to choose
Use Registered for broad planning, Active for tighter turnout universes.
Good practice
Record file/date/source so imports and exports can be traced later.
Ballot & persuasion baseline
| Name | Support % | |
|---|---|---|
| Undecided | ||
| Total | — |
Best practice
Stress-test against you. Don’t rely on a friendly break.
Must sum to 100% across candidates.
Turnout baseline (recent comparable cycles)
Use two recent comparable cycles to set a baseline and uncertainty band. This drives volatility in simulation.
If unsure
Pick the closest two cycles by election type and district boundaries.
Typical
±3 to ±5 is common. Keep it modest unless a unique cycle is expected.
Expected turnout %
—
Best / Worst turnout %
—
Votes per 1% turnout
—
Validate inputs, inspect assumptions snapshot, and review guardrails. The most dangerous failures are silent ones.
🎓Playbook — Data Checks & Guardrails▾
What this stage does
Guardrails catch invalid states and "looks plausible but impossible" plans before you share them with a client or campaign. The assumptions snapshot freezes key parameters so you can detect drift between runs.
When to use it
- Before every client presentation — run checks first
- When results look surprisingly good — check guardrails
- After importing a scenario from another session
Status stack location
Canonical status now lives in the right rail to prevent drift and duplicate headlines. Use this stage as a review workflow, not a second output surface.
Outcome
Win path — expected
Turnout votes, win threshold, projected votes, persuasion need
Fragility
Stress + Monte Carlo
Stress test summary, probability, margin band, volatility
Integrity
Validation + guardrails
Input validation, assumptions snapshot, and guardrails
Census data (phase 1)
Census-only flow: select geography context, fetch ACS rows from API, multi-select GEO units, and review aggregate demographics.
Resolution supports place, tract, block group, congressional district, and state legislative district scopes.
County is required for tract/block group. Place is used only for place resolution. District resolutions are state-only.
Ready.
0 selected of 0 GEOs. 0 rows loaded.
| Metric | Value |
|---|---|
| No ACS rows loaded. | |
| Advisory signal | Value |
|---|---|
| Load ACS rows for selected GEO units to compute advisory indices. | |
Assumption advisory pending.
Advisory signal guide
All advisory indices are centered at 1.00 baseline for the selected GEO footprint.
| Signal | What it means | Low | Moderate | High |
|---|---|---|---|---|
| Field speed index | Expected canvassing throughput in this footprint. | ≤ 0.92 | 0.93-1.07 | ≥ 1.08 |
| Persuasion environment | Structural persuasion potential from ACS profile mix. | ≤ 0.92 | 0.93-1.07 | ≥ 1.08 |
| Turnout elasticity | Expected turnout responsiveness to GOTV pressure. | ≤ 0.92 | 0.93-1.07 | ≥ 1.08 |
| Field difficulty | Operational friction and organizer load for contact execution. | ≤ 0.92 (easier) | 0.93-1.07 | ≥ 1.08 (harder) |
| Long/super commute share | Higher shares imply weaker weekday contact availability and tighter canvass windows. | ≤ 12% | 13-27% | ≥ 28% |
| No-internet share | Higher shares reduce digital follow-up and reminder coverage. | ≤ 8% | 9-19% | ≥ 20% |
| Poverty share | Higher shares can indicate larger turnout-opportunity upside with higher execution risk. | ≤ 10% | 11-17% | ≥ 18% |
| Advisory doors/hour multiplier | Multiplier applied to blended APH to estimate environment-adjusted APH. | < 0.90 | 0.90-1.10 | > 1.10 |
| Required APH to hit goal | Required attempts per organizer hour to hit current need votes under current rates and weeks. | Computed from your plan inputs | ||
| APH feasibility check | Compares required APH vs environment-adjusted APH. | > 0% shortfall | -10% to 0% | ≤ -10% buffer |
Targeting lab
Rank GEO units by model-driven target score. This is a derived layer and does not modify core scenario math.
House model weights (used when Target model = House Model v1). Weights auto-normalize on run.
Targeting not run yet.
Load ACS rows, then run targeting.
| Rank | Geography | Score | Votes/hr | Reason | Flags |
|---|---|---|---|---|---|
| Run targeting to generate ranked GEOs. | |||||
No GEO selected. Select one or more GEO units to aggregate.
Race footprint not set.
Assumption provenance not set.
Footprint capacity: not set.
Census-adjusted assumptions are OFF.
Election CSV format guide
Keep election import separate from Census assumptions. Use strict CSV schema and dry-run validation before commit.
Election CSV schema guide loading.
| Required columns | Rule |
|---|---|
| state_fips, county_fips | 2-digit and 3-digit FIPS strings. |
| election_date | YYYY-MM-DD. |
| office, district_id | Canonical office + district labels. |
| precinct_id | Stable precinct key per county. |
| candidate + votes | Long format: one row per candidate with non-negative integer votes. |
| candidate name columns | Wide format: each candidate is a column header and each cell is that candidate's vote total in the precinct. |
| Validation behavior | Dry-run fails loud on required-field/type errors and reports all warnings before ingest. |
Schema:
election_results_csv.v1. Start with a template, then run dry-run parse before any import.No dry-run run yet.
No normalized preview rows.
| Precinct | Candidate | Votes | Total precinct votes |
|---|---|---|---|
| No dry-run preview yet. | |||
No saved selection sets.
No fetch yet.
Map idle. Select GEO units, then load boundaries.
No VTD ZIP loaded. VTD QA overlay source is TIGERweb.
Workflow governance
Lock scenario edits for client-safe reviews and require note/evidence on critical assumption changes.
Scenario lock OFF.
Governance controls healthy.
Benchmark catalog
Define empirical ranges for critical inputs by benchmark scope. These ranges only generate warnings; they never alter deterministic or Monte Carlo outputs.
0 benchmark entries configured.
Ready.
| Reference | Scope | Range | Warn/Hard | Source | Action |
|---|---|---|---|---|---|
| No benchmark entries configured. | |||||
Evidence linkage
Resolve governance gaps here: select a missing audit item, attach supporting evidence, and include a short note when the item requires documentation.
Workflow: 1) Select critical edit 2) Add title/source/date (+ note when required) 3) Attach evidence.
0 critical assumption edit(s) missing evidence.
0 critical assumption edit(s) missing note.
Select an audit item, then attach evidence. Add a note when required.
| Evidence title | Source | Captured | Ref | ID |
|---|---|---|---|---|
| No evidence records yet. | ||||
Calibration source brief
Generate a client-ready calibration note from current benchmark catalog, evidence coverage, and expert toggles.
No models yet. Add a default model or import JSON to enable this selector.
Capacity decay OFF.
No correlation models configured.
0 scenarios configured.
No shock scenarios configured.
No calibration brief generated yet.
Feedback loop
Capture rolling daily-log metrics and generate metadata-only recommendations. No core math is modified automatically.
0 observed metric entries captured.
0 active drift recommendations.
No observed metrics captured yet.
No drift recommendations generated yet.
0 what-if requests parsed.
No what-if requests parsed yet.
Review workflow
Recommended sequence before decisions or exports:
- Check right-rail Input validation first.
- Confirm assumptions snapshot matches scenario intent.
- Review guardrails and stress summary for feasibility risks.
- Run Self-Test before final export or scenario handoff.
Why this changed
This removes duplicate dynamic outputs in center panels so one number has one canonical place. It improves auditability and prevents contradictory status reads.