Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.appliedaifoundation.org/llms.txt

Use this file to discover all available pages before exploring further.

Defect Surveillance pipeline ingesting PSC, SIRE, CDI, audit, ADI, near-miss, HMX, SCMM, VIR, and class CoC findings into a unified ranked output
“How many open defects do we have?” is the wrong question. The right one is “how many of them have been open longer than they should be, and how many of those are on the same equipment?”
A vessel collects defects from twenty different angles: PSC inspections, SIRE, CDI, charterers, owners, terminals, internal audits, navigational audits, flag state, external audits, ADI events, near-misses, Hull & Machinery, SCMM, the previous VIR, the most recent VIR, and Conditions of Class. The numbers add up fast — most fleets carry several hundred open items at any time. The work isn’t tracking the count. It’s separating the ones that need a Technical Superintendent’s attention from the ones that are just paperwork. The Defect Surveillance pipeline pulls every defect source into one place, scores age and severity, clusters by equipment family, and tracks closure-rate trends. It produces a single ranked list — the items most likely to bite, sorted with the worst on top — alongside the systemic patterns that explain why this vessel keeps generating the same kind of defect.

Sources

A finding can come from any of these surfaces. Each one has its own filing format, its own due-date convention, its own severity vocabulary. The pipeline normalises them all into the same record shape:
SourceOriginTypical severity vocabularyWhere the data comes from
PSCPort State Control inspectionMajor / Detainable / MinorPort-state-control regime portals (Paris MoU, Tokyo MoU, Indian Ocean MoU, Mediterranean MoU, Caribbean MoU, Black Sea MoU, Abuja MoU, USCG, Riyadh)
SIREOCIMF tanker vettingObservation severity 1–4OCIMF SIRE 2.0 portal
CDIChemical Distribution InstituteChemical-tanker observationsCDI portal
Class CoCClass society Condition of ClassCoC / Memoranda / Notes / RecommendationClass portals (ABS, BV, DNV, LR, NK, CCS, KR, IRS, RINA)
Flag stateFlag administration inspectionDeficiency / DetentionFlag administration correspondence + ERP
Internal auditsSMS internal auditMajor / Minor non-conformityERP audit module
Navigational auditsNavigation team auditsBridge / cargo / safety findingsERP nav-audit module
Charterer / Owner / TerminalInspectionsPer-inspector gradingERP inspection module + email parsing
HMXHull & Machinery underwriter surveyCritical / High / Medium / LowUnderwriter survey reports
SCMMShip-class machinery monitoringEquipment-drivenClass portal feed
VIR (current & previous)Vessel inspection reportOpen / Closed / PendingERP VIR module
ADIAccidents, damages, injuriesIncident-drivenERP incident module
Near-missSafety reports from crewBehavioural / equipmentERP IFFR / near-miss module
External auditsThird-party auditsPer-auditor gradingAuditor reports + ERP
Nineteen sources, one normalised store. A summary rollup flattens all of them into a single nested status structure:
def flatten_json(imo, nested_data):
    """Flatten nested defect summary into per-status records."""
    records = []
    for key, values in nested_data.items():
        question      = values.get("questionName")
        updated_at    = values.get("updatedAt")
        status_counts = values.get("value", {}).get("status_counts", {})
        additional    = values.get("value", {})

        # Per-source breakdown (Class, Shippalm, …)
        for source_key, source_value in additional.items():
            if isinstance(source_value, dict) and "status_counts" in source_value:
                for status, count in source_value["status_counts"].items():
                    records.append({"imo": imo, "questionName": question,
                                    "source": source_key, "status": status,
                                    "count": count, "updatedAt": updated_at})

        # Roll-up at the main level
        if status_counts:
            for status, count in status_counts.items():
                records.append({"imo": imo, "questionName": question,
                                "source": "Main", "status": status,
                                "count": count, "updatedAt": updated_at})
    return records
Once flattened, every defect in the fleet has the same shape: vessel, source, severity, status, dates. Everything downstream operates on that shape — there is no per-source analysis logic.

How findings are ranked

The pipeline uses three independent dimensions and combines them into a single rank.

Severity

Each finding inherits a severity from its source vocabulary, then gets normalised:
SeverityExamples
CRITICALPSC detainable, open CoC near deadline, ADI casualty, HMX critical
MAJORPSC major, internal audit major NC, SIRE 1–2, HMX high
MINORPSC minor, SIRE 3–4, near-miss, charterer suggestion

Age tier

Age in days from the finding’s open date:
TierWindow
Recent30\leq 30 days
Active3030 to 9090 days
Overdue9090 to 180180 days
Chronic>180> 180 days
A spike of CRITICAL items in the Chronic tier is the single largest escalation trigger in the pipeline — items that old typically reflect a closure-process gap, not an isolated incident.

Equipment-family clustering

