OSINT / Alerting · Independent project

OSINT Radar: 31-Source Situational Awareness Dashboard

Author: Dmitri Derevjanko · Tallinn, Estonia · Started Oct 2025 · Updated Sep 2026

OSINT Radar is a production-deployed situational-awareness dashboard that runs scheduled sweeps across 31 public-data integrations and presents geopolitical, aviation, maritime, cyber, natural-hazard, health, macroeconomic, market, and space signals in one operator-focused interface.

OSINT Radar intelligence dashboard with source feed and alerts
Private source code · Public live deployment

Open live demo Back to portfolio

Problem

Open-source monitoring is fragmented across APIs, feeds, and websites with different formats, limits, and reliability characteristics. Important changes can be difficult to identify, while one unavailable source should not interrupt the entire monitoring workflow.

Solution

OSINT Radar runs 31 independent source adapters concurrently, applies source-specific timeouts, retries, caching, and defensive parsing, and transforms the results into a unified dashboard experience.

Each completed sweep is stored as a timestamped JSON snapshot. The system compares consecutive sweeps, calculates deterministic alert and threat signals, suppresses selected duplicate news and alert content, and pushes updated data to connected browsers through Server-Sent Events.

An optional multi-provider AI layer can use OpenAI, Anthropic, Gemini, or Codex for alert evaluation and idea synthesis.

System Architecture

Primary data and decision flow

  1. 31 adapters Independent modules with their own parsing, timeout, retry, cache, and auth.
  2. Parallel sweep Promise.allSettled() so one failed provider does not stop the rest.
  3. Dashboard views Source-specific results become alerts, maps, markets, news, and health views.
  4. Snapshots + delta Timestamped files and in-memory change detection. No database service.
  5. Scoring + AI Deterministic rules work alone; optional providers add alert and idea analysis.
  6. Express + SSE UI Dashboard, JSON API, health endpoint, and live browser updates.
Infrastructure layer
  • Node.js 22
  • Docker
  • GitHub Actions
  • Nginx
  • Linux
  • Reverse SSH deployment
  1. Thirty-one independent source modules are executed concurrently using Promise.allSettled().
  2. Each integration handles its own parsing, timeout, retry, cache, and authentication requirements.
  3. Source results are transformed into dashboard-specific views for alerts, threat indicators, maps, markets, news, and source health.
  4. Deterministic rules calculate severity, geographic hints, and changes between sweeps.
  5. Timestamped JSON snapshots provide lightweight history and recovery without requiring a database service.
  6. Express exposes the dashboard, JSON API, health endpoint, and SSE update stream.
  7. Connected browsers receive completed sweeps automatically without reloading the page.
  8. Individual source failures remain visible but do not prevent the rest of the dashboard from updating.

Role and Ownership

Sole system owner. Dmitri designed the source-adapter model, implemented orchestration, scoring, snapshots, notifications, dashboard views, and observability, and maintains the deployed service.

Technical Decisions

Technologies

Result and Impact

The deployed dashboard brings 31 heterogeneous integrations into one observable interface and continues operating when individual providers are unavailable, rate-limited, or misconfigured. Users can inspect prioritized signals, geographic activity, market and macroeconomic data, natural hazards, cyber advisories, source health, and changes between sweeps without manually opening dozens of separate services.

Limitations

Live demo and source

Live demo: https://osint.dmitriderevjanko.com/

Source code: Private. The deployed application is the public project artifact.

Portfolio case study: https://dmitriderevjanko.com/projects/osint-radar/

This is one of 10+ independent public projects by Dmitri Derevjanko. 100+ additional workflows were delivered professionally, mostly under confidentiality, and are not documented here.

Other independent projects by Dmitri Derevjanko