{
  "schema_version": "2.1",
  "generated_at": "2026-09-06T22:51:16.564455+00:00",
  "status": "scenario_estimates_published",
  "legal_posture": "informational data analysis; no endorsement or opposition",
  "candidate_counts": {
    "published_page": 20,
    "official_system": 33
  },
  "turnout_2026": {
    "estimated_eligible_electors_2026": 157462,
    "eligible_elector_growth_2018_to_2022_percent": 9.5,
    "historical_turnout_percent": {
      "2011": 23.74,
      "2014": 32.4,
      "2018": 36.86,
      "2022": 24.4
    },
    "scenarios": {
      "low": {
        "turnout_percent": 27.0,
        "projected_ballots_cast": 42515
      },
      "base": {
        "turnout_percent": 34.5,
        "projected_ballots_cast": 54324
      },
      "high": {
        "turnout_percent": 39.0,
        "projected_ballots_cast": 61410
      }
    },
    "method": "Eligible-elector base for 2026 is trend-extrapolated by compounding the City's own 2018-to-2022 back-calculated growth rate (ballots cast / official turnout %) forward one more 4-year cycle. Turnout-rate scenarios are reasoned brackets, not a statistical forecast: Low assumes participation stays near 2022's incumbent-dominated race; Base reverts to the 2014/2018 average from Richmond's last competitive mayoral races; High assumes the current five-candidate open race drives turnout modestly above Richmond's historical maximum. See context_2026 in history.json for the open-seat driver and richmond_municipal_turnout_series for the source figures."
  },
  "method": {
    "mayor": "No 2026 mayoral candidate has a historical mayoral result, so no flat-share vote scenario is computed for Mayor. External market win probability is displayed separately and is never converted into a vote count.",
    "council": "For each councillor/school trustee candidate with a historical municipal result, projected_votes_2026 scales that candidate's historical ballot-support rate to the estimated 2026 ballot volume under each turnout scenario (low/base/high). This is a flat-share scenario, not a poll-based forecast: it assumes no change in the candidate field, incumbency, or campaign dynamics.",
    "turnout": "See turnout_2026.method for how the 2026 eligible-elector base and turnout-rate scenarios are derived.",
    "incumbency": "Retained as a future model feature; never inferred from the City API flag because it currently marks every record false.",
    "online_attention": "May adjust uncertainty only after symmetric candidate coverage. It cannot substitute for voter support.",
    "llm": "Used for source review and classification only; it does not generate votes."
  },
  "validation_flags": [
    "Nomination period remains open; the candidate universe is not final.",
    "The City published page and official profile API are out of sync.",
    "Polymarket includes names outside the current City system and placeholder contracts; those rows are excluded.",
    "No representative Richmond voter poll has been ingested; projected_votes_2026 is a flat-share arithmetic scenario, not a poll-based prediction.",
    "Council support rates and mayor vote shares use different denominators and are never combined.",
    "Turnout-rate scenarios are reasoned brackets built from Richmond's own 2011-2022 range and the 2026 open-seat context, not a statistical model fit to polling data."
  ],
  "reference": {
    "municipal_2022_ballots_cast": 35093,
    "municipal_2022_turnout_percent": 24.4
  },
  "candidates": [
    {
      "formal_name": "Alexa Loo",
      "office": "Mayor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 13485,
          "elected": true,
          "ballots_cast": 35093
        },
        {
          "election": "bc-provincial-2020",
          "date": "2020-10-24",
          "district": "Richmond South Centre",
          "party": "Liberal",
          "votes": 6564,
          "valid_votes": 13307
        },
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "Councillor",
          "votes": 13212,
          "elected": true,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No 2026 mayoral candidate has previously run for Richmond mayor, so there is no historical ballot-support rate to scale into a vote count. The external market win probability below is a separate, non-comparable signal and is never converted into a vote count.",
      "external_market_win_probability_percent": 25.5,
      "external_market_volume_usd": 1437.95
    },
    {
      "formal_name": "Dickens Cheung",
      "office": "Mayor",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "bc-provincial-2024",
          "date": "2024-10-19",
          "district": "Richmond Centre",
          "party": "Independent",
          "votes": 556,
          "valid_votes": 16208
        }
      ],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No 2026 mayoral candidate has previously run for Richmond mayor, so there is no historical ballot-support rate to scale into a vote count. The external market win probability below is a separate, non-comparable signal and is never converted into a vote count.",
      "external_market_win_probability_percent": 0.1,
      "external_market_volume_usd": 1650.96
    },
    {
      "formal_name": "Kash Heed",
      "office": "Mayor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 10563,
          "elected": true,
          "ballots_cast": 35093
        }
      ],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No 2026 mayoral candidate has previously run for Richmond mayor, so there is no historical ballot-support rate to scale into a vote count. The external market win probability below is a separate, non-comparable signal and is never converted into a vote count.",
      "external_market_win_probability_percent": 42.0,
      "external_market_volume_usd": 399.14
    },
    {
      "formal_name": "Mei Kang",
      "office": "Mayor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No 2026 mayoral candidate has previously run for Richmond mayor, so there is no historical ballot-support rate to scale into a vote count. The external market win probability below is a separate, non-comparable signal and is never converted into a vote count.",
      "external_market_win_probability_percent": 2.2,
      "external_market_volume_usd": 125.66
    },
    {
      "formal_name": "Rob Howard",
      "office": "Mayor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No 2026 mayoral candidate has previously run for Richmond mayor, so there is no historical ballot-support rate to scale into a vote count. The external market win probability below is a separate, non-comparable signal and is never converted into a vote count.",
      "external_market_win_probability_percent": 2.2,
      "external_market_volume_usd": 1203.46
    },
    {
      "formal_name": "Alex Sagert",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Alton Cheung",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Andy Hobbs",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 12760,
          "elected": true,
          "ballots_cast": 35093
        },
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "Councillor",
          "votes": 12336,
          "elected": false,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": 12760,
      "historical_ballot_support_percent": 36.4,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 15475,
        "base": 19774,
        "high": 22353
      },
      "vote_projection_note": "Flat-share scenario: holds Andy Hobbs's most recent municipal ballot-support rate (36.4%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Andy Z. Wang",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Antonio \"Tony\" Ortega",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Bob Basanti",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Dr. Mike Gill",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Edward He",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Gary Law",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Howard Jampolsky",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Jeff Jiang",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Jenny Gonzales Mata",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Jerome Dickey",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 8797,
          "elected": false,
          "ballots_cast": 35093
        }
      ],
      "historical_baseline_votes": 8797,
      "historical_ballot_support_percent": 25.1,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 10671,
        "base": 13635,
        "high": 15414
      },
      "vote_projection_note": "Flat-share scenario: holds Jerome Dickey's most recent municipal ballot-support rate (25.1%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Jessy Dhillon",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Karen Novorr-Pezzuto",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Keefer Pelech",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [
        {
          "election": "canada-federal-2025",
          "date": "2025-04-28",
          "district": "Richmond East—Steveston",
          "party": "New Democratic Party",
          "votes": 2251,
          "valid_votes": 53055
        },
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 5993,
          "elected": false,
          "ballots_cast": 35093
        }
      ],
      "historical_baseline_votes": 5993,
      "historical_ballot_support_percent": 17.1,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 7270,
        "base": 9289,
        "high": 10501
      },
      "vote_projection_note": "Flat-share scenario: holds Keefer Pelech's most recent municipal ballot-support rate (17.1%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Louis Huang",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Mario Cruz",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Melissa Zhang",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 5936,
          "elected": false,
          "ballots_cast": 35093
        },
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "Councillor",
          "votes": 7078,
          "elected": false,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": 5936,
      "historical_ballot_support_percent": 16.9,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 7185,
        "base": 9181,
        "high": 10378
      },
      "vote_projection_note": "Flat-share scenario: holds Melissa Zhang's most recent municipal ballot-support rate (16.9%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Michael Lok",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Michael Wolfe",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "Councillor",
          "votes": 12953,
          "elected": true,
          "ballots_cast": 35093
        },
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "Councillor",
          "votes": 13627,
          "elected": true,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": 12953,
      "historical_ballot_support_percent": 36.9,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 15688,
        "base": 20046,
        "high": 22660
      },
      "vote_projection_note": "Flat-share scenario: holds Michael Wolfe's most recent municipal ballot-support rate (36.9%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Milly Yee",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Romeo Bicego",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Sam Wang",
      "office": "Councillor",
      "publication_status": "official_system_pending_page",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Shelley Leonhardt",
      "office": "Councillor",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Heather Larson",
      "office": "School Trustee",
      "publication_status": "official_system_pending_page",
      "historical_matches": [
        {
          "election": "richmond-municipal-2022",
          "date": "2022-10-15",
          "office": "School Trustee",
          "votes": 13475,
          "elected": true,
          "ballots_cast": 35093
        },
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "School Trustee",
          "votes": 13258,
          "elected": true,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": 13475,
      "historical_ballot_support_percent": 38.4,
      "model_status": "historical_baseline",
      "confidence": "low",
      "projected_votes_2026": {
        "low": 16326,
        "base": 20860,
        "high": 23581
      },
      "vote_projection_note": "Flat-share scenario: holds Heather Larson's most recent municipal ballot-support rate (38.4%) constant and scales it to the estimated 2026 ballot volume under each turnout scenario. It does not model a changed candidate field, incumbency, or campaign dynamics."
    },
    {
      "formal_name": "Helen Quan",
      "office": "School Trustee",
      "publication_status": "published_list",
      "historical_matches": [],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    },
    {
      "formal_name": "Lawrence Chen",
      "office": "School Trustee",
      "publication_status": "published_list",
      "historical_matches": [
        {
          "election": "richmond-municipal-2018",
          "date": "2018-10-20",
          "office": "Mayor",
          "votes": 1260,
          "elected": false,
          "ballots_cast": 48412
        }
      ],
      "historical_baseline_votes": null,
      "historical_ballot_support_percent": null,
      "model_status": "insufficient_candidate_evidence",
      "confidence": "not_estimated",
      "projected_votes_2026": null,
      "vote_projection_note": "No historical municipal result for this candidate in this office, so a flat-share vote scenario cannot be computed."
    }
  ]
}
