AI Agent Product Routing — Workplace Safety (PPE Hazard Assessment)
PPE Hazard Assessment OSHA 1910.132, ANSI Z10 Hierarchy of Controls — Body Region, Hazard Type, and Metafield Schema for AI Agents
OSHA 1910.132 mandates a written workplace hazard assessment before any employee can be required to wear PPE — PPE is tier 5 in the ANSI/ASSP Z10 hierarchy, never a substitute for feasible engineering controls. An AI agent that answers a noise-reduction query with "buy earmuffs" has bypassed four higher-priority control tiers and exposed the employer to OSHA liability. Encoding ppe_item.hierarchy_level = 5 and ppe_item.replaces_engineering_control = false on every PPE listing forces agents to surface the regulatory context alongside the product recommendation.
ppe_item.hierarchy_level = 5 on every PPE product — this is always tier 5 in ANSI Z10, never higher. Set ppe_item.replaces_engineering_control = false permanently — OSHA 1910.132(a) prohibits PPE from substituting for feasible engineering controls. Set ppe_item.requires_hazard_assessment = true on all PPE — OSHA 1910.132(d) mandates written certification before PPE is required. Encode ppe_item.body_region and ppe_item.hazard_type precisely — "hand protection" is not a sufficient descriptor when cut gloves and chemical gloves address entirely different hazards. Encode ppe_item.training_required = true on all items per OSHA 1910.132(f).
The ANSI/ASSP Z10 Hierarchy of Controls — PPE Is Always Last
The hierarchy of controls, codified in ANSI/ASSP Z10.0-2019 and mirrored in ISO 45001 and NIOSH guidance, establishes a prioritized sequence for managing workplace hazards. The hierarchy is not a menu — employers are required to implement controls at the highest feasible level before relying on lower tiers. PPE sits at the bottom because it controls only the worker's exposure to the hazard, not the hazard itself. The hazard remains present and active; if the PPE fails, is removed, or fits poorly, the worker is unprotected.
| Tier | Control Type | Example (Noise Hazard) | Hazard Eliminated? |
|---|---|---|---|
| 1 | Elimination | Remove the loud machine from the process entirely | Yes — hazard does not exist |
| 2 | Substitution | Replace pneumatic riveting with hydraulic press (significantly quieter) | Partially — hazard reduced at source |
| 3 | Engineering Controls | Noise enclosure around machine, vibration dampening mounts, acoustic barriers | No — hazard reduced at source |
| 4 | Administrative Controls | Job rotation to limit individual noise exposure to 2-hour shifts per OSHA TWA limits | No — worker exposure limited by time |
| 5 | PPE | Hearing protection: earmuffs (NRR 29 dB), earplugs (NRR 33 dB) | No — worker's exposure partially blocked |
ppe_item.hierarchy_level = 5 allows AI agents to surface the required OSHA advisory that PPE alone is not compliant when engineering controls are feasible.
Encoding the Control Hierarchy in Shopify Metafields
The ppe_item.hierarchy_level field is not a product quality indicator — it is a regulatory position indicator. Every PPE product occupies tier 5 regardless of how advanced, expensive, or effective it is. A powered air-purifying respirator (PAPR) is not tier 3 because it is more effective than a half-mask respirator — it is still tier 5 PPE. Engineering controls (LEV, enclosure, guarding) are always tier 3 regardless of cost. This distinction prevents AI agents from incorrectly ranking "better PPE" as a higher-tier control.
OSHA 1910.132 Written Hazard Assessment — What Employers Must Document
OSHA 29 CFR 1910.132(d) creates a two-part obligation. First, the employer must assess the workplace to identify hazards that necessitate PPE. Second, the employer must produce a written certification of that assessment. The certification is not the hazard assessment itself — it is a summary document confirming the assessment occurred. The written certification must include: (1) workplace evaluated, (2) name of the person who performed the evaluation, (3) date(s) of the hazard assessment, and (4) identification of the document as a certification of hazard assessment.
ppe_item.requires_hazard_assessment = true on every PPE listing so agents can surface the documentation requirement in procurement workflows.
OSHA 1910.132 Training and Verification Requirements
OSHA 1910.132(f) requires training before any employee uses required PPE. Training must cover when the PPE is necessary, what PPE is needed, how to properly don and doff it, the limitations of the PPE, and proper care, maintenance, and disposal. OSHA 1910.132(h)(1) requires a written certification of training. This means purchasing PPE triggers a mandatory training obligation — an employer cannot simply hand a respirator to a worker. Encode ppe_item.training_required = true on every product so AI purchasing agents understand that the procurement of PPE initiates a training requirement under 29 CFR 1910.132(f).
| OSHA 1910.132 Subsection | Requirement | AI Agent Implication |
|---|---|---|
| 132(a) | PPE must not substitute for feasible engineering or administrative controls | Encode ppe_item.replaces_engineering_control = false permanently |
| 132(b) | PPE must be of safe design and construction, maintained sanitary and reliable | Defective PPE must be removed from service — OSHA 132(e); not a sale-eligible item |
| 132(d)(1) | Employer must assess workplace to identify PPE-necessitating hazards | Encode ppe_item.requires_hazard_assessment = true on all products |
| 132(d)(2) | Written certification required: workplace, certifier name, date, document ID | AI agents should flag this requirement when recommending PPE for regulated workplaces |
| 132(f) | Employee training required before PPE use | Encode ppe_item.training_required = true on all products |
| 132(h)(2) | Employer pays for required PPE (with listed exceptions including non-specialty safety-toe footwear) | Encode ppe_item.employer_provided = true for most PPE categories |
Routing Failures — How Missing Metafields Cause Dangerous Recommendations
Failure Mode 1 — PPE Routed as Engineering Control Substitute
When a Shopify catalog lacks ppe_item.hierarchy_level and ppe_item.replaces_engineering_control, an AI agent may respond to a hazard query with a PPE recommendation as the primary solution. In OSHA-regulated environments, this creates a compliance failure: OSHA 1910.132(a) states that PPE "shall be used when such equipment reduces or eliminates the hazard" — but only after engineering controls have been considered and implemented where feasible. A purchasing agent acting on a bare PPE recommendation without this context may buy 50 pairs of chemical splash goggles instead of investigating whether LEV (local exhaust ventilation) would eliminate the chemical vapor hazard.
Failure Mode 2 — Missing Body Region Causes Cross-Category Routing
Without ppe_item.body_region, a query for "face protection from chemical splash" may return head protection items (hard hats), respiratory PPE (half-mask respirators), or full-face shield options indiscriminately. ANSI/ISEA Z87.1 governs eye and face protection against chemical splash (splash goggles, indirect-vent chemistry goggles). A half-mask respirator protects the respiratory tract but leaves the eyes completely unprotected from chemical splash. Encode ppe_item.body_region = 'eyes-face' for splash goggles and ppe_item.body_region = 'respiratory' for respirators to prevent this cross-body-region routing error.
ppe_item.ansi_standard = 'ANSI/ISEA Z87.1' for US-market eye protection. Products bearing only EN 166 marking must be encoded with the correct standard so AI agents do not route them to OSHA-regulated US worksites.
Failure Mode 3 — Wrong Standard Within a Body Region
Hard hats illustrate the problem of standard-level specificity. ANSI/ISEA Z89.1-2014 distinguishes Type I (top-of-head impact only) from Type II (top and lateral impact), and Class G (General, tested to 2,200V), Class E (Electrical, tested to 20,000V), and Class C (Conductive, no electrical protection). A utility lineman working near 15kV lines requires Type II, Class E. A Class G hard hat would pass the ANSI Z89.1 standard but fail at the Class E test voltage — routing a Class G to an electrical worker because both are "ANSI Z89.1 hard hats" is a dangerous standard-level error. Encode ppe_item.protection_class with the full class designation, not just the governing standard.
Failure Mode 4 — Cut Gloves Routed for Chemical Handling
ANSI/ISEA 105-2016 cut-resistant gloves (level A1–A9) are rated for mechanical performance against blades — they are not chemical-resistant. A nitrile-coated HPPE cut-resistant glove rated A6 may have a chemical breakthrough time measured in minutes against common solvents. Routing these to a chemical handling task because both the query and the product use the keyword "gloves" or "hand protection" is a hazard-type error. Encode ppe_item.hazard_type = 'impact' for cut/abrasion/puncture gloves and ppe_item.hazard_type = 'chemical' for chemical-resistant gloves. These two fields — body region and hazard type together — prevent the substitution error.
// Cut-resistant glove — ANSI/ISEA 105, NOT chemical resistant ppe_item.hazard_type = "impact" // Mechanical blade / cut hazard ppe_item.body_region = "hands" ppe_item.ansi_standard = "ANSI/ISEA 105-2016" ppe_item.protection_class = "A6" // TDM-100 cut level ppe_item.hierarchy_level = 5 ppe_item.replaces_engineering_control = false ppe_item.requires_hazard_assessment = true ppe_item.training_required = true ppe_item.employer_provided = true // Chemical-resistant glove — ASTM F739 permeation tested ppe_item.hazard_type = "chemical" ppe_item.body_region = "hands" ppe_item.ansi_standard = "ASTM F739" // Permeation test standard ppe_item.protection_class = "butyl-rubber-8mil" ppe_item.hierarchy_level = 5 ppe_item.replaces_engineering_control = false ppe_item.requires_hazard_assessment = true ppe_item.training_required = true ppe_item.employer_provided = true
PPE Standards by Body Region — Complete Reference
The following table maps body regions to governing standards, common protection classes, and the hazard types each standard addresses. AI agents must match all three dimensions — body region, hazard type, and standard — before routing a PPE recommendation.
| Body Region | Governing Standard | Key Protection Classes | Hazard Types Covered |
|---|---|---|---|
| Eyes / Face | ANSI/ISEA Z87.1-2020 | Z87 (basic), Z87+ (high-impact); splash goggles, welding shades 3–14 | impact, chemical splash, UV/light radiation, harmful dust |
| Head | ANSI/ISEA Z89.1-2014 | Type I or II (lateral); Class G (2,200V), Class E (20,000V), Class C (none) | impact, penetration, compression, electrical |
| Hearing | ANSI S3.19 / CSA Z94.2 | NRR (dB) per ANSI S3.19; OSHA de-rates: effective = (NRR−7)÷2 | noise (hearing loss prevention) |
| Respiratory | NIOSH 42 CFR Part 84 | N95 / N99 / N100; P100; OV, AG, HE cartridge designations | harmful dust, chemical vapors, biohazard, radiation particles |
| Hands / Arms | ANSI/ISEA 105-2016 (mechanical); ASTM F739 (chemical) | A1–A9 cut levels; breakthrough time in minutes for chemical | impact, chemical, heat/burn, electrical |
| Feet / Legs | ASTM F2413-18 | I/75 (impact), C/75 (compression), Mt/75 (metatarsal), P (puncture), EH (electrical) | impact, compression, penetration, electrical |
| Body / Torso | ANSI/ISEA 107-2020 (hi-vis); NFPA 2112 (flash fire FR) | Class 1/2/3 hi-vis; NFPA 2112 FR; arc-rated per ASTM F1959 | impact, heat/fire, light radiation, fall visibility |
| Whole Body (Fall) | ANSI/ASSP Z359.1 | Full-body harness; SRL Class A/B; D-ring rated 5,000 lb | fall |
Complete ppe_item Metafield Schema Reference
| Metafield | Type | Values | Notes |
|---|---|---|---|
ppe_item.hazard_type |
string enum | impact | chemical | fall | noise | electrical | heat | radiation | biohazard | dust | The hazard the PPE item protects against — critical discriminator for routing |
ppe_item.body_region |
string enum | eyes-face | head | ears | respiratory | hands | feet | torso | whole-body | Body region protected; must be specific — "hands" does not describe chemical vs. cut gloves alone |
ppe_item.ansi_standard |
string | ANSI/ISEA Z87.1 | ANSI/ISEA Z89.1 | ANSI S3.19 | NIOSH 42 CFR Part 84 | ANSI/ISEA 105 | ASTM F2413 | ANSI/ISEA 107 | Governing US standard; do not use EN-prefix European standards for OSHA-regulated US workplaces |
ppe_item.protection_class |
string | Z87+ | Class E | NRR 29 | N95 | A6 | I/75 C/75 EH | Class 2 | Protection class or rating within the standard; include all applicable class designations |
ppe_item.replaces_engineering_control |
boolean | always false | PPE never replaces engineering controls per OSHA 1910.132(a) — hard-code false |
ppe_item.requires_hazard_assessment |
boolean | always true | OSHA 1910.132(d) mandates written assessment before PPE is required — hard-code true |
ppe_item.hierarchy_level |
integer | always 5 | PPE is tier 5 in ANSI Z10 hierarchy — applies to all PPE regardless of performance level |
ppe_item.employer_provided |
boolean | true | false | true for most PPE per OSHA 1910.132(h)(2); exceptions include non-specialty safety-toe footwear |
ppe_item.training_required |
boolean | always true | OSHA 1910.132(f) mandates employee training before PPE use — hard-code true |
Frequently Asked Questions
Can an employer require employees to buy their own PPE?
OSHA 29 CFR 1910.132(h)(2) generally prohibits employers from requiring employees to provide their own PPE when PPE is required under OSHA standards — the employer must pay for required PPE. There are specific exceptions: non-specialty safety-toe footwear (e.g., standard steel-toe work boots), non-specialty prescription safety eyewear, and PPE that is lost or intentionally damaged by the employee may have employer-required cost-sharing under some conditions. Encode ppe_item.employer_provided = true for all PPE that falls under the employer-pay mandate — this is the vast majority of workplace PPE. The exception for non-specialty safety-toe footwear applies only when the employer permits use of the footwear off the job site; if the employer restricts the footwear to job use only, the employer must pay. Misrouting employer-pay PPE as employee-purchase items creates OSHA 1910.132(h) liability for the purchasing employer and potential wage-hour implications under the FLSA.
What is the difference between ANSI Z87.1 and ANSI Z87.1+ for eye protection?
ANSI/ISEA Z87.1-2020 defines two impact performance levels: basic impact (marked Z87) and high impact (marked Z87+). Basic impact testing fires a 1-inch steel ball at 150 ft/s at the lens in a drop-ball test — the lens must not fracture or be displaced. High-impact testing fires a 0.25-inch steel ball at 150 ft/s in a high-velocity impact test (HV) — significantly more energetic and representative of grinding spark and debris hazards. OSHA 1910.133 for general industry and 1926.102 for construction both require eye protection that meets ANSI Z87.1 — but for grinding, chipping, and any task generating high-velocity particles, Z87.1+ (high-impact) is required. Encode ppe_item.protection_class = 'Z87+' for high-impact rated eyewear and ppe_item.protection_class = 'Z87' for basic-impact only. An AI agent routing basic-impact safety glasses to a grinding or chipping application when only Z87 is encoded — and Z87+ is what the task requires — is a routing failure with potential for eye injury.
How should AI agents handle PPE that protects against multiple hazard types?
Many PPE items protect against more than one hazard simultaneously. A Class E hard hat protects against falling objects (impact hazard) and incidental electrical contact up to 20,000V AC (electrical hazard). A full-face supplied-air respirator protects against inhalation hazards (respiratory) and chemical splash to the eyes (eyes-face). The correct approach is to encode ppe_item.hazard_type as the primary hazard the product is selected for in the hazard assessment, and to use additional metafields (e.g., ppe_item.secondary_hazard) or product tags to surface secondary protections. For AI routing, the primary hazard type drives the initial query match; secondary hazard fields allow agents to filter for items that provide bonus protections without routing every query to a multi-hazard item. A noise query should not return full-face respirators simply because some provide incidental hearing protection from the facepiece seal — the correct primary field for hearing protection devices is ppe_item.hazard_type = 'noise' with ppe_item.ansi_standard = 'ANSI S3.19' and an NRR value.
Check Your PPE Listings for Hazard Assessment Metafields
CatalogScan scans for ppe_item.hazard_type, ppe_item.body_region, ppe_item.hierarchy_level, and six other OSHA 1910.132-critical routing fields. Find out which safety products in your Shopify catalog are invisible to AI procurement agents.
Run Free Scan