{
  "title": "NAVTEX Review",
  "generated_at_utc": "2026-04-02T00:12:04.798686+00:00",
  "lookback_hours": 24,
  "focus_region": "Strait of Hormuz",
  "focus_hit_count": 0,
  "message_count": 96,
  "latest_reception": "2026-04-02 02:40:09",
  "source_url": "https://navtex.lv/",
  "stale_issue_filtered_count": 64,
  "max_notice_age_hours": 24,
  "overview": {
    "message_count": 96,
    "counts_by_code": {
      "T": 21,
      "G": 13,
      "S": 12,
      "P": 11,
      "E": 7,
      "V": 5,
      "O": 5,
      "K": 4,
      "J": 4,
      "Q": 3,
      "L": 3,
      "F": 3,
      "U": 2,
      "W": 1,
      "Z": 1,
      "I": 1
    },
    "counts_by_area": {
      "T": 21,
      "G": 13,
      "S": 12,
      "P": 11,
      "E": 7,
      "V": 5,
      "O": 5,
      "K": 4,
      "J": 4,
      "Q": 3,
      "L": 3,
      "F": 3,
      "U": 2,
      "W": 1,
      "Z": 1,
      "I": 1
    },
    "keyword_counts": {
      "fog": 13,
      "warning": 5,
      "survey": 4,
      "gale": 3,
      "ais": 3,
      "exercise": 3,
      "sar": 1,
      "ice": 1
    },
    "station_coverage": {
      "resolved_message_count": 51,
      "unresolved_message_count": 45,
      "resolved_station_count": 10,
      "station_rows": [
        {
          "key": "pinneberg",
          "code": "S",
          "station_name": "Pinneberg",
          "country": "Germany",
          "nav_area": "I",
          "latitude": 53.675,
          "longitude": 9.8083,
          "coverage_label": "German Bight and German North Sea",
          "message_count": 11,
          "basis": "station-signature",
          "matched_terms": [
            "GERMAN BIGHT",
            "BARD OFFSHORE"
          ]
        },
        {
          "key": "oostende",
          "code": "T",
          "station_name": "Oostende Radio",
          "country": "Belgium",
          "nav_area": "I",
          "latitude": 51.1825,
          "longitude": 2.8078,
          "coverage_label": "Belgian coast and southern North Sea",
          "message_count": 10,
          "basis": "station-signature",
          "matched_terms": [
            "OOSTENDE",
            "OOSTENDERADIO"
          ]
        },
        {
          "key": "cullercoats",
          "code": "G",
          "station_name": "Cullercoats",
          "country": "United Kingdom",
          "nav_area": "I",
          "latitude": 55.0747,
          "longitude": -1.4632,
          "coverage_label": "North Sea and north-east UK coast",
          "message_count": 9,
          "basis": "station-signature",
          "matched_terms": [
            "HUMBER",
            "DOGGER",
            "CROMARTY",
            "TYNE"
          ]
        },
        {
          "key": "oostende_thames",
          "code": "V",
          "station_name": "Oostende (Thames Approaches relay)",
          "country": "Belgium / United Kingdom",
          "nav_area": "I",
          "latitude": 51.1825,
          "longitude": 2.8078,
          "coverage_label": "Thames approaches and Dover approaches",
          "message_count": 6,
          "basis": "station-signature",
          "matched_terms": [
            "THAMES"
          ]
        },
        {
          "key": "niton",
          "code": "E",
          "station_name": "Niton",
          "country": "United Kingdom",
          "nav_area": "I",
          "latitude": 50.5863,
          "longitude": -1.2545,
          "coverage_label": "English Channel and western approaches",
          "message_count": 4,
          "basis": "regional-context",
          "matched_terms": [
            "WIGHT",
            "LUNDY",
            "PORTLAND"
          ]
        },
        {
          "key": "niton_france",
          "code": "K",
          "station_name": "Niton (France relay)",
          "country": "United Kingdom / France",
          "nav_area": "I",
          "latitude": 50.5863,
          "longitude": -1.2545,
          "coverage_label": "Channel Islands and north-east French coast",
          "message_count": 4,
          "basis": "station-signature",
          "matched_terms": [
            "CAYEUX SUR MER",
            "WIGHT LARGE CAYEUX SUR MER"
          ]
        },
        {
          "key": "netherlands_coastguard",
          "code": "P",
          "station_name": "Netherlands Coastguard Radio",
          "country": "Netherlands",
          "nav_area": "I",
          "latitude": 52.9177,
          "longitude": 4.739,
          "coverage_label": "Dutch EEZ and southern North Sea",
          "message_count": 3,
          "basis": "regional-context",
          "matched_terms": [
            "NORTH SEA"
          ]
        },
        {
          "key": "split",
          "code": "Q",
          "station_name": "Split",
          "country": "Croatia",
          "nav_area": "III",
          "latitude": 43.1757,
          "longitude": 16.423,
          "coverage_label": "Adriatic Sea",
          "message_count": 2,
          "basis": "station-signature",
          "matched_terms": [
            "SPLIT RADIO"
          ]
        },
        {
          "key": "mondolfo",
          "code": "U",
          "station_name": "Mondolfo",
          "country": "Italy",
          "nav_area": "III",
          "latitude": 43.7418,
          "longitude": 13.1388,
          "coverage_label": "Adriatic Sea and central Italian coast",
          "message_count": 1,
          "basis": "station-signature",
          "matched_terms": [
            "MONDOLFO RADIO"
          ]
        },
        {
          "key": "cross_la_garde",
          "code": "W",
          "station_name": "CROSS La Garde",
          "country": "France",
          "nav_area": "III",
          "latitude": 43.1043,
          "longitude": 5.9915,
          "coverage_label": "Provence, Ligurian Sea and western Mediterranean",
          "message_count": 1,
          "basis": "regional-context",
          "matched_terms": [
            "CORSE",
            "SARDAIGNE"
          ]
        }
      ],
      "code_rows": [
        {
          "code": "T",
          "message_count": 21,
          "resolved_station_names": [
            "Oostende Radio",
            "Oostende (Thames Approaches relay)"
          ],
          "unresolved_message_count": 10
        },
        {
          "code": "G",
          "message_count": 13,
          "resolved_station_names": [
            "Cullercoats"
          ],
          "unresolved_message_count": 4
        },
        {
          "code": "S",
          "message_count": 12,
          "resolved_station_names": [
            "Pinneberg"
          ],
          "unresolved_message_count": 1
        },
        {
          "code": "P",
          "message_count": 11,
          "resolved_station_names": [
            "Netherlands Coastguard Radio",
            "Oostende (Thames Approaches relay)"
          ],
          "unresolved_message_count": 7
        },
        {
          "code": "E",
          "message_count": 7,
          "resolved_station_names": [
            "Niton"
          ],
          "unresolved_message_count": 3
        },
        {
          "code": "V",
          "message_count": 5,
          "resolved_station_names": [
            "Oostende (Thames Approaches relay)"
          ],
          "unresolved_message_count": 1
        },
        {
          "code": "O",
          "message_count": 5,
          "resolved_station_names": [],
          "unresolved_message_count": 5
        },
        {
          "code": "K",
          "message_count": 4,
          "resolved_station_names": [
            "Niton (France relay)"
          ],
          "unresolved_message_count": 0
        },
        {
          "code": "J",
          "message_count": 4,
          "resolved_station_names": [],
          "unresolved_message_count": 4
        },
        {
          "code": "Q",
          "message_count": 3,
          "resolved_station_names": [
            "Split"
          ],
          "unresolved_message_count": 1
        },
        {
          "code": "L",
          "message_count": 3,
          "resolved_station_names": [],
          "unresolved_message_count": 3
        },
        {
          "code": "F",
          "message_count": 3,
          "resolved_station_names": [],
          "unresolved_message_count": 3
        },
        {
          "code": "U",
          "message_count": 2,
          "resolved_station_names": [
            "Mondolfo"
          ],
          "unresolved_message_count": 1
        },
        {
          "code": "W",
          "message_count": 1,
          "resolved_station_names": [
            "CROSS La Garde"
          ],
          "unresolved_message_count": 0
        },
        {
          "code": "Z",
          "message_count": 1,
          "resolved_station_names": [],
          "unresolved_message_count": 1
        },
        {
          "code": "I",
          "message_count": 1,
          "resolved_station_names": [],
          "unresolved_message_count": 1
        }
      ],
      "station_reference_source_label": "ITU List IV coast station table (2025)",
      "station_reference_source_url": "https://www.itu.int/en/ITU-R/terrestrial/mars/Documents/ListIV_User%20Guide%20and%20Reference%20Tables_2025.pdf",
      "global_map_source_label": "WMO NAVTEX stations map",
      "global_map_source_url": "https://wmo.int/navtex-stations"
    }
  },
  "sections": {
    "executive_summary": [
      "The window contains 96 messages; dominant B1 codes were T (21), G (13), S (12); keyword concentration led by fog (13), warning (5), survey (4), gale (3).",
      "[VA63] navigational warning for Unresolved B1 code V. This is a weather bulletin; readable sections mention fog across the covered waters. Decoding is partial rather than complete.",
      "[TA19] navigational warning for Unresolved B1 code T. Readable text reports a pipeline-related hazard with local restrictions for nearby traffic. Decoding is partial rather than complete.",
      "[unknown] operational notice for Belgium - Belgian coast and southern North Sea. Readable text sets local operating restrictions, including anchoring, fishing, or towing limits. Decoding is partial rather than complete.",
      "No direct mentions were found in this corpus window."
    ],
    "main_developments": [
      "[VA63] navigational warning for Unresolved B1 code V. This is a weather bulletin; readable sections mention fog across the covered waters. Decoding is partial rather than complete.",
      "[TA19] navigational warning for Unresolved B1 code T. Readable text reports a pipeline-related hazard with local restrictions for nearby traffic. Decoding is partial rather than complete.",
      "[unknown] operational notice for Belgium - Belgian coast and southern North Sea. Readable text sets local operating restrictions, including anchoring, fishing, or towing limits. Decoding is partial rather than complete.",
      "[TA27] navigational warning for Unresolved B1 code T. Readable text says: Coastal warning nr.035/26 mar 29. Decoding is partial rather than complete.",
      "[SA34] navigational warning for Germany - German Bight and German North Sea. Readable text says: 'gw/ems' light-vessel 54-10n 006-21emhp arily removed. Decoding is partial rather than complete.",
      "[SA79] navigational warning for Germany - German Bight and German North Sea. Readable text says: 5 sm lighting inoperative across the entire wind farm.",
      "[SA82] navigational warning for Germany - German Bight and German North Sea. Readable text reports survey operations near 54-28.5N 005-30.8E and implies local caution around the work area.",
      "[QE77] weather forecast for Croatia - Adriatic Sea. Readable text says: Vrb cloudy, loc poss slight rain mostly i j z m y cekuaz zr 8 1 1) (0. Decoding is partial rather than complete."
    ],
    "weather_and_sea_state": [
      "[VA63] navigational warning for Unresolved B1 code V. This is a weather bulletin; readable sections mention fog across the covered waters. Decoding is partial rather than complete.",
      "[GB29] meteorological warning for United Kingdom - North Sea and north-east UK coast. Readable text says: Gale now ceased. Decoding is partial rather than complete.",
      "[unknown] operational notice for Unresolved B1 code L. This is a weather bulletin; readable sections mention ice across the covered waters. Decoding is partial rather than complete.",
      "[GA61] navigational warning for United Kingdom - North Sea and north-east UK coast. This is a weather bulletin; readable sections mention fog across the covered waters.",
      "[GA07] navigational warning for United Kingdom - North Sea and north-east UK coast. Readable text reports a fog signal outage near 53-11.9N 002-29.1E."
    ],
    "navigation_and_safety_alerts": [
      "[VA63] navigational warning for Unresolved B1 code V. This is a weather bulletin; readable sections mention fog across the covered waters. Decoding is partial rather than complete.",
      "[TA19] navigational warning for Unresolved B1 code T. Readable text reports a pipeline-related hazard with local restrictions for nearby traffic. Decoding is partial rather than complete.",
      "[unknown] operational notice for Belgium - Belgian coast and southern North Sea. Readable text sets local operating restrictions, including anchoring, fishing, or towing limits. Decoding is partial rather than complete.",
      "[TA27] navigational warning for Unresolved B1 code T. Readable text says: Coastal warning nr.035/26 mar 29. Decoding is partial rather than complete.",
      "[SA34] navigational warning for Germany - German Bight and German North Sea. Readable text says: 'gw/ems' light-vessel 54-10n 006-21emhp arily removed. Decoding is partial rather than complete.",
      "[SA79] navigational warning for Germany - German Bight and German North Sea. Readable text says: 5 sm lighting inoperative across the entire wind farm.",
      "[SA82] navigational warning for Germany - German Bight and German North Sea. Readable text reports survey operations near 54-28.5N 005-30.8E and implies local caution around the work area.",
      "[QE77] weather forecast for Croatia - Adriatic Sea. Readable text says: Vrb cloudy, loc poss slight rain mostly i j z m y cekuaz zr 8 1 1) (0. Decoding is partial rather than complete."
    ],
    "electronic_interference_and_navigation_integrity": [
      "[KA28] navigational warning for United Kingdom / France - Channel Islands and north-east French coast. Readable text reports an aid-to-navigation fault near 50-10.84N 001-29.44E; 50-10.44N 001-29.13E.",
      "[GA07] navigational warning for United Kingdom - North Sea and north-east UK coast. Readable text reports a fog signal outage near 53-11.9N 002-29.1E.",
      "[GA18] navigational warning for Unresolved B1 code G. Readable text says: 1. nng e buoy 56-14.3n 002-08.6w and nng s buoy 56-12.3n 002-09.8w ais inohpyhf.",
      "[EA22] navigational warning for United Kingdom - English Channel and western approaches. Readable text reports a fog signal outage near 50-39.7N 001-35.5W. Decoding is partial rather than complete."
    ],
    "special_operations_and_military_activity": [
      "[OD71] search and rescue message for Unresolved B1 code O. Readable text indicates a search-and-rescue related notice. Decoding is partial rather than complete.",
      "[unknown] operational notice for Unresolved B1 code Q. Readable text says: U mg h myongfmypmhp arily dangerous tzmjdf g br-161. Decoding is partial rather than complete.",
      "[IA99] navigational warning for Unresolved B1 code I. Readable text says: Mariners advised to exercise cautim. Decoding is partial rather than complete.",
      "[unknown] operational notice for Unresolved B1 code T. Readable text says: Oojjm m exercises in the large sector of lombardsijde. Decoding is partial rather than complete."
    ],
    "focus_region": [
      "No direct mentions were found in this corpus window."
    ],
    "confidence_and_gaps": [
      "Decode quality across the window was high=27, medium=40, low=29.",
      "64 older rebroadcast notices were removed because their internal issue times predated the 24-hour operating window.",
      "Published timestamps reflect reception time in the received corpus, not necessarily original notice issue time.",
      "Repeated or rebroadcast notices can persist inside the rolling window; message IDs are retained for traceability.",
      "29 messages were classified as low decode quality and may contain damaged titles or coordinates."
    ]
  }
}