Self-Directed · Defence C2 · Geospatial Intelligence

Detecting the one vehicle that matters

A geospatial command interface that turns a map of everything into a single answerable question: has the enemy entered my zone? Handed the brief as a design problem, answered with a working hypothesis: filter the map down to the ground that matters. Then built to find out whether it holds.

Read the full case study Try the live prototype
aegis gims · common operating picture · v1.0-rc
AEGIS GIMS common operating picture, a named area of interest drawn over Route Crimson with everything outside it dimmed to context
The common operating picture: an NAI drawn over Route Crimson, everything outside it dimmed to context
The Brief

"Build us a map that shows enemy vehicles"

That's roughly how the requirement arrives, from leadership, through a contract, with a lot left unsaid. From those words the obvious build almost designs itself: a map, a search box, every track rendered. It demos beautifully, and under pressure it's noise.

The answer: let the operator define the ground they own, draw it or type its coordinates, and make that area the filter. Entry into it becomes the alert.

Role
Concept · UX · Prototype
Context
Design problem→ working build
Domain
Geospatial intelligenceTactical C2
Status
Live interactive build
Surfaces
Vehicle laptopHQ workstation
Stack
React COP · Next.js
The Conditions

Four constraints that reshape every decision

The catch is the conditions this thing actually runs in. I wrote them down before designing anything.

CONSTRAINT 01
Air-gapped, no public internet
Geofencing, alerting and inference all have to run locally, on the edge, with comms that drop.
CONSTRAINT 02
Updates take months, by hand
A fix can mean someone flying to a classified site to install it. You design to get it right the first time.
CONSTRAINT 03
Users are hard to reach
Real operators sit in classified spaces, maybe thirty verbal minutes, no devices in the room. You reason your way to the answer.
CONSTRAINT 04
Two screens, one product
A laptop in a vehicle in the desert, and a workstation at headquarters. The picture has to stay legible in both.
The Trap

It shows everything. That's the problem.

Built literally, the map answers "where is everything?", friendly patrols, civilian traffic, maritime contacts, air tracks, sensors, all live at once. In a quiet office you can scan it. In a command vehicle on a bad link, mid-task, it's noise. The operator becomes a search engine for their own battlespace.

view · everything
The map showing every track at once, comprehensive and almost unusable under pressure
The Reframe

One operator owns one stretch of ground

A single soldier is responsible for one segment of a route. Their job isn't to survey the whole theatre, it's to notice the moment something hostile crosses into their ground, and tell leadership, fast.

JOB TO BE DONE

When an enemy vehicle enters the ground I'm responsible for, alert me and help me report it up the chain, without making me hunt for it.

A PLACE
The zone, the ground the operator owns.
AN EVENT
Entry, a hostile track crossing the boundary.
AN ACTION
Report up, one tap, structured, to higher.

The interface should be built out of exactly those three things, and nothing else by default.

The Mechanism

The zone is the interface

Asked how I'd solve it, I didn't reach for a better map. I reached for a filter: stop presenting the whole battlespace, let the operator declare the area that matters, and let everything else fall to context.

01
Draw the area
Sketch the zone straight onto the map, rectangle, circle, or triangle, then drag its handles to reshape it. The shape you draw becomes the live filter.
02
Or define it by coordinate
Tasking often arrives as grid references. Type a lat/long and a radius and the zone snaps into place. Drawing is for the HQ workstation; coordinates are for the field.
03
Entry is the alert
A hostile track crossing the boundary fires the event, SEV-1, with the one-tap action the job actually needs: report up the chain.
04
Triage in place
Selecting a track opens its assessment, kinematics, reporting, and an AI threat score with a recommended action. The model assists the judgement; it never makes the call.
The Walkthrough

Define the ground, catch the crossing

Two ways into the same filter, and what happens the moment a hostile column crosses the line.

Defining the zone by coordinates: name, type, priority, classification, and trigger rules
Coordinate entry · when the grid reference is already known
Signal view with the SEV-1 alert as HOSTILE-7 enters NAI CRIMSON
Crossing the line is the event · SEV-1, HOSTILE-7 → NAI CRIMSON
Track assessment panel with AI threat score and recommended action
One click to the "so what" · the model assists, never decides
Everything ↔ Signal

The same battlespace, before and after the filter

Everything view, twelve tracks competing for attention
EVERYTHING · 12 tracks competing for attention
Signal view, filtered to the zone
SIGNAL · filtered to the zone. What's left is the job
Off the Grid

No internet. No cloud. It still has to work.

The honest question for any feature: does it still function when the network doesn't? For the zone filter, the answer has to be yes.

MAPS · PRE-STAGED
Reading from disk, not a tile server

Map packs, elevation and imagery load before the device leaves the wire. Panning, zooming, and drawing a zone need no connection.

ALERTING · ON-DEVICE
A geometry test at the edge

"Is this track inside my zone?" runs locally every update, and the threat model is an on-device build. Both fire with the antenna unplugged.

REPORT-UP · QUEUED
Over the comms net you already have

One tap composes a structured contact report and hands it to the datalink. If no bearer is live, it queues and sends on next contact.

Live · Interactive Prototype

Try it. The whole argument, live.

Draw a zone over the route, or define it by coordinates. Toggle Everything ↔ Signal. Press play and watch the column enter. Click any track for its assessment.

aegis gims · live build · rbabiarz.github.io
Open full-screen
FULLY INTERACTIVE · ALL DATA FICTIONAL AND UNCLASSIFIED · LOADS LIVE FROM RBABIARZ.GITHUB.IO, THE ONE THING ON THIS PAGE THAT NEEDS A CONNECTION
By the Numbers

Designed against targets

<2s
Target time-to-detect: boundary crossing to operator notified
0
Tap from alert to transmitted contact report
0%
Core flow functional with no link: define → alert → report
12→1
Tracks on screen → the one that was the job
DESIGN TARGETS FROM THE SPEC, NOT FIELD MEASUREMENTS · SELF-DIRECTED CONCEPT · NEXT STAGE: USER TESTING, INTERNALLY AND IN THE FIELD
Version Quick tour Deep dive