Helm.Warning — Maritime Safety Information Pipeline
Turns NAVAREA warnings from official sources into structured, map-ready data. The original bulletin text is kept verbatim and can't be edited, and every admin correction is written to an audit log.
Read the full case study
- The problem
- Navigational warnings arrive as plain radio text. Plotting hazards onto a voyage means reading coordinates by hand and updating charts manually — slow, and easy to miss on watch.
- Constraints
- Every warning must stay traceable to its source text, ambiguous coordinates can never be silently guessed, history must be preserved when a source stops listing it, and the result has to stay usable at sea.
- The solution
- Scheduled Python scrapers harvest warnings from official NAVAREA coordinators. A deterministic parser extracts coordinates, geometry, and validity dates; parsed records are validated and stored in Supabase (PostgreSQL + PostGIS) and plotted on an interactive Leaflet map. An admin-gated React console handles review, editing, and audit.
- Architecture
- Official sources → scheduled scrapers (GitHub Actions) → rule-based parser with fail-closed AI fallback → validation → Supabase (PostGIS) → public map (vanilla JS) + admin console (React + Supabase Auth).
- Parsing
- Extraction is deterministic and rule-based, with AI used only as a controlled fallback that fails closed. Coordinates are validated against the source text; anything ambiguous is flagged for review rather than guessed, and every parsed record carries an explicit confidence classification.
- Data integrity
- The raw bulletin text is stored verbatim with a SHA-256 checksum and can never be edited from the admin console. Ingestion is upsert-only — a warning that disappears from a feed is marked cancelled or expired, never deleted. Every admin edit writes an audit row (who, what, why) in the same database transaction as the change; if the audit log is unreachable, the edit is refused outright.
- Limits
- A reference and planning aid — always confirm against the official source before using it for navigation.
Maritime · Geospatial · TypeScript · Python · Supabase · PostGIS · GitHub Actions