EU AI Act Compliance — Azure Maritime Intelligence
Product: Azure AI Weather (Azure Maritime Intelligence V2) Document version: 1.4 Last reviewed: 2026-07-16 Contact: contact@azureai.pt
Operator: see Operator below.
Governance index: docs/README.md · AI System Card · Model Registry · Versioning Policy · Model Changelog
Plain Language Summary
- Azure AI Weather is an AI-assisted decision-support system.
- It does not control vessels, engines or autopilots.
- It never replaces the skipper.
- GO / CAUTION / NO-GO are advisory recommendations.
- Weather forecasts are probabilistic and conditions may change rapidly.
- The final navigation decision always belongs to the skipper.
- Human oversight is always present.
- Azure is currently documented as a proportionate limited-risk AI system and is reviewed whenever major features are added.
For everyday users
This document is written primarily for transparency and regulatory documentation (auditors, partners, and internal governance).
For day-to-day use you only need to understand that:
- Azure AI Weather provides advisory support.
- It does not replace official weather services.
- It does not replace skipper judgement.
- Always cross-check critical decisions with official forecasts and safe seamanship.
The full sections below keep the technical and compliance detail required for AI Act alignment.
Executive Summary
Azure Maritime Intelligence is a maritime decision-support application for recreational and professional skippers. It combines weather forecasts, fused marine data, deterministic risk scoring, and optional large-language-model (LLM) narration. The application does not control vessels, autonomously navigate, or issue mandatory operational commands. The skipper remains solely responsible for every navigation and safety decision.
This document records our proportionate alignment with the EU Artificial Intelligence Act (Regulation (EU) 2024/1689). Based on current functionality, Azure is not classified as a High-Risk AI System under Annex III for the use cases implemented today. Obligations are applied where relevant — especially transparency (Article 50) and technical documentation (Article 11) — without unnecessary bureaucracy.
Estimated AI Act readiness: Moderate–Good for a limited-risk / general-purpose decision-support product. Core deterministic logic is documented; transparency measures have been strengthened in UI and prompts; formal conformity assessment is not required at this classification level.
Table of contents
- Plain Language Summary
- For everyday users
- Executive Summary
- Operator
- Human Override Principle
- AI Limitations
- AI system description
- Risk classification (EU AI Act)
- Architecture
- Confidence Score
- Component inventory
- Black Box
- Data sources
- Model inventory
- AI Lifecycle
- VISUS historical navigation pattern analysis
- Human oversight
- Risk assessment (proportionate)
- Transparency measures (implemented)
- Limitations (user-facing summary)
- Monitoring process
- Governance Review
- Version management
- Future compliance roadmap
- References
- Revision history
Revision history
| Version | Date | Summary |
|---|---|---|
| 1.1 | 2026-07-07 | Governance links; proportionate AI Act documentation |
| 1.2 | 2026-07-16 | Plain Language Summary, everyday-user intro, TOC, callouts, operator placeholders (no change to classification or obligations) |
| 1.3 | 2026-07-16 | Historical Navigation Insight; VISUS wording → historical navigation pattern analysis |
| 1.4 | 2026-07-16 | Formal operator block; AI Lifecycle; Human Override Principle; Confidence Score; Black Box / VISUS / AI Limitations / Governance Review (documentation only — classification unchanged) |
Operator
Diogo Botelho Moniz
Trading as
Azure AI Weather
A FrontSea Intelligence product
Portugal
Contact: contact@azureai.pt
Additional legal identity details (address, NIF) appear in the Privacy Policy and Terms of Service.
Human Override Principle
This principle underpins Skipper, Black Box, chat, Skipper Insight, Old Salt, VISUS historical navigation pattern analysis, and Historical Navigation Insight. No output constitutes a navigation order, steering command, or mandatory route.
AI Limitations
1. AI system description
1.1 Intended purpose
- Provide coastal and river sailing weather intelligence (wind, sea, tide, pressure, patterns).
- Offer an advisory GO / CAUTION / NO-GO planning layer derived from an Operational Risk Index.
- Record operational context during voyages (Black Box) for replay, debrief, and manual model development.
- Collect structured Field Check feedback from Founders cohort skippers to improve forecast alignment.
- Answer maritime weather questions via an AI assistant (home chat, Skipper Insight, Old Salt replay commentary).
- Provide Historical Navigation Insight — situational awareness from historical AIS and similar-weather patterns (never navigation instructions).
1.2 What the system does not do
| Excluded capability | Status |
|---|---|
| Autonomous vessel navigation | Not implemented |
| Engine / autopilot / rudder control | Not implemented |
| Autonomous routing / steering commands | Not implemented (Historical Navigation Insight is situational awareness only) |
| Mandatory go/no-go orders | Not implemented |
| Replacement of skipper judgement | Explicitly disclaimed |
| Automatic model training from voyage data | Disabled by policy (blackbox/datasets.py) |
1.3 Primary users
- Recreational and semi-professional skippers (Free, Skipper, Pro tiers).
- Founders validation cohort (Field Check).
- Internal development team (manual VISUS navigation model training).
2. Risk classification (EU AI Act)
2.1 High-risk assessment
Conclusion: Not high-risk under current deployment, subject to periodic review.
Annex III high-risk categories commonly cited for maritime systems include autonomous transport and safety-critical control. Azure:
- Does not perform autonomous navigation or traffic management as a safety component of transport.
- Does not issue binding operational decisions to machinery.
- Presents outputs as decision support with human oversight and override.
If future features add autonomous routing commands, COLREGS automation, or safety-critical control without human confirmation, re-classification would be required.
2.2 Applicable obligation areas
| Area | Applicability | Azure approach |
|---|---|---|
| Art. 9 Risk management | Proportionate | Lightweight risk register in this document; Founders Field Check |
| Art. 10 Data governance | Partial | Append-only logs; manual training policy; no PII in weather models |
| Art. 11 Technical documentation | Yes | This document + OPERATIONAL_RISK_METHODOLOGY.md + code |
| Art. 13 Transparency / instructions | Yes | UI disclosures, advisory labels, methodology docs |
| Art. 14 Human oversight | Yes | Skipper authority; Black Box override; Human Override Principle; no auto-execution |
| Art. 50 Transparency for certain AI | Yes | AI interaction labels; chat/insight disclaimers |
| Art. 52 GPAI / systemic models | N/A at app layer | Third-party LLM (HuggingFace hosted Qwen) — provider obligations apply upstream |
2.3 GPAI / foundation model note
Generative text uses HuggingFace Inference API with Qwen/Qwen2.5-7B-Instruct. Azure does not fine-tune or deploy this model; it is constrained by system prompts, context injection, and output guards (core/security/prompt_guard.py). Provider terms and EU GPAI obligations are primarily HuggingFace's; Azure documents usage and limitations here.
3. Architecture
flowchart TB
subgraph inputs [Data inputs — non-autonomous]
IPMA[IPMA / national forecasts]
OWM[OpenWeather marine]
ERA5[ERA5 K-means pattern models]
IOT[Ecowitt station Azure_Station_V1]
TIDE[Tide models]
end
subgraph deterministic [Deterministic core — no LLM]
DG[Decision graph]
OR[Operational Risk 0–1]
CONF[Confidence 0–1]
GNG[GO / CAUTION / NO-GO advisory]
end
subgraph generative [Generative layer — LLM narration]
CHAT[Home chat assistant]
INSIGHT[Skipper Insight briefing]
OLDSALT[Old Salt replay commentary]
end
subgraph human [Human oversight]
SKIPPER[Skipper decision authority]
BB[Black Box confirm / override]
FC[Field Check ground truth]
end
inputs --> DG --> OR --> GNG
OR --> CONF
GNG --> INSIGHT
OR --> CHAT
GNG --> BB
SKIPPER --> BB
FC --> GT[(founders_ground_truth.jsonl)]
BB --> LOG[(blackbox JSONL)]
3.1 Confidence Score
Confidence represents the quality and consistency of available information (coverage, forecast horizon, source agreement). It is shown alongside Operational Risk in Skipper.
| Point | Explanation |
|---|---|
| What it measures | Uncertainty / consistency of environmental inputs — not “how safe it is to sail” |
| Low confidence | Does not necessarily indicate dangerous conditions |
| Low confidence means | Greater uncertainty within the available environmental information |
| Independence | Operational Risk and Confidence are independent indicators |
Technical detail: OPERATIONAL_RISK_METHODOLOGY.md · CONF-001 in MODEL_REGISTRY.md · confidence/confidence_engine.py.
When confidence is below ~0.45, the GO/NO-GO layer may record a low_confidence factor so users treat the advisory with extra caution — still without changing the meaning of Operational Risk itself.
4. Component inventory
4.1 AI / ML components (summary)
| Component | Type | Model / method | Output | Human role |
|---|---|---|---|---|
| Home chat assistant | LLM | Qwen2.5-7B-Instruct via HuggingFace | Text replies | User interprets; deterministic fallback if LLM unavailable |
| Skipper Insight | LLM | Same | Briefing + watch bullets | User reads alongside cockpit tiles |
| Old Salt | LLM | Same | Replay commentary | Optional; persona label in UI |
| ERA5 Portugal patterns | Unsupervised ML | K-means + PCA on ERA5 features | Cluster ID, pattern score | Context only |
| ERA5 global regime | Unsupervised ML | K-means on global features | Regime label | Context only |
| Storm engine classifier | Optional supervised ML | storm_predictor.pkl when deployed | Storm probability | Feeds risk graph |
| VISUS navigation models | Supervised ML | External .pkl (manual deploy) | Historical navigation pattern analysis | Heuristic fallback if no model; not auto-updated |
| Historical Navigation Insight | Statistical / ML-assisted | VISUS AIS + similar-weather patterns | Descriptive traffic-density insight | Situational awareness only; skipper retains route choice |
4.2 Non-AI components (deterministic / data)
| Component | Description |
|---|---|
| Decision graph | Weighted wind/sea/instability → operational risk |
evaluate_go_nogo() | Threshold-based advisory status |
| Confidence engine | Independent quality / consistency score (see §3.1) |
| IPMA / OpenWeather ingestion | Public forecast APIs |
| Tide service | Astronomical / model tides |
| Weather station client | HTTP poll of Ecowitt normalized API |
| Lisbon meteo fusion | Multi-source wind/pressure blending |
| Black Box store | Operational recording & replay (not an AI decision engine) |
| Founders Field Check | Structured human feedback capture |
| Marine Radio / FrontSea events | Community messaging (LLM classifies radio text for hub — human validation for non-SOS) |
| Nortada / rain layers | Rule-based alert chips |
4.3 Black Box — operational recording & replay
The Black Box is an operational recording and replay system.
| It does | It does not |
|---|---|
| Record voyage context, weather conditions, and operational events | Control a vessel |
| Support later review, debrief, and learning | Issue navigation commands |
| Allow human confirm / override of recorded advisory decisions | Replace skipper judgement |
| Export reviewed datasets for offline model development | Autonomously navigate or optimise routes |
Authoritative policy: blackbox/datasets.py · AI_SYSTEM_CARD.md — Black Box recording policy.
5. Data sources
| Source | Use | Refresh |
|---|---|---|
| IPMA | Portugal official forecasts | API poll |
| OpenWeather | Marine wind/wave fallback | API |
| ERA5 (historical) | Pattern clustering features | Offline model |
Ecowitt Azure_Station_V1 | Live station (Lisbon area) | ~15 min upload, 1–2 min poll |
| NOAA NDBC | Ground truth buoys (where configured) | API |
| Copernicus CMEMS | Sea state hook (optional) | API |
| User GPS | Position for local fusion / Black Box | Device |
| AIS (VISUS / marine feed) | Historical Navigation Insight traffic patterns | Live sample + historical baselines |
| Founders Field Check | Human validation JSONL | On submit |
Personal data (accounts, chat memory for Pro) is handled under standard privacy practices; voyage logs may contain location tracks — see deployment data layout (deploy/PERSISTENT_DATA.md).
6. Model inventory
See MODEL_REGISTRY.md for the complete registry (LLM-001, ERA5-PT/GL, STORM-001, RISK-001, CONF-001, VISUS shared models) including version, status, validation, and oversight per model.
6.1 AI Lifecycle
Every AI model follows the governance lifecycle below. No AI model is deployed directly into production. Every production model is validated before release.
Research
↓
Validation
↓
Internal Testing
↓
Founder Beta
↓
Production
↓
Continuous Monitoring
↓
Periodic Review
↓
Retirement
| Stage | Meaning |
|---|---|
| Research | Explore data, features, and candidate methods offline |
| Validation | Measure fitness against held-out or reviewed evidence |
| Internal Testing | Engineering / CI checks; no public exposure |
| Founder Beta | Controlled cohort feedback (e.g. Field Check) |
| Production | Manual promotion after sign-off; registry / changelog update |
| Continuous Monitoring | Stale-data alerts, Field Check review, export review |
| Periodic Review | Scheduled governance and classification review |
| Retirement | Deprecate artifact; document rollback path |
Related: VERSIONING_POLICY.md · MODEL_CHANGELOG.md · §12 Governance Review.
6.2 VISUS historical navigation pattern analysis
VISUS AI models used in Black Box are documented as:
Earlier internal wording such as “Speed/heading hints” is replaced by historical navigation pattern analysis.
What VISUS historical models do
- Analyse historical AIS observations
- Compare similar weather situations
- Identify statistical navigation patterns
- Provide situational awareness only
What they do not do
- Calculate mandatory routes
- Generate steering commands
- Replace skipper judgement
| Property | Statement |
|---|---|
| What the models analyse | Historical AIS traffic together with similar environmental / weather conditions |
| What the models identify | Statistical traffic patterns and density corridors for situational awareness |
| What the models never do | Generate mandatory routes, headings, bearings, or steering commands |
| Human role | Models never replace skipper judgement; human oversight remains mandatory |
| Product role | Advisory situational-awareness tools only — not an autonomous routing engine |
Historical Navigation Insight (Black Box card) surfaces confidence, observation counts, similar-weather classification, and historical traffic density. Optional corridor highlighting represents a statistical density zone, not a route to follow. Wording is descriptive (e.g. “Historical AIS data indicates that many similar vessels navigated through the highlighted corridor”) and never prescriptive.
This feature does not modify GO / CAUTION / NO-GO logic, Operational Risk calculations, or weather fusion. It does not control navigation, optimise routes, or generate steering commands.
7. Human oversight
| Mechanism | Description |
|---|---|
| Human Override Principle | Every AI output may be ignored; human judgement always prevails |
| Skipper authority | All UI copy states final decision rests with the skipper |
| Advisory GO/CAUTION/NO-GO | Planning aid only; confirm/override in Black Box |
| Black Box override | human.override events recorded with reason |
| Historical Navigation Insight | Informational AIS/weather-pattern layer only; skipper remains responsible for route selection |
| Field Check | Founders compare felt conditions vs Azure prediction |
| Official forecasts | Users directed to national authorities in prompts and disclaimers |
| Hub validation | Non-SOS marine radio events may await human validation at FrontSea Hub |
| Development process | Model changes reviewed and deployed manually via the AI Lifecycle |
8. Risk assessment (proportionate)
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| User over-relies on GO status | Medium | Medium | Advisory labels; confidence display; Human Override Principle; disclaimers |
| LLM hallucination / wrong tone | Medium | Medium | Context-only numbers; guard_llm_output; post-safety tests |
| Stale weather data | Medium | Medium | Timestamps; stale logging for IoT; IPMA refresh |
| Misclassification as high-risk product | Low | Regulatory | This document; no autonomous control |
| Voyage data misuse for training | Low | Privacy / trust | automatic_model_training: false policy |
| Treating historical patterns as routes | Low | Medium | Descriptive-only copy; corridor not_a_route; AI disclosures |
9. Transparency measures (implemented)
9.1 User interface
- Chat: AI disclosure + forecast limitation disclaimer (
frontend/shared/locale.js). - Skipper: Advisory notice on GO/CAUTION/NO-GO pill; operational risk + confidence visible; Skipper Insight labeled as AI-generated briefing.
- Black Box: Operational recording / replay system — not an AI decision engine or autonomous navigator.
- Historical Navigation Insight (Black Box): Permanent Historical AI Insight label; info icon disclosure that patterns are derived from historical AIS and similar environmental conditions for situational awareness only; never framed as a navigation instruction.
- Field Check: Documented as ground-truth validation for quality improvement.
9.2 LLM system prompts
Shared rules in core/ai_act_advisory.py injected into chat and Skipper Insight prompts:
- Decision-support only; no orders or guarantees.
- Cautious, probabilistic language.
- Encourage official forecast cross-check.
- Skipper retains full responsibility.
9.3 Output guards
guard_user_prompt()— injection resistance.guard_llm_output()— blocks instruction leakage; redirects to authority consultation.- Insight coherence guards — align narrative with deterministic GO status and wind/sea context.
9.4 Documentation
- docs/README.md — governance index
- AI_SYSTEM_CARD.md — system card (limitations, oversight, lifecycle)
- MODEL_REGISTRY.md — model inventory
- VERSIONING_POLICY.md — semver, rollback, deprecation
- MODEL_CHANGELOG.md — change history
- This file (
AI_ACT_COMPLIANCE.md) OPERATIONAL_RISK_METHODOLOGY.mdmeteorologia_base/YAML doctrine (forecast limits, risk communication)blackbox/datasets.pydata governance policy
10. Limitations (user-facing summary)
- Forecasts are probabilistic — not guarantees; conditions can change rapidly.
- Spatial resolution — grid models may miss local harbour effects.
- Advisory status — GO/CAUTION/NO-GO is a planning envelope, not permission to sail.
- LLM narration — may omit nuance; numbers in chat/insight must match backend context when guards succeed; always verify critical decisions against official sources.
- Coverage — optimized for Iberian Atlantic / Tagus operations; other regions may have thinner ground truth.
- IoT station — point measurement; not a substitute for route-wide assessment.
- Confidence — low confidence means greater uncertainty in available information, not automatically “dangerous conditions.”
- Historical patterns — statistical AIS/weather context only; never navigation instructions.
See also the AI Limitations callout above.
11. Monitoring process
| Activity | Frequency | Owner |
|---|---|---|
| Founders Field Check review | Ongoing during founder phase | Product / meteo team |
| LLM post-safety regression tests | CI on each change | Engineering |
| GO/NO-GO threshold tests | CI | Engineering |
| Weather station stale alerts | Automated logs (>20 min) | Operations |
| Black Box export review (manual training) | Monthly or as needed | VISUS dev team |
| AI Act classification review | Annual or on major feature release | Product + legal advisor |
| Governance documentation review | See §12 | Product + legal advisor |
12. Governance Review
AI documentation is reviewed:
- Annually
- Whenever major AI functionality changes
- Whenever regulations change
- Before commercial public releases
Review outputs typically include updates to this file, the AI System Card, Model Registry, and Model Changelog as applicable.
13. Version management
See VERSIONING_POLICY.md for semantic versioning, dataset versioning, model artifact rules, rollback, and deprecation.
Quick reference:
- Application:
2.0.0(core/app_factory.py) - Risk thresholds:
skipper/go_nogo.py(git-versioned) - LLM:
HUGGINGFACE_CHAT_MODELenv (defaultQwen/Qwen2.5-7B-Instruct) - Change log: MODEL_CHANGELOG.md
14. Future compliance roadmap
| Priority | Item | Target |
|---|---|---|
| Medium | Privacy policy / Terms of Use published alongside app | Next legal review |
| ~~Medium~~ | ~~Model cards for deployed .pkl files~~ | Done — MODEL_REGISTRY.md + AI_SYSTEM_CARD.md |
| Low | Public AI system summary page (HTML) mirroring docs | Optional |
| Low | Formal DPIA if EU user scale or sensitive categories expand | Trigger-based |
| Ongoing | Re-assess high-risk classification if autonomy features added | Per release |
| Ongoing | Keep MODEL_CHANGELOG.md current on each model change | Continuous |
| Ongoing | Governance Review cadence (§12) | Annual + trigger-based |
15. References
- Regulation (EU) 2024/1689 — Artificial Intelligence Act
- docs/README.md — governance documentation index
- AI_SYSTEM_CARD.md
- MODEL_REGISTRY.md
- VERSIONING_POLICY.md
- MODEL_CHANGELOG.md
- OPERATIONAL_RISK_METHODOLOGY.md
deploy/README.md— deployment and access tiersblackbox/datasets.py— voyage data governancemeteorologia_base/previsao/limites_previsao.yaml— forecast limit doctrinemeteorologia_base/risco_e_decisao/avaliacao_risco.yaml— risk communication doctrine
*This document is internal governance and transparency material. It does not constitute legal advice. Consult qualified counsel for formal regulatory opinions.*