Parliament Pulse — Methodology
Two lanes, kept apart
Every item we store is tagged as one lane or the other at the moment it is collected, and no figure ever adds them together.
- Media lane — articles and videos published by an allowlisted newsroom, under that newsroom’s own name. This is what Media coverage tone shows, and it is the only lane that feeds a member’s or a Bill’s coverage figures anywhere on this site.
- Public lane — comments left by viewers under those newsrooms’ videos. This is what What Kenyans are saying shows. It is anonymous by nature, so it is held to extra rules, set out further down this page, and it never counts towards anybody’s coverage score.
Petitions are not a third tone lane
What Kenyans are saying also lists the petitions Kenyans have formally filed with Parliament. They sit on that page because they are the other way the public speaks to Parliament, but they are not sentiment and are never counted as such:
- They come from Parliament’s own record, not from us and not from social media. Each row keeps the address it was read from, and every row links to its full text.
- The petitioner is named — because Parliament names them, in public, on its own record. Repeating what the record says is not the same as naming a member of the public who left a comment, which we never do.
- They carry no tone score at all, and never will. A petition is a request, not a mood; calling one “negative” would invent a reading Parliament never printed. No petition moves any figure on this site, and no comment figure counts a petition.
- A petition Parliament recorded twice is listed once. The duplicate is marked when the record is loaded, not judged when the page is drawn.
The rest of this page documents the classification pipeline and its thresholds, so you can judge the figures for yourself. Two things limit what you see: an item's tone is machine-assigned and must survive review before it appears, and no average is calculated from a sample too small to mean anything.
The pipeline, step by step
- 1. Allowlisted collection. Every few hours we ingest articles from a fixed allowlist of established Kenyan outlets, plus the official YouTube channels of those newsrooms — the exact list currently active in this system is printed under “Which sources we use” below. Each outlet is read through its own published RSS feeds, and several outlets publish more than one. YouTube channels are pinned by their permanent channel ID rather than by their @handle, because a handle can be dropped or reassigned to somebody else. Nothing outside the allowlist is ever ingested; speculative blogs are permanently excluded; and extending the list is a reviewed code change, not an editor toggle. We read headlines in Kiswahili as well as English — one seeded outlet publishes entirely in Kiswahili, and until September 2026 every one of its stories was silently dropped. Where an outlet renders its article in JavaScript or puts it behind a paywall, we cannot read the full text; in that case we keep the headline and summary the outlet itself published in its feed, and the item is stored as a summary rather than as a full article. We do not reconstruct what we could not read, and we never guess a publication date — the entry’s own date is used.
- 2. What is it about? The classifier scores each item 0.0–1.0 for how much it is actually about the Parliament of Kenya, and we store the answer — at or above 0.4 the item is marked about Parliament, below it about something else. That is a label, not a bin: the Subject control on the Overview tab reads it, and either setting shows you real stored items. Until September 2026 a below-0.4 score rejected the item outright, so 44 days of nurses’ strike coverage, the cost of living and rural internet were all collected and then hidden. Nothing is dropped for its subject any more. Items admitted from weaker collection signals are still held until a relevance verdict confirms them.
- 3. AI classification. Each surviving item is classified positive / neutral / negative with a score from −1.0 to +1.0 by an AI language model, instructed to handle sarcasm and mixed tone conservatively. The item also gets a subject hint (which member, Bill or institution it is mainly about).
- 4. Review, and what it excludes. A tone label is produced by a machine, so it is checked before you see it. Each item carries one of three states — approved, pending or rejected — and only approved items appear on the Overview tab or in the CSV export, or count towards any figure on it. An item still awaiting review is not shown; nor is one the review judged wrongly classified. What decides is whether the classifier returned a verdict at all: if it did, the item is approved and the label it gave is what you see, whatever the item turned out to be about. Until September 2026 a second rule also required a strong positive or negative score, which no neutral item could ever meet — so the neutral column on the chart was always empty, and the mix shown was more polarised than the coverage actually was. That rule is gone. This is a check on a machine's guess about tone, not a decision about Parliament's own record — nothing on this site's record of what Parliament did depends on it.
- 5. Entity linking. Items are linked to the members, Bills and Acts they actually name, using deterministic name/title matching (no AI at this step). A link's confidence is retained alongside it.
- 6. Sample-size floor. Below 5 items no aggregate is calculated at all — no average, no distribution, no trend, no table average — and you see only the individual articles with links to their sources. Between 5 and 30 the aggregate is shown but labelled a small sample. This is a statistical rule about when a mean means anything. Unlike the review step above, it never hides an individual article from you — below the floor you still see every approved item, just no average over them.
Extra rules for public comments
A comment is somebody’s own words, written by a member of the public rather than published by a newsroom. Four rules apply to the public lane and to nothing else on this site:
- No names, ever. We keep the commenter’s handle only so the same comment is not counted twice and so a row can be audited. It is never printed on any page. A comment appears as “a viewer”.
- The source is always credited. Each quote names the channel whose comment section it came from, the video it sat under, and the date, and links to it — so a comment can never be mistaken for a Mzalendo finding.
- Screened before it is stored. Every comment is checked for insults, vulgar language, slurs and threats — in English, Kiswahili and Sheng — by a fixed word list, and again by the classifier. A comment that fails either check, or that is too short to carry a meaning on its own, is not reprinted. Harsh criticism of a policy or a decision is not an insult and is not withheld. The verdict is written once, when the comment is stored; the pages only read it.
- Withholding a quote never changes a number. A comment we will not reprint still counts in the totals and the tone split. Otherwise the figures would quietly become a picture of the polite comments only.
What is not in this lane, and why: Facebook and Instagram comments on newsrooms’ pages — Meta’s API returns comments only to the owner of the page, and we do not scrape pages we were not given access to. Replies on X — reading them needs a paid X API tier that this site does not buy. If either becomes available the change will be a reviewed code change, and it will show up in the source list below.
Traceability
Every row retains its source outlet, publication date and source URL, and the Overview tab links each item back to the article it came from, so any figure here can be traced to the reporting behind it. Media tone is never written into Mzalendo's record of what Parliament did: it sits in its own store, labelled as coverage, and it never establishes a fact about a member, a Bill or a vote.
Which sources we use
The current active allowlist as configured in this system:
- Citizen Digital (News website)
- Nation (News website)
- People Daily (News website)
- The Standard (News website)
- The Star (News website)
Topics tracked
- Agriculture
- Corruption & Accountability
- Devolution
- Economy & Taxation
- Education
- Governance & Constitution
- Healthcare
- Security
What this can and cannot tell you
It can tell you how allowlisted Kenyan newsrooms have been covering Parliament and its business, how that tone shifts over time, and what people commenting under those newsrooms’ videos actually said. It cannot tell you what Kenyans think, how popular anyone is, or how a vote would go — neither lane is a survey, neither has a sampling frame, and neither should ever be quoted as “public opinion” or “approval”. The comment lane is the easier of the two to misread: people who comment are self-selected, are a small and untypical slice of the audience, and are not a slice of the country. Corrections are welcome via Contact.