The one idea behind the whole system
“Neutral” automated sentiment is not safety. A calm, factual court report about corruption is still adverse to IKRAM, even with no angry words. So the system reads two things on every mention:
- Valence — how the content lands (adverse, neutral, support).
- Attribution — who the blame is pinned on (an individual, a branch, or national HQ).
The differentiator is attribution. Blame climbing from an individual, to a branch, to the national institution (HQ) is the single most important danger signal, and it is what most of the dashboard watches for.
Rule of thumb. A loud, adverse story pinned to one former officer is manageable. A calm, “neutral” story that names the institution is the one to worry about.
Reading anything
Time-window selector. The buttons at the top of each page (Latest, This week … Case to date) set the period every number on that page covers. The homepage opens on Latest; the Crisis page opens on Case to date (the full case arc from the first arrest).
Valence colours — how a mention lands:
factual_adversefund_stewardshipintegrityunverifiedneutralsupport
The first four all count as adverse. fund_stewardship and integrity are the case flavours (money/zakat, governance). unverified is a damaging claim not yet substantiated.
Attribution levels — who blame is pinned on:
individualbranchnational_hqstructuralnone
national_hq is the level that matters most (shown in red). none does not mean irrelevant — a neutral report that names IKRAM but assigns no blame is attribution none yet still counts as being about IKRAM.
The relevance gate. Every item is checked: is this genuinely about IKRAM, or a coincidental “Ikram” (a cricketer, a person’s name)? That is why counts read as “607 relevant of 4,615 scanned” — the big number is everything seen, the small number is what actually concerns IKRAM. The Data as of… stamp is the freshness date; the dashboard is a snapshot refreshed on the weekly run, not a live ticker.
Screen by screen
Dashboard the weekly pulse
At-a-glance summary for the selected window: how loud, how adverse, and whether blame is moving toward HQ versus the previous period.
/ — Dashboard

- 1Left navigation. The eight screens; the tenant name sits under the product title.
- 2Window tabs. Latest / This week / … / Case to date — set the period every number reflects.
- 3Vs previous period. Headline is National HQ share of cascade (here 18%, up 4 pts) with a plain read, plus change in total / HQ / adverse mentions. A downward green arrow on adverse is good.
- 4KPI cards. Raw counts for the window: total Mentions, Total reach, and one card per valence.
- 5Attribution cascade. How mentions split across blame levels. A short red National HQ bar outweighs a long None bar.
Crisis intelligence the main working view
The command centre for the case: timeline, blame cascade, commenter mood, and recommended actions. If you live on one screen, live on this one.
/crisis — top

- 1Funnel counts. “4,615 scanned, 607 relevant” — everything seen vs what actually concerns IKRAM.
- 2Composite risk score (0–10). A directional gauge for comparing weeks, not an official grade.
- 3Headline metrics with change vs the previous window.
- 4Case timeline. The documented court milestones; “Active” marks where the case sits now.
- 5Blame attribution cascade. The heart of the product; the red National HQ share climbing over time is the crisis signal.
Further down — Commenter mood (how the crowd in the comments is reacting):
/crisis — Commenter mood

- 1The mood line + bar. The adverse / support / neutral split over the relevant comments (red = adverse, green = support, grey = neutral).
- 2Per-post breakdown. The posts drawing the most hostile threads — where a single post is becoming a lightning rod.
Further down — Audience location (shown only where genuinely known):
/crisis — Audience location

- 1Coverage, stated honestly. “N of M relevant actors had any location signal.” Never guessed.
- 2By platform & Malaysian state. Platforms with no reliable location are marked not available, not zero.
Mentions the raw feed
Every item the system kept, filterable — where you read the actual words and verify anything a summary claims.
/mentions

- 1Filters. Relevant only hides coincidental noise; switch to All matches to audit. Then narrow by platform, valence, attribution, or date.
- 2Platform & type. A comment chip marks public comments rather than original posts.
- 3Valence & attribution for that single item, same colours as everywhere.
- 4Verbatim text. The real content (often Bahasa Melayu), linking to source. Never paraphrased.
Narratives grouped stories
Mentions clustered into the distinct stories circulating, each labelled and risk-rated.
/narratives

- 1Label. A short plain name for the cluster.
- 2Risk badge. high medium opportunity (a positive story worth amplifying).
- 3Stance. How the cluster is framed. Name-collision clusters are labelled “unrelated to IKRAM Malaysia” rather than blended in.
- 4Mentions & Last seen. Size and freshness — a high-risk, large, recently-active cluster is your priority.
Alerts what changed
Rule-triggered flags for the moments that matter, each with a recommended response.
/alerts

- 1Severity. critical or high. The key rule is Attribution crossed to national HQ.
- 2The rule that fired, shown literally so the trigger is auditable, plus timestamp.
- 3Title & detail. What happened in words.
- 4Recommended action + link to jump to the evidence.
Briefs the weekly record
A dated archive of the situation brief from each run. Every brief is immutable — a permanent record of what was known that week.
/briefs

- 1Date + “this week”. Newest first; click Read for the full bilingual brief and its actions.
- 2Risk score at the time that brief was written — track the trend across weeks.
- 3Actions. How many recommended comms actions that brief carried.
Strategist what to do · internal only
Operator-facing counter-strategy for the comms team, once per run. Recommends postures and tactics to humans; never writes public content.
/strategist

- 1Not-for-publication label + language toggle (English / Bahasa Melayu).
- 2Situation summary. How many adverse clusters, combined reach, where attribution sits.
- 3Per-narrative recommendations. A priority badge, attribution, reach, a recommended posture, and concrete tactics tied to IKRAM’s real channels.
Guardrails, by design. Never a ready-to-post caption, never targeting individuals, never fake engagement — always toward factual clarification and cooperation with authorities.
Keywords what’s watched
The human-owned term list that defines what the crawler looks for. Transparent on purpose.
/keywords

- 1Grouped clusters. Institution names, named/attribution terms, legal/enforcement, funds, public-narrative terms, hashtags.
- 2Enabled vs disabled. A cluster tagged DISABLED is defined but not active in the crawl.
- 3Read-only here; edited in project config and reviewed by a person.
Glossary
- Valence
- How a mention lands: factual_adverse, fund_stewardship, integrity, unverified (all adverse), neutral, or support.
- Attribution
- Who blame is pinned on: individual, branch, national_hq, structural, none. Climbing toward national_hq is the danger signal.
- Cascade
- The spread of blame across those levels. The dashboard watches the national_hq share rising over time.
- Relevance gate
- Is this genuinely about IKRAM (institution, branch, or named member)? Filters out coincidental “Ikram” name matches.
- Reach
- Real views / impressions / interactions a post shows. Never estimated.
- Composite risk score
- Internal 0–10 gauge of attribution × valence × reach. Directional, not an official index.
- Commenter mood
- Adverse / support / neutral split of the comments scraped from under the most significant IKRAM posts.
- Narrative
- A cluster of related mentions telling one story, with a label, risk rating, and stance.
Honest limits: search covers the major indexed outlets, not every article ever. Location is self-stated and shown only where real. Unreachable outlets/platforms are marked unavailable, not padded. Read every panel as a well-sampled signal, not a census.