HarbourOS
Confidence-scored port calls from Norwegian AIS
Port calls
Vessels
Median stay
Matched to a port
A port call is one vessel stopping once, derived from raw AIS position reports by a state machine. Confidence reflects whether the ship's own reported status agrees with its measured speed — a vessel broadcasting "moored" while making 7 knots scores low. Visits with no known seaport within 10 km are recorded as unmatched rather than guessed.
How this was built
Python polls the BarentsWatch AIS API into a Bronze table; SQL deduplicates and validates into Silver, quarantining every rejected row with a reason rather than dropping it; a Python state machine derives confidence-scored voyage states; those become port-call events; dbt builds the star schema and matches each visit to the nearest UN/LOCODE seaport. Dagster runs the whole chain on a schedule. This page is a static snapshot of the Gold layer — no database is exposed to the internet.