Every defect is tagged with an equipment family (engine, cargo system, navigation, accommodation, hull, safety, environmental). Three or more defects on the same family flips the verdict from “isolated incidents” to “systemic issue”: Cluster signal(f)={Systemicif Nopen(f)3Isolatedotherwise\text{Cluster signal}(f) = \begin{cases} \text{Systemic} & \text{if } N_\text{open}(f) \geq 3 \\ \text{Isolated} & \text{otherwise} \end{cases} A systemic cluster on the cargo system is a different conversation than three unrelated defects across three families.

Closure-rate health

The pipeline tracks closure rate period-on-period: Closure rate=Defects closed in periodOpen at start+Opened in period\text{Closure rate} = \frac{\text{Defects closed in period}}{\text{Open at start} + \text{Opened in period}} Two patterns matter:
  • Falling closure rate + rising open count — operational drift. The team is opening defects faster than closing them. Usually points to a resource gap or a process that’s stopped working.
  • Stable closure rate + rising open count — capacity problem. The team is keeping pace but new defects are arriving faster than expected, often after a change of crew or after a heavy port-call window.
Closure-rate verdict is reported alongside the absolute open count so the reviewer sees direction and magnitude together.

Stuck defects

A defect that should have been closed but hasn’t been is more useful when grouped by why it’s stuck. The pipeline classifies blockers:
BlockerTypical resolution
Awaiting partsProcurement chase, ETA confirmation
Awaiting portSchedule into next port call
Awaiting vendorContract escalation
Awaiting class approvalClass follow-up
Awaiting investigationInternal investigation completion
Other / unclassifiedManual triage
Stuck defects are the highest-leverage list a TSI can act on — most of them are unblocked by a single email or a single phone call.

A worked sweep on MV POSUN

A weekly defect sweep produces this view (numbers are illustrative):
MetricValue
Open defects87
New this period11
Closed this period6
Closure rate0.063 (down from 0.18 last period)
CRITICAL open4
CRITICAL in Chronic tier (>180d)2
Equipment clusters:
FamilyOpen countCluster signal
Cargo system6Systemic
Engine3Systemic (just crossed threshold)
Safety2Isolated
Accommodation5Systemic
Other71
Stuck defects:
BlockerCount
Awaiting parts14
Awaiting port8
Awaiting vendor5
Awaiting class approval2
Verdict: HIGH. Two CRITICAL findings open more than 6 months, falling closure rate, three systemic clusters. The pipeline:
  1. Tags escalation_required: true, priority CRITICAL
  2. Routes to TSI with a one-page brief: top 10 ranked defects, three systemic clusters, and the unblock list of 14 parts orders to chase.
  3. Generates a recommendation set focused on the systemic patterns, not the individual items — closing the cargo-system cluster is more valuable than closing five random defects.

What the senior review contains

A reviewer sees a vertical document organised by what to act on, not by source:
  1. Top of the list — the ranked top 10 defects across all sources, with the score breakdown visible.
  2. Systemic clusters — equipment families with three or more open defects, with the items in each cluster.
  3. Stuck list — the unblock-actions list, grouped by blocker.
  4. Closure-rate trend — the chart and the period-on-period number.
  5. Source view (collapsed by default) — the per-source counts for compliance reporting.
  6. Recommendations — prioritised by leverage, not by date.
  7. Escalation decision — to whom, and why.
The reviewer can drill into the source view if they need it, but the default reading order is action-first.

When the pipeline escalates

TriggerSeverity
Any CRITICAL defect open more than 30 daysCRITICAL
Any safety-equipment defect open at allCRITICAL
Closure rate falling for 2+ consecutive periodsHIGH
Equipment cluster (3+ defects same family)HIGH
Class CoC unresolved past deadlineCRITICAL
Three or more PSC detainables on one inspectionCRITICAL

A note on data hygiene

A surprising amount of defect-management work is data hygiene — duplicate findings filed against multiple sources, near-misses miscategorised as ADI, equipment family left blank. The pipeline surfaces these issues but does not silently fix them; a Technical Superintendent should know when their fleet’s defect taxonomy is drifting.
The cleanest signal of fleet-wide defect-management health is whether the closure rate is steady. A vessel can carry a lot of open defects and still be healthy if the closure rate is steady and clusters are isolated. A vessel can carry few open defects and be unhealthy if the closure rate is collapsing.

References

Source templates

Defect-management suite — 19 templates covering every defect surface (PSC, SIRE, CDI, audit, ADI, near-miss, HMX, SCMM, VIR, CoC, charterer, owner, terminal, navigational, external) plus a fleet-wide rollup.

Related: PMS

Many defects are open because their planned-maintenance window hasn’t come up yet — PMS and defects compose.

Related: Class

Open Conditions of Class are tracked in both pipelines — class for the regulatory deadline, defects for the operational impact.

Related: Compliance

PSC, SIRE, and CDI findings carry detention-risk weight in the compliance pipeline.