Transparency
Methodology
Every number on this platform is produced by rules published here in full. If a figure cannot be explained by what follows, it should not be trusted — and we would like to hear about it.
1. Who is counted
The tracking poll is an open, self-selecting online panel: any visitor may respond once per seat per calendar day. It is not a probability sample of registered voters, and we never present it as one.
Every response records only three attributes — the seat being answered, the respondent's county, and a five-band age group. No name, phone number, IP address or precise location is stored at any point.
Responses are attributed to a device, not a person, via a salted SHA-256 hash of a randomly generated device identifier held in the browser. The hash is one-way: it cannot be reversed to identify a device or a visitor.
2. How weights are calculated
Raw response counts over-represent the young, urban and connected. We correct this with post-stratification: each response receives a weight equal to the ratio between the group's share of Kenya's registered-voter population and that group's share of the responses received in the same window.
Two weighting dimensions are applied. The county weight uses each county's share of registered voters, taken from the register totals published for the county. The age weight uses the national age distribution of registered voters across the bands 18-24, 25-34, 35-44, 45-54 and 55+.
The two factors are multiplied to give a single response weight, then trimmed to the range 0.3–3.0. Trimming caps the influence of any one thinly represented cell so a handful of responses from an under-sampled county cannot dominate the topline.
Weights are re-normalised so the weighted sample size equals the unweighted count. A candidate's published share is the sum of weights for that candidate divided by the sum of all weights in the window.
weight = clamp( (county_voter_share / county_response_share) × (age_voter_share / age_response_share), 0.3, 3.0 )
3. Sampling windows
Three windows are published for every seat. The 1-day window shows raw volatility and reacts to news within hours. The 7-day rolling window is the headline figure — it is wide enough to absorb a single unusual day without lagging real movement. The 30-day window shows structural trend.
Windows roll forward each day rather than resetting, so every published figure covers a complete equal-length period and no partial day is compared against a full one.
The 14-day trend chart plots the daily weighted share for each candidate. Points are only drawn for days that met the minimum response threshold for that seat; days below the threshold are omitted rather than interpolated.
4. Uncertainty and margins of error
Margins of error are reported at 95% confidence using the conservative p = 0.5 assumption, then inflated by a design effect of 1.4 to account for the variance introduced by weighting.
Two candidates whose shares differ by less than the combined margin are described as a statistical tie, never as a lead. Headlines that would depend on a within-margin gap are not published.
Because this is a self-selecting panel, the margin of error describes sampling variability only. It does not quantify selection bias, and the true uncertainty around any figure is wider than the stated interval.
margin of error = 1.96 × √(0.25 / n) × √1.4 × 100
5. Integrity checks
A uniqueness constraint in the database rejects a second response from the same device hash, for the same seat, on the same day. Enforcement happens server-side, so clearing the browser is not sufficient to bypass it and client-side tampering has no effect.
Row-level security policies allow the public to insert a poll response and read aggregate tallies, and nothing else. Individual response rows are never exposed through the public interface; only the aggregation functions can read them.
Ballots are limited to candidates an administrator has verified and published. Self-registered aspirants cannot appear in a poll or a result until that review is complete, which prevents ballot stuffing through fabricated candidates.
Sudden concentration of responses from a single county or age band within a short interval is flagged for review. Where a co-ordinated burst is confirmed, the affected responses are excluded and the exclusion is noted on the trend for that day.
6. Validating data quality
Reported result tallies are separate from the tracking poll. They are transcribed from returning officers' forms and agent submissions, and each entry carries the number of polling stations reported against the number expected, so readers can see how complete a count is.
A tally is only published when the station count reconciles and the total does not exceed the registered voters for that area. Entries that fail either check are held back rather than shown with a caveat.
Vote-protection reports follow the same discipline: submissions are anonymous and unrestricted, but nothing appears in the public incident log until a monitor corroborates it. Unverified reports remain visible only to administrators.
All figures on this platform are unofficial. Only the Independent Electoral and Boundaries Commission declares official results, and where our tallies diverge from a declaration, the declaration stands.
Corrections and challenges
If you believe a tally, a weight or a published incident is wrong, file it through the vote protection desk with the county and, where relevant, the polling station. Corrections are applied to the underlying record rather than issued as footnotes, and the trend redraws with the corrected figure.