Defect Tracking
Every defect, one view.
“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?”
Nineteen sources, one ranked list
A vessel collects defects from twenty different angles. 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 pipeline pulls every defect source into one place, scores age and severity, clusters by equipment family, and tracks closure-rate trends. The output is a single ranked list — the items most likely to bite, sorted worst-first — alongside the systemic patterns that explain why this vessel keeps generating the same kind of defect.
Sources
All 19 defect surfaces
| Source | Origin | Typical severity vocabulary |
|---|---|---|
| PSC | Port State Control inspection | Major / Detainable / Minor |
| SIRE | OCIMF tanker vetting | Observation severity 1–4 |
| CDI | Chemical Distribution Institute | Chemical-tanker observations |
| Class CoC | Class society Condition of Class | CoC / Memoranda / Notes / Recommendation |
| Flag state | Flag administration inspection | Deficiency / Detention |
| Internal audits | SMS internal audit | Major / Minor non-conformity |
| Navigational audits | Navigation team | Bridge / cargo / safety findings |
| Charterer / Owner / Terminal | Inspections | Per-inspector grading |
| HMX | Hull & Machinery underwriter survey | Critical / High / Medium / Low |
| SCMM | Ship-class machinery monitoring | Equipment-driven |
| VIR (current & previous) | Vessel inspection report | Open / Closed / Pending |
| ADI | Accidents, damages, injuries | Incident-driven |
| Near-miss | Safety reports from crew | Behavioural / equipment |
| External audits | Third-party audits | Per-auditor grading |
PSC data comes from all major MoU regimes: Paris, Tokyo, Indian Ocean, Mediterranean, Caribbean, Black Sea, Abuja, USCG, and Riyadh. Class data from ABS, BV, DNV, LR, NK, CCS, KR, IRS, and RINA.
Once flattened, every defect in the fleet has the same shape: vessel, source, severity, status, dates. All downstream analysis operates on that shape — there is no per-source logic.
How findings are ranked
Three independent dimensions combine into a single rank.
Severity:
| Severity | Examples |
|---|---|
| CRITICAL | PSC detainable, open CoC near deadline, ADI casualty, HMX critical |
| MAJOR | PSC major, internal audit major NC, SIRE 1–2, HMX high |
| MINOR | PSC minor, SIRE 3–4, near-miss, charterer suggestion |
Age tier:
| Tier | Window |
|---|---|
| Recent | ≤ 30 days |
| Active | 30–90 days |
| Overdue | 90–180 days |
| Chronic | > 180 days |
A spike of CRITICAL items in the Chronic tier is the single largest escalation trigger — items that old typically reflect a closure-process gap, not an isolated incident.
Equipment-family clustering:
Cluster signal(f) = Systemic if N_open(f) ≥ 3 = Isolated otherwiseThree or more defects on the same equipment family (engine, cargo system, navigation, accommodation, hull, safety, environmental) flips the verdict from “isolated incidents” to “systemic issue.”
Closure-rate health
Closure rate = defects closed in period / (open at start + opened in period)Two patterns matter:
- Falling closure rate + rising open count — operational drift. The team is opening defects faster than it is closing them.
- Stable closure rate + rising open count — capacity problem. New defects are arriving faster than expected, often after crew change or a heavy port-call window.
The pipeline reports closure rate alongside the absolute open count so the reviewer sees direction and magnitude together.
Worked sweep — MV POSUN
| Metric | Value |
|---|---|
| Open defects | 87 |
| New this period | 11 |
| Closed this period | 6 |
| Closure rate | 0.063 (down from 0.18 last period) |
| CRITICAL open | 4 |
| CRITICAL in Chronic tier (> 180d) | 2 |
Equipment clusters:
| Family | Open count | Signal |
|---|---|---|
| Cargo system | 6 | Systemic |
| Engine | 3 | Systemic (just crossed threshold) |
| Accommodation | 5 | Systemic |
| Safety | 2 | Isolated |
| Other | 71 | — |
Stuck defects:
| Blocker | Count |
|---|---|
| Awaiting parts | 14 |
| Awaiting port | 8 |
| Awaiting vendor | 5 |
| Awaiting class approval | 2 |
Verdict: HIGH. Two CRITICAL findings open more than 6 months, falling closure rate, three systemic clusters. The pipeline:
- Tags
escalation_required: true, priority CRITICAL. - 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.
- Generates recommendations focused on systemic patterns — closing the cargo-system cluster is more valuable than closing five random defects.
Under the hood
Flatten logic — normalising 19 sources into one shape
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 recordsStuck defects — blocker classification
A defect stuck longer than expected is more useful when grouped by why it’s stuck. The pipeline classifies blockers:
| Blocker | Typical resolution |
|---|---|
| Awaiting parts | Procurement chase, ETA confirmation |
| Awaiting port | Schedule into next port call |
| Awaiting vendor | Contract escalation |
| Awaiting class approval | Class follow-up |
| Awaiting investigation | Internal investigation completion |
| Other / unclassified | Manual triage |
Most stuck defects are unblocked by a single email or phone call — it’s the highest-leverage list a TSI can act on.
Escalation triggers
| Trigger | Severity |
|---|---|
| Any CRITICAL defect open more than 30 days | CRITICAL |
| Any safety-equipment defect open at all | CRITICAL |
| Closure rate falling for 2+ consecutive periods | HIGH |
| Equipment cluster (3+ defects same family) | HIGH |
| Class CoC unresolved past deadline | CRITICAL |
| Three or more PSC detainables on one inspection | CRITICAL |
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 TSI should know when their fleet’s defect taxonomy is drifting.