Analytics Methodology

How PSI quality metrics are calculated - formulas, AI classification, and data quality adjustments.


Core Metrics

Quality %

The primary quality metric: Quality Cost as a percentage of Project Value.

Quality % = (Total Quality Cost for Project) / Project Value x 100

Target: <2%

Calculation Options:

  • Mean (weighted): Total Quality Cost / Total Project Value across all projects
  • Median: Median of per-project Quality % values

When to use which:

  • Mean: Overall portfolio view
  • Median: More robust to outliers (single bad project doesn’t skew)

Quality Cost

Total estimated cost to address a quality issue.

Quality Cost = Labor Cost + Material Cost

Labor Cost = SUM (Hours x Rate x Calibration x Stage Multiplier)

Components:

ComponentCalculation
HoursAI-estimated by department
Rate$150/hr eng, $125/hr shop
CalibrationEng 1.0x, Shop 0.87x
Stage MultiplierBased on detection timing

Stage Multipliers

Later detection = higher cost to fix.

Detection StageMultiplierRationale
Early (>90 days)1.0xBaseline - found during design
Mid-Build (30-90 days)1.25xSome rework, schedule pressure
Late Build (<30 days)1.5xSignificant rework, overtime
Near/At Ship2.0xEmergency fixes, expediting
Post-Ship (Field)2.0xTravel costs, customer impact

Detection Timing

Based on days between redbook entry date and planned ship date.

Days_Before_Ship = Ship_Date - Ent_Date

if Days_Before_Ship > 90:       "Early (>90 days before ship)"
elif Days_Before_Ship > 30:     "Mid-Build (30-90 days)"
elif Days_Before_Ship > 0:      "Late Build (<30 days)"
elif Days_Before_Ship == 0:     "Near/At Ship"
else:                           "Post-Ship (Field)"

Caveat: Uses planned ship date. Projects shipping late may show issues as “Post-Ship” even if caught in-house.


AI Classification

How It Works

Azure OpenAI (GPT model) analyzes each redbook’s Problem, Cause, and Solution text to estimate:

OutputOptions
Category10 categories (Design, Drawing, Assembly, etc.)
SeverityCritical, Major, Moderate, Minor
Root Cause25 categories
Hours by Dept7 department buckets
Material ImpactLow/Medium/High + flags

Single-Call Classification

All fields estimated in one API call for consistency. The AI sees the full issue context and makes correlated predictions.

Calibration

AI estimates are calibrated based on human validation:

  • Engineering hours: Generally accurate (1.0x)
  • Shop hours: Tend to be overestimated (0.87x)
  • Long tail boost: Issues >4 base hours get 1.5x multiplier

Material Cost Estimation

Levels

LevelEstimated Cost
None$0
Low$50-200
Medium$200-1000
High$1000+

Flags

Additional indicators:

  • Involves_Rework: Requires redoing existing work
  • Involves_New_Parts: Need to order new parts
  • Involves_Scrap: Material will be scrapped

Design Reuse Metrics

Deployment Number

For each PHYS. level part, tracks which deployment this is.

Deployment_Number = count of times this part shipped before + 1

Is_First_Time = (Deployment_Number == 1)

Reuse Rate

Project Reuse Rate = (Reused Parts) / (Total Parts) x 100

where Reused Parts = parts with Deployment_Number > 1

PSI shows ~82% reuse rate at PHYS. level.

First-Time Quality Analysis

Comparing first-time vs reused deployments:

  • Issue rate: Issues per deployment
  • Average cost: Cost per issue when they occur

Finding: First-time parts have 1.09x higher average cost per issue.


Quality Risk Score

A 0-100 score for individual products based on quality history.

Components

FactorWeightDescription
Issue Rate30%Issues / Deployments
Project Spread25%Projects with issues / Total projects
Cost Impact25%Total quality cost
First-Time Rate20%First-time issue rate

Score Interpretation

ScoreRisk Level
80-100Critical
60-79High
40-59Medium
0-39Low

Recurring Escape Detection

Definition

A recurring escape is the same Product x Root Cause combination appearing across multiple projects.

Is_Recurring_Escape = (
    Product_Number + AI_RootCause combination
    appears in 2+ different projects
)

Preventable Cost

Preventable Cost = Cost of 2nd+ occurrences

Logic: First occurrence discovered the issue
       Subsequent occurrences could have been prevented

SLA Compliance

Targets

SeverityResolution Target
Critical3 days
Major14 days
Moderate21 days
Minor30 days

Calculation

SLA Met = (Resolution_Days <= Target_Days)

SLA Compliance % = (Issues Meeting SLA) / (Total Issues) x 100

Systemic Issue Detection

Definition

A systemic issue is a root cause appearing across >50% of projects.

Project Spread % = (Projects with Root Cause) / (Total Projects) x 100

Is_Systemic = (Project Spread % > 50%)

Systemic issues indicate organizational patterns, not project-specific problems. They warrant process-level interventions.


Data Quality Adjustments

Employee ID Normalization

# XML has leading zeros, userlist doesn't
normalized_id = id.lstrip('0')
 
# Handle "Initals" typo in userlist
initials = row.get('Initals') or row.get('Initials')

Project Number Normalization

# Strip leading zeros
project = project.lstrip('0')
 
# Handle stock items
if project.lower() in ['0stock', '000stk']:
    project = 'STOCK'
 
# Remove suffixes
project = project.split('-')[0]

Drawing to Product Linkage

Drawing -> BOM Hierarchy -> PHYS. Ancestor -> Product Classification

Coverage: ~55% (many drawings are schematics, not PHYS parts)

Lead Time Causal Analysis Methodology

Added: February 2026 — C:\git\schedule\build_comprehensive_dataset.py

Approach

The comprehensive causal analysis tests 10 hypotheses about why PSI’s lead time nearly doubled (180d 330d) and OTD collapsed (86% 37%) starting 2022.

Causation standard (not just correlation):

  1. Temporal precedence: Did the cause precede the effect?
  2. Dose-response: More cause = more effect?
  3. Mechanism: Is there a plausible mechanism?
  4. Alternatives ruled out: Can other explanations account for the finding?

Era Definitions

EraYearsCharacteristics
Baseline2017-2021Normal operations, OTD ~85%
Overload2022-2023Active projects surged to 74, OTD collapsed to 37%
Recovery2024-2025Load reducing, OTD recovering to ~52%

Key Metrics (from comprehensive_dataset.csv)

MetricSourceWhat It Measures
ActiveProjectsAtShipproject_customers.csvConcurrent active projects when this one shipped
TS_Avg_Concurrenttslabor2.csvAvg concurrent projects per employee-month on this job
TS_Avg_Weekly_Switchestslabor2.csvAvg unique jobs per employee per week on this job
DM_110E_Spanfabric_dept_milestonesControls Engineering duration (first to last labor day)
DM_CE_MVI_Overlapfabric_dept_milestonesDays CE (110E) labor overlaps MVI (120) start
RB_RFC_Countredbook_coq.dbRedbook RFC count per project
ECN_Countecn.csvEngineering change notice count per project
JP_Part_Countjobparts.csvBOM part count per project
PO_Days_From_Orderpurchaseorders.csvDays from project order to first PO placement
TS_Op2162_Hrstslabor2.csvFloor Engineer hours (rework indicator)
WO_Avg_Cycle_Daysopenwo.csvAverage work order cycle time
TS_Emp_Hrs_CVtslabor2.csvCoefficient of variation in employee hours (time variance)

Correlation Ranking (Feb 2026 results)

Top correlators with DaysLate (2017+ external projects, n=660):

rMetricInterpretation
+0.203DM_110E_SpanLonger CE duration more late
+0.191WO_Avg_Cycle_DaysLonger WO cycles more late
+0.166ActiveProjectsAtShipMore concurrent projects more late
+0.138Tot_ActualMore total hours more late
+0.118TS_Avg_ConcurrentMore context switching more late
+0.093TS_Emp_Hrs_CVMore employee variance more late
+0.090RB_Total_CostHigher quality cost more late

Hypothesis Verdicts

HypothesisVerdictEvidence Strength
H1: Capacity OverloadSTRONGDose-response confirmed: >60 active projects = 42% OTD vs <30 = 73%
H2: Machine ComplexityContributingPart count up ~10%, hours up 17-41%, but can’t explain full 54% LT increase
H3: Supply ChainContributingVendor delays avg 3-5 days, project delays avg 34 days
H4: Context SwitchingPendingConcurrent projects jumped 10.8 14.2 in overload era
H5: Quality/ReworkPendingRFC count stable (~38-42) but ECN count rose 11 15
H7: Controls LatePendingCE finishes before MVI only 33-43% of the time
H8: Time VariancePendingEmployee CV slightly higher in overload (1.44 1.53)
H11: Planning AccuracyPendingBudget accuracy slightly worse in overload (91% 94%)


Last updated: February 27, 2026