Event-driven geospatial pipeline

Pulls aircraft, satellite and world-event feeds into one live map and answers which events are related in space and time, with an analyst confirming what matters.

  • Python
  • FastAPI
  • Redis Streams
  • PostGIS
  • TimescaleDB
  • React

How it works

  1. Public feedsaircraft, orbits, news
  2. Ingestionretries, dead-letter queue
  3. Fusionnear in space and time
  4. Alert scoringrules, plain explanations
  5. Orbital timing2 s budget, backup math
  6. Analyst reviewconfirm, dismiss, escalate
Public feeds for aircraft, satellite orbits and world events enter an ingestion service that retries and sets bad messages aside. A fusion service joins events that are close in space and time. Alerts are scored, enriched with orbital timing inside a fixed time budget, and sent to an analyst who confirms, dismisses or escalates them.

Decisions that matter

  • One slow feed cannot stall the rest

    Events move through Redis streams with consumer groups, retries and a dead-letter path. A feed that stalls or sends bad data is set aside while the others keep flowing.

  • Related means near in space and time

    Fusion joins events that fall within a set distance and time window using PostGIS, and saves the links as a graph, so an analyst can see why two events were grouped.

  • A slow dependency costs accuracy, not the answer

    Orbital timing asks an outside model with a 1.75-second timeout, inside the gateway's 2-second budget. When that model is slow or offline, a standard satellite-orbit calculation (SGP4) answers instead.

  • A person decides

    Alerts land in an analyst queue where they can be confirmed, dismissed or escalated, and each decision is kept as a label for later model training.

Limits

A working build on public data. The learned anomaly models are placeholders: alerts are scored by hand-written rules, with plain-language explanations from templates.

Next projectSelf-healing ETL engine