Platform · Why

The design choices behind Hullproof.

Enterprise architects want to see why a platform was built the way it was — not just what it does. Eight immutable principles shape every decision. Each one has live proof at a working endpoint.

1

Footage-agnostic by design

Hullproof accepts video and images from any source — ROV, drone, smartphone, action camera, fixed mount, satellite, crawler, AUV. No hardware coupling, ever. Inspection contractors keep their existing kit. Operators avoid vendor lock-in.

See FootageSource schema
2

API-first

Every feature exists as a REST endpoint before it gets a UI. The web UI consumes the same API third parties use. /api/mcp/tools is the MCP-compatible tool discovery surface; /api/openapi is the full OpenAPI 3.1 spec.

See OpenAPI spec
3

Structured data first, presentation second

CoatingPassport JSON is canonical. PDF, HTML, Cognite CDF, OSDU, RDF, DNV Veracity — every other format is a derived rendering. This is why a single passport produces eight output formats with zero data duplication.

See same passport in all 6 formats
4

Confidence-scored, frame-referenced, model-versioned outputs

Every finding carries explicit confidence, n_frames_supporting, image_quality_score, ai_model_version, source_frames, location_on_asset. No anonymous claims. Low confidence is shown explicitly, never hidden. This is the structural enforcement that makes the output audit-grade.

See a finding in raw JSON
5

Audit-ready lineage from the first line of code

Every passport tags its EU AI Act class. Review workflows live in append-only history. Every claim traces back to source frames + model card. Compliance-by-design — not a checklist bolted on afterwards.

See compliance section
6

Domain-extensible

Core engine never knows about hull-specific anything. Domain knowledge (severity calibration, applicable standards, finding categories) lives per-vertical in src/lib/domains/. Adding a new asset class is a directory — 13 verticals registered today.

See registered domains
7

Agentic-consumption ready

All outputs are consumable by AI agents (Claude, GPT, Cognite Atlas AI, MCP servers, future VLA systems) without a human interpreter in the loop. JSON Schema is published live. MCP tools are discoverable.

See MCP tool list
8

Multi-tenant from row zero

Every passport carries tenant_id. Retrofitting tenancy after the fact is brutal — we never had to. Built for portfolio-scale data sharing with operator-controlled isolation.

See tenant_id field

Tradeoffs we made deliberately

JSON-first, PDF derived

PDF stays for stakeholders who want it. But the JSON is the data product. Enterprise integrations (CDF, OSDU, MCP) consume JSON directly — never have to re-parse a PDF.

Zod schema as runtime validator

Every passport is structurally validated before persistence. Schema drift is caught at the boundary. Production passports that violate the schema log + degrade to null — they never silently break consumers.

Per-domain severity calibration in code

A "moderate" coating breakdown means different things on a vessel hull (IMO PSPC) vs an offshore jacket (NORSOK N-005) vs a bridge (NCHRP Report 833). Each domain owns its thresholds. Cross-domain comparisons go through explicit mappings, not implicit ones.

EU AI Act class per passport, not per system

A Hullproof analysis used for class society compliance is a high-risk AI system. The same analysis used for internal trending is lower risk. Tagging per-passport — not per-product — lets buyers attest accurately.

What this means for buying

Hullproof isn't a PDF-report tool with an API tacked on. It's a data product with renderers tacked on. The architectural difference is the moat. If your team needs structured tilstand- data with full audit trail, that's what Hullproof is.