All case studies

Computer Vision · Real-Time Alerting

OmniVision

Real-time AI workplace safety: enterprise smoke and anomaly detection where the entire value of the system is measured in seconds.

Backend & Platform ArchitectureView OmniVision
Seconds

Incident to alert

From detection to a phone in someone’s hand

24/7

Continuous inference

Always-on monitoring across enterprise sites

2

Alert channels

WhatsApp and email fan-out per incident

A safety system is only worth the seconds it saves

OmniVision watches enterprise sites for smoke, safety anomalies and operational events, and tells someone about it immediately. Unlike an analytics product, its usefulness collapses if an alert arrives late. A detection that lands five minutes after a fire started is not a feature.

That single constraint drove the architecture. Video inference is computationally heavy and bursty; alerting has to be immediate and reliable. Coupling them directly would mean either a slow alert or a stalled pipeline, so they were separated by an event backbone from the start.

I built the Python/FastAPI backend with Kafka ingestion pipelines and RabbitMQ fan-out, so detection, alerting and analytics each scale on their own terms and one slow channel never delays another.

Stack

PythonFastAPIApache KafkaRabbitMQComputer visionRedisGCPDocker
The problem

What made this hard

Latency is the product

Detection has to reach a human within seconds, or the system has no safety value at all.

Bursty inference load

Continuous video streams create heavy, uneven compute that must not stall alert delivery.

Reliable multi-channel delivery

Alerts must reach WhatsApp and email independently, so one failing channel never blocks the other.

System design

High-level architecture

The event bus in the middle is the whole design: it lets compute-heavy inference and second-critical alerting scale without touching each other.

Capture layer

Enterprise site coverage

Camera streamsContinuous feeds
Frame samplingIngest workers

Inference layer

Vision models served as a real service

Detection APIPython · FastAPI
Smoke & anomaly modelsComputer vision

Event & routing layer

Where one incident becomes many notifications

Kafka ingestionDetection events
RabbitMQ fan-outPer-channel isolation

Delivery & analytics

Seconds from incident to a human

WhatsApp alertsMessaging API
Email alertsNotification service
Operational dashboardsReporting
Architecture

From camera frame to someone’s phone

Every stage after detection is designed to shed latency rather than add it. The event bus is what lets heavy inference and instant alerting coexist.

  1. 1

    Camera stream ingest

    Continuous site video feeds arrive at the platform for sampling and analysis.

    Streaming
  2. 2

    Vision inference

    A Python/FastAPI service runs smoke detection and anomaly models against sampled frames.

    PythonFastAPIComputer vision
  3. 3

    Detection event published

    A confirmed detection becomes an event on the Kafka ingestion pipeline rather than a direct call to anything.

    Apache Kafka
  4. 4

    RabbitMQ fan-out

    One incident routes to multiple independent consumers, so WhatsApp and email delivery never block each other.

    RabbitMQ
  5. 5

    Alert delivery

    WhatsApp and email notifications reach responsible staff within seconds of the incident.

    WhatsApp APIEmail
  6. 6

    Operational analytics

    The same event stream feeds dashboards and reporting, giving sites a record and trends without a second pipeline.

    Analytics
Decisions

Why these tools, and not others

Inference service

Python + FastAPI

Keeps the platform next to the vision and ML ecosystem while serving inference over a fast, typed HTTP layer.

Event backbone

Apache Kafka

Decouples heavy, bursty inference from time-critical alerting, so neither can stall the other.

Alert routing

RabbitMQ fan-out

One detection reaches several delivery channels independently, with per-channel failure isolation.

Outcome

What it delivered

Seconds from incident to alert

WhatsApp and email notifications delivered within seconds of detection.

Decoupled inference and alerting

Kafka pipelines keep compute-heavy detection off the alert delivery path.

Enterprise smoke detection

Deployed for real workplace safety monitoring, not a proof of concept.

Analytics from the same stream

Operational reporting reuses the event log instead of duplicating the pipeline.

Scaling & availability

  • Inference workers scale independently of alert delivery
  • Kafka absorbs detection bursts without backpressure on cameras
  • RabbitMQ fan-out isolates failure per alert channel
  • One event stream serves both alerting and analytics

Building something like this?

If any of the problems above look familiar, I can help, whether that's a full architecture or a second opinion on the one you have.

Open to remote and hybrid work worldwide