•CASE STUDY

Streaming Mention Analytics with Search and Alerts (Bloomberg)

3 min read·585 words·Advanced

Asked at

1 candidate report in Mar 2026

How to use this case study

SDE-2 / Mid

  • Explain ingesting news and social text streams
  • Detecting mentions of companies
  • Counting them per time window
  • Alerting on spikes

SDE-3 / Senior

  • Go deeper on entity extraction and disambiguation
  • Windowed aggregation
  • Anomaly detection versus a baseline
  • Alert subscriptions
  • A search index of recent mentions

Staff / Principal

  • Discuss throughput and latency targets
  • Deduplicating syndicated content
  • Backfills
  • Alert fatigue

Problem RestatementProblem

Bloomberg asked: design a system that ingests high-volume text streams (news articles, social posts, press releases), detects mentions of entities (companies, tickers, people), counts mentions over time windows, lets users search recent mentions, and alerts subscribers when mention volume for an entity spikes (e.g., "AAPL mentions are 8x normal in the last 10 minutes").

RequirementsRequirements

  • Ingest thousands of documents per second from many sources.
  • Extract entity mentions with good accuracy ("Apple" the company vs the fruit).
  • Real-time counts per entity per minute, plus sentiment optionally.
  • Search: "show recent mentions of TSLA with 'recall'".
  • Alerts on spikes, with low false alarms. Latency from publish to alert under ~1 minute.

ArchitectureArchitecture

Architecture diagram
%%{init: {"look":"handDrawn","handDrawnSeed":7,"theme":"base","fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","themeVariables":{"fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","fontSize":"16px","primaryColor":"#fff4e6","primaryBorderColor":"#1e1e1e","primaryTextColor":"#1e1e1e","secondaryColor":"#e7f5ff","tertiaryColor":"#ebfbee","lineColor":"#1e1e1e","textColor":"#1e1e1e","mainBkg":"#fff4e6","nodeBorder":"#1e1e1e","clusterBkg":"#f8f9fa","edgeLabelBackground":"#ffffff","classText":"#1e1e1e"}}}%%
flowchart LR
    SRC["News wires, social feeds"] --> ING["Ingestion + dedupe"]
    ING --> K[("Kafka - documents")]
    K --> NER["Entity extraction + disambiguation"]
    NER --> KM[("Kafka - mentions: entity, doc, time, sentiment")]
    KM --> AGG["Windowed counts per entity"]
    AGG --> TS[("Time-series store")]
    AGG --> AD["Spike detector vs baseline"]
    AD --> AL["Alert service - subscriptions"]
    AL --> U["Users / terminals"]
    KM --> IDX[("Search index - recent mentions")]
    U --> API["Search / chart API"]
    API --> IDX
    API --> TS

Deep Dive — Counting mentions of a companyDeep dive

"How many times was Apple mentioned in the last hour?" sounds like counting a word. Almost everything that makes the number wrong happens before the counting.

Weak

Count keyword occurrences

Search each document for the entity's name and increment.

Architecture diagram
%%{init: {"look":"handDrawn","handDrawnSeed":7,"theme":"base","fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","themeVariables":{"fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","fontSize":"16px","primaryColor":"#fff4e6","primaryBorderColor":"#1e1e1e","primaryTextColor":"#1e1e1e","secondaryColor":"#e7f5ff","tertiaryColor":"#ebfbee","lineColor":"#1e1e1e","textColor":"#1e1e1e","mainBkg":"#fff4e6","nodeBorder":"#1e1e1e","clusterBkg":"#f8f9fa","edgeLabelBackground":"#ffffff","classText":"#1e1e1e"}}}%%
flowchart LR
  DOC["Incoming text"] --> KW["Find the string 'Apple'"]
  KW --> C1["'apple pie recipe' counted"]
  KW --> C2["'Apple Records' counted"]
  KW --> MISS["'AAPL shares fell' not counted"]
  KW --> MISS2["'the iPhone maker said' not counted"]
  C1 --> NOISE["Counts measure the word, not the company"]

The name is neither sufficient nor necessary: it matches things that are not the company, and misses tickers, aliases and descriptions that clearly are. For a financial product the resulting series is not usable.

Good

Named-entity recognition

Run NER to find spans that are organisations, rather than matching raw strings.

A real improvement — "apple pie" is no longer an organisation. But NER produces surface forms, not identities: "Apple", "Apple Inc.", "AAPL" and "the Cupertino company" are four different strings and the counts split across them. Ambiguity is untouched too, since Apple Records is also an organisation.

Scale and LatencyScale

  • Partition mention streams by entity ID for aggregation. Hot entities (big tech on earnings day) may need pre-aggregation.
  • NER models are the heaviest step, so scale them horizontally (GPU workers for large models, fast dictionary matching first).
  • Target: document → alert in under 60 seconds.

Wrap-UpWrap-up

Ingest and deduplicate text streams into Kafka, extract and link entity mentions with NER plus alias dictionaries and context, and publish mention events. Aggregate mentions per entity per minute in a stream processor (stored for charts), detect spikes against seasonal baselines with both relative and absolute thresholds, and deliver deduplicated alerts to subscribers, while a time-partitioned search index serves recent-mention search.

More Case Studies

Frequently Asked Questions

What is the Streaming Mention Analytics with Search and Alerts (Bloomberg) system design question?

Streaming Mention Analytics with Search and Alerts (Bloomberg) is a system design interview question asked at FAANG companies. It covers real-time, search, analytics, data pipelines and tests your ability to design scalable, production-ready systems. InterviewSkool's breakdown walks you through requirements, API design, architecture, and trade-offs.

Which companies ask the Streaming Mention Analytics with Search and Alerts (Bloomberg) question?

Bloomberg have reportedly asked variations of this question in system design interviews. The exact wording may differ, but the core design challenges remain the same.

How should I prepare for the Streaming Mention Analytics with Search and Alerts (Bloomberg) interview question?

Start with the problem statement and scale estimates, then design the high-level architecture. Focus on the core components, data model, and API design. InterviewSkool's breakdown covers the full solution with mermaid diagrams and trade-off analysis to help you prep efficiently.

What level is the Streaming Mention Analytics with Search and Alerts (Bloomberg) question?

This question is suitable for SDE-2, SDE-3, and Staff engineer interviews. The level guidance on this page provides specific tips for each level — SDE-2 candidates should focus on core architecture, while Staff engineers should discuss trade-offs, monitoring, and incremental rollouts.

Practice with a Mock Interview

Apply what you learned in a live system design mock interview with InterviewSkool's AI interviewer.

Start System Design Interview →