Dryad: Maritime Security & Risk Intelligence Portal
Geohash-based risk scoring enabling real-time threat zone visualisation on interactive maps

Background
Dryad Global provides maritime security intelligence to ship operators, fleet managers, and Company Security Officers. They needed a purpose-built portal to surface real-time incident data, risk zones, and vessel-level intelligence in a single interface. Before this, a CSO responsible for a fleet's safety had to piece together incident reports, piracy indices, and vessel positions from separate sources to make a routing decision, which is exactly the kind of decision that needs to be made quickly and with confidence.
What We Built
A Node.js API and Angular SPA backed by MongoDB. The map interface (Leaflet) renders geohash-based risk zones with colour-coded threat levels, so a CSO can see at a glance which waters are getting riskier. CSOs can drill into incidents, view vessel associations, and export risk assessments. Key modules:
- Risk map
- geohash grid with real-time threat zone colouring based on incident density and severity
- Incidents
- structured incident records (type, severity, location, vessels involved, timeline)
- WPI data
- Western Piracy Index feed integrated and surfaced alongside incident views
- Search
- cross-entity search across incidents, vessels, and threat zones
- Files
- document management for intelligence reports and advisories
- Admin
- user management, TRA (threat and risk assessment) authoring
Architecture
Dual-server Node.js setup separating the API from the ETL data-maintenance pipeline, so a slow or failing feed import never affects the live portal. Auth0 handles identity. MongoDB stores all entity data. Docker Compose covers local development and production deployment, with a separate trainer data pipeline for onboarding demo/test datasets.
Results
Threat intelligence pieced together from separate feeds, reports, and vessel trackers
One live map with geohash-based risk zones and incident data in a single view
A full risk-grid recalculation on every incoming incident
Incremental updates keep the live feed responsive at global scale
Outcomes & Lessons Learned
- Geohash-based risk scoring enabling real-time threat zone visualisation on interactive maps
- Incident tracking with structured severity, location, and vessel association data
- WPI (Western Piracy Index) feed integration surfacing threat intelligence in context
- CSO-focused admin portal with role-based access and full audit trail
- ETL pipeline for ingesting and normalising external maritime threat feeds
The geohash-based risk scoring approach allowed the risk map to update incrementally as new incidents were ingested, without recalculating the entire grid. This made the live feed performant even at global scale, where a full recompute on every update would have made the map feel sluggish exactly when a CSO needed it most.
Questions, answered.
The things people ask us about this project. If yours isn't here, ask us directly, we reply like humans.
Ask us anything→How does the risk map stay current as new incidents happen?
Risk zones use geohash-based scoring that updates incrementally as incidents are ingested, rather than recalculating the entire grid on every update, which keeps the live map responsive even at global scale.
Where does the piracy and threat intelligence data come from?
The Western Piracy Index (WPI) feed is ingested and surfaced alongside incident views, so a Company Security Officer sees threat intelligence in the same interface as incident records and vessel data.
Why separate the ETL pipeline from the live API server?
So a slow or failing external feed import never affects the live portal a CSO is actively using; the dual-server setup keeps data maintenance isolated from the user-facing system.
What can a Company Security Officer actually do in the portal?
Drill into incidents, view vessel associations, export risk assessments, search across incidents and threat zones, and author threat and risk assessments, all from one admin portal with role-based access.
How is user identity and access handled?
Auth0 handles identity for the portal, with role-based access controls governing what each user, from CSO to admin, can see and do.
Ready to craft tomorrow, today?
Where innovation meets execution, and ideas evolve into impactful solutions. Book a free consultation, no strings attached.