News Activity Map with Redis
Shaikhhas

Shaikhhas @shaikhhas

Joined:
Jul 15, 2025

News Activity Map with Redis

Publish Date: Aug 5
29 0

This is a submission for the Redis AI Challenge: Real-Time AI Innovators.

What I Built

This project began as a simple RSS feed visualizer on a map. Over time, it evolved into a real-time political news intelligence platform powered by Redis, Telegram ingestion, NLP, and vector search.

The system is split into three main parts:

  • Telegram Scraper – collects news data, extracts named entities, and generates vector embeddings.
  • API – handles semantic search, clustering, timeline analysis, and pushes real-time updates via WebSockets.
  • UI – built with React + Vite + Leaflet to display the interactive map, article data, and activity timeline.

The (Very Rough) Dev Journey

Initial Proof of Concept

  • Scrape data from RSS feeds.
  • Normalize data for each source.
  • Run scraper on a schedule.
  • Use NLP (spaCy) for NER and geo-tagging (for mapping).
  • Generate article embeddings with all-MiniLM-L6-v2 for search and clustering.
  • Build a basic FastAPI backend for data retrieval.
  • Use React + Leaflet.js for the map UI.
  • Visualize activity with free country polygons and hover states.
  • Sidebar displays articles per country interaction.
  • 24-hour cumulative article count shown as activity.
  • Store data in postgresql.

Second Phase

  • Switched to real-time ingestion via Telegram using Telethon (no more scheduling).
  • Normalized data once.
  • Upgraded NER using spacy/en_core_web_trf.
  • Retained embedding generation for clustering.
  • Started storing processed data in Redis.
  • Updated API to use Redis as the data source.

Third Phase

  • API now provides article counts grouped by hour to power a timeline.
  • Added NLP-based semantic search.
  • Search initially ran in-memory using the same embedding model (response time ~4–5 seconds).

Fourth Phase

  • Switched Redis storage to use HSET, ZADD, and byte arrays for vector search.
  • Created Redisearch index for fast KNN similarity lookup.
  • Improved search response time to ~0.5 seconds.
  • Switched activity metric from cumulative to time-weighted scoring.
  • Implemented similar article detection via embeddings.
  • Cleaned up and improved the UI.
  • Added map legend for better UX.

Fifth Phase

  • Final UI cleanup and layout polish.
  • Integrated Redis Pub/Sub for real-time notifications via WebSockets.
  • UI now receives live article alerts.
  • Refactored scraper and API codebases for maintainability.

Demo


Source Code

https://github.com/Shaikhhas/RedisDemo_PoC


Redis Usage

  • FT.SEARCH + KNN for vector-based semantic search and clustering.
  • ZADD and sorted sets for timeline activity.
  • Pub/Sub for pushing real-time notifications to the frontend.

Personal Wishlist / Future Ideas

  • Merge notification data into the main dataset
  • Precompute per-hour article counts for performance
  • Implement lazy loading or paging
  • Add dark mode
  • Add "Follow" functionality for developing stories
  • Expose a scraper ingestion API for other sources

This was a solo project built over about a week, based on a prior prototype.

Comments 0 total

    Add comment