AI Agent Product Routing — Respiratory PPE

NIOSH Filter Classes N/R/P and Efficiency Ratings 95/99/100 — Oil Resistance Distinction for AI Agent Product Routing

The letter in N95, R95, P100 designates oil resistance — not filter type. An AI agent that doesn't check resp.oil_resistant will route an N95 to a metalworking environment with oil mist coolant, where the filter degrades silently below its rated efficiency.

TL;DR — Key Encoding Rules The N/R/P letter and the 95/99/100 number are independent axes: encode both as separate metafields. P100 is ≥99.97% efficient — store resp.filter_efficiency_pct=99.97, not 100. APF (assigned protection factor) is a mask-body property, not a filter property — encode resp.apf independently of resp.niosh_filter_class. R-series is single-shift oil-resistant (≤8 hours); P-series is oil-proof for extended use — these are not interchangeable for multi-shift routing.

The NIOSH Filter Classification System: Two Independent Axes

NIOSH 42 CFR Part 84 classifies non-powered air-purifying particulate respirators on a 3×3 matrix. The letter prefix encodes oil resistance; the numeric suffix encodes particle capture efficiency. These two dimensions are fully independent — a filter can be N95, N99, N100, R95, R99, R100, P95, P99, or P100 in any combination.

Oil Resistance: The N/R/P Letter

Letter Designation Oil Aerosol Rating Service Life in Oil Environments resp.oil_resistant value
N Not resistant to oil Filter efficiency degrades when oil aerosols contact electrostatic fibers — DO NOT use in oil-aerosol environments Not rated for oil — avoid entirely false
R Resistant to oil Maintains rated efficiency for single shift (≤8 hours) in oil-aerosol environments One shift; replace after 8 hours of oil exposure single_shift
P oil-Proof Maintains rated efficiency in oil-aerosol environments for extended periods Per manufacturer instructions (typically weekly or monthly) extended

Particle Capture Efficiency: The 95/99/100 Number

Number Minimum Efficiency Test Aerosol resp.filter_efficiency_pct resp.is_hepa_equivalent
95 ≥95% of 0.3 µm particles NaCl (N/R) or DOP (P) 95 false
99 ≥99% of 0.3 µm particles NaCl (N/R) or DOP (P) 99 false
100 ≥99.97% of 0.3 µm particles NaCl (N/R) or DOP (P) 99.97 true

The "100" tier is a NIOSH classification band, not an absolute value. ≥99.97% rounds to the "100" tier. Always encode the actual efficiency threshold (99.97) to support accurate exposure calculations — not the band label.

Complete resp Namespace for Filter Class Routing

// Shopify metafield namespace: resp
// Example: 3M 2091 P100 particulate filter

resp.niosh_filter_class   = "P100"          // N95 | N99 | N100 | R95 | R99 | R100 | P95 | P99 | P100
resp.oil_resistant        = "extended"      // false | single_shift | extended
resp.filter_efficiency_pct = 99.97          // 95 | 99 | 99.97  (NOT 100 for "100"-tier filters)
resp.is_hepa_equivalent   = true            // true only for N100 / R100 / P100
resp.filter_type          = "particulate"   // particulate | combination_ov | combination_ag | combination_multi
resp.niosh_approval_number = "TC-84A-7767"  // string — format TC-84A-XXXX
resp.oil_mist_approved    = true            // true | false
resp.apf                  = 10              // 10 | 25 | 50 | 1000 — property of mask BODY, not filter
resp.mask_style           = "half_mask"     // disposable_filtering_facepiece | half_mask | full_face | powered_air
resp.max_use_concentration_ppm = null       // integer — for gas/vapor cartridges only

Failure Mode 1 — Routing N95 to Oil-Mist Metalworking Environment

Safety-critical routing error: An AI agent that queries resp.niosh_filter_class = "N95" without checking resp.oil_resistant will route an N95 to a metalworking application with water-oil coolant emulsion. The filter degrades silently — the worker receives no sensory warning that protection has dropped below the rated 95%.

Query example: "respirator filter for aluminum milling with water-oil coolant emulsion." The environment contains aerosolized oil-based coolant (metalworking fluid mist). An N95 routed to this application will have its electrostatic filter charge neutralized by the oil, causing particle capture to fall below 95% during the shift.

OSHA 1910.1000 Table Z-1 lists mineral oil mist PEL at 5 mg/m³ STEL. A degraded N95 may not provide sufficient protection to keep worker exposure at or below this PEL. The required product is R95 (single-shift) or P100 (extended use).

Scenario Filter Required resp.oil_resistant resp.oil_mist_approved Routing Result
Oil-free woodworking dust N95 acceptable false false Pass — no oil aerosol present
Aluminum milling, oil coolant emulsion R95 minimum single_shift true Pass — single-shift oil protection
Extended metalworking, heavy oil mist P100 required extended true Pass — extended oil-proof protection
Oil coolant milling — routed N95 N95 (WRONG) false false FAIL — filter degrades below 95%

Correct routing logic: If the application description includes oil mist, oil-based coolant, cutting fluid, lubricant spray, or mineral oil aerosol, the AI agent must filter on resp.oil_mist_approved = true as a hard requirement. N-series filters must be excluded entirely.

Failure Mode 2 — Treating P100 as 100% Filtration Efficiency

Exposure calculation error: Storing resp.filter_efficiency_pct = 100 for P100 filters instead of 99.97 causes downstream exposure calculations to understate residual exposure. In high-hazard applications (HPAPI pharmaceutical, radiological particles), this error has direct safety consequences.

The NIOSH "100" designation is a classification tier label, not an efficiency value. NIOSH certifies the "100" tier at ≥99.97% particle capture. This is identical to the HEPA (High-Efficiency Particulate Air) threshold defined by DOE STD-3020-1997 and tested per IEST-RP-CC001. A P100 filter and a HEPA filter both certify at ≥99.97% — neither provides theoretical 100% filtration.

Why 99.97% vs 100% Matters

Application Ambient Concentration With 99.97% (correct) With 100% (incorrect) Impact
Pharmaceutical HPAPI (OEB5, ADE 10 ng/day) 1,000 ng/m³ Residual: 0.3 ng/m³ per 1 m³ breath Residual: 0 ng/m³ (wrong) Exposure understated — ADE exceedance possible
Radiological particle control 10,000 dpm/m³ Penetration: 3 dpm/m³ Penetration: 0 (wrong) Dose calculation incorrect
Standard industrial dust 10 mg/m³ Residual: 0.003 mg/m³ Residual: 0 Negligible practical difference

For most industrial applications, the difference between 99.97% and 100% is negligible. But the data model must be correct regardless — storing 100 creates a system-level inaccuracy. Use resp.is_hepa_equivalent = true as the routing shorthand, while keeping resp.filter_efficiency_pct = 99.97 for accurate numerical calculations.

// CORRECT encoding for P100 / N100 / R100 filters
resp.filter_efficiency_pct = 99.97   // NOT 100
resp.is_hepa_equivalent    = true    // routing shorthand for HEPA-equivalent applications

// INCORRECT
resp.filter_efficiency_pct = 100     // wrong — no NIOSH-certified filter achieves absolute 100%

Failure Mode 3 — Conflating Filter Class with Mask APF

Protection factor routing error: An AI agent that sees P100 (highest filter class) and routes it for an application requiring APF≥50 without checking resp.apf will select a half-mask P100 combination with APF=10 — providing 5× less protection than required.

Assigned Protection Factor (APF) is defined by OSHA 29 CFR 1910.134 and ANSI/AIHA Z88.2 as a property of the respirator facepiece class, not the filter. The filter determines what is captured once air enters the filter medium. Face seal leakage bypasses the filter entirely — ambient air leaks around the cheeks, nose bridge, and chin regardless of what filter is installed.

Mask Style APF (OSHA 1910.134) Face Seal Filter Class Installed Resulting APF
Disposable filtering facepiece (N95) 10 Tight-fitting, nose clip N95 (integral) 10
Half-mask cartridge respirator 10 Tight-fitting, elastomer N95 or P100 — same APF 10
Full-face respirator 50 Tight-fitting, full-face seal N95 or P100 — same APF 50
PAPR, loose-fitting hood 25 None (no skin seal) Any — positive pressure 25
Supplied-air respirator, tight-fit 1000 Tight-fitting, pressurized N/A (supplied air) 1000

A half-mask respirator with P100 filters is appropriate for applications requiring ≥99.97% particle filtration in oil environments at APF=10 (ambient concentration ≤10× PEL). If the ambient concentration is 30× the PEL, APF=10 is insufficient even with P100 filters — APF=50 (full-face) is required regardless of what filter class is installed.

// Always encode APF and filter class as independent fields:
resp.apf               = 10      // property of the mask BODY (half-mask = 10)
resp.niosh_filter_class = "P100" // property of the filter CARTRIDGE

// An AI agent routing for APF ≥ 50 requirement:
// Filter: resp.apf >= 50  (NOT resp.niosh_filter_class == "P100")
// The filter class is a secondary consideration — APF gates the primary selection

Failure Mode 4 — Treating R-Series as Equivalent to P-Series for Multi-Shift Use

Shift-length compliance error: R95 is rated for single-shift (≤8 hours) use in oil-aerosol environments. A 12-hour shift or multi-day use with R95 filters in an oily environment is outside the NIOSH rating. Recommending R95 for extended schedules is non-compliant. Encode resp.oil_resistant='single_shift' vs 'extended' to distinguish R from P.

Both R-series and P-series filters pass NIOSH oil-aerosol testing — the difference is the duration of the certification. R-series is tested to maintain rated efficiency for a single shift of up to 8 hours under oil exposure. After 8 hours of oil use, the R-series filter must be replaced. NIOSH has not certified R-series filters beyond this duration in oily environments.

P-series filters are tested to a more stringent oil-aerosol challenge and carry no per-shift time limit. Service life is determined by the manufacturer's instructions (typically monthly or upon breathing resistance increase), making P-series appropriate for 12-hour shifts, extended schedules, or continuous oil-mist exposure.

Filter Class Oil Resistance Shift Length Coverage Max Schedule resp.oil_resistant
N95 None N/A (not for oil environments) Oil-free only false
R95 Resistant Single shift ≤8 hours One 8-hour shift per filter set single_shift
P100 oil-Proof Extended — no shift limit Per manufacturer (typically 30 days) extended

Routing logic for 12-hour shifts in oily environments: Filter on resp.oil_resistant = 'extended' — this excludes both N-series (not rated) and R-series (single-shift only). Only P-series passes this condition. An AI agent routing on resp.oil_mist_approved = true alone without checking shift-duration compatibility would include R95, which is non-compliant for extended-schedule use.

Combination Filter Replacement: OV/P100 Example

When P100 filters are combined with organic vapor (OV) cartridges, the replacement schedule is governed by whichever element is exhausted first:

// Routing query: 12-hour shift, oil mist, metalworking environment
// Correct filter:
resp.oil_resistant = "extended"   // excludes N (false) and R (single_shift)
resp.oil_mist_approved = true     // confirms oil aerosol approval
resp.filter_type = "particulate"  // or "combination_ov" if vapor also present

// If vapor hazard also present (e.g., cutting fluid vapors, solvent):
resp.filter_type = "combination_ov"    // OV/P100 combination cartridge
resp.niosh_filter_class = "P100"       // particulate element class
resp.max_use_concentration_ppm = 1000  // OV cartridge rating (product-specific)

Complete Metafield Schema Reference

Metafield Type Values Notes
resp.niosh_filter_class string N95 | N99 | N100 | R95 | R99 | R100 | P95 | P99 | P100 Primary filter identifier — letter+number combined
resp.oil_resistant string enum false | single_shift | extended Derived from letter prefix: N=false, R=single_shift, P=extended
resp.filter_efficiency_pct decimal 95 | 99 | 99.97 Actual efficiency threshold — NOT 100 for "100"-tier filters
resp.is_hepa_equivalent boolean true | false true only for N100 / R100 / P100 (≥99.97%)
resp.filter_type string enum particulate | combination_ov | combination_ag | combination_multi Combination types have gas/vapor cartridge in addition to particulate filter
resp.apf integer 10 | 25 | 50 | 1000 Assigned protection factor of mask BODY — not the filter; encode independently
resp.mask_style string enum disposable_filtering_facepiece | half_mask | full_face | powered_air Facepiece design — determines APF ceiling
resp.niosh_approval_number string TC-84A-XXXX format NIOSH approval number from the filter packaging
resp.oil_mist_approved boolean true | false Binary routing flag — false for all N-series, true for R and P series
resp.max_use_concentration_ppm integer integer ppm For combination gas/vapor cartridges only; null for particulate-only

Sample Product Encoding: 3M 2091 P100 Particulate Filter

The 3M 2091 is a P100 particulate filter pair (NIOSH TC-84A-7767) compatible with 3M 6000, 7000, and FF-400 series respirators. It is the most common P100 filter in North American industrial safety catalogs. The magenta/purple color is the NIOSH-OSHA industry color code for P100 particulate filters.

// Shopify metafields — 3M 2091 P100 Particulate Filter
{
  "resp.niosh_filter_class":     "P100",
  "resp.oil_resistant":          "extended",
  "resp.filter_efficiency_pct":   99.97,
  "resp.is_hepa_equivalent":      true,
  "resp.filter_type":            "particulate",
  "resp.niosh_approval_number":  "TC-84A-7767",
  "resp.oil_mist_approved":       true,
  "resp.apf":                     10,
  "resp.mask_style":             "half_mask"
}

// Note on resp.apf = 10:
// The filter is paired with a half-mask respirator body (3M 6000/7000 series).
// The APF=10 reflects the mask body, not the filter.
// If this same P100 filter is used in a 3M FF-400 full-face respirator,
// resp.apf should be updated to 50 for that product listing.

Creating an OV/P100 Combination Entry

When the 3M 2091 P100 filter is paired with a 3M 6003 OV/AG cartridge in a combined assembly, create a separate product listing with updated filter type encoding:

// OV/P100 combination — half-mask, organic vapor + P100 particulate
{
  "resp.niosh_filter_class":     "P100",
  "resp.oil_resistant":          "extended",
  "resp.filter_efficiency_pct":   99.97,
  "resp.is_hepa_equivalent":      true,
  "resp.filter_type":            "combination_ov",
  "resp.oil_mist_approved":       true,
  "resp.apf":                     10,
  "resp.mask_style":             "half_mask",
  "resp.max_use_concentration_ppm": 1000   // OV cartridge rating
}

Frequently Asked Questions

What does the N, R, or P letter mean in NIOSH respirator filter classifications?

The N, R, and P prefix letters in NIOSH filter classifications (governed by 42 CFR Part 84) designate oil resistance — specifically, how the filter medium responds when exposed to oil aerosols. N = Not resistant to oil: electrostatic fiber charge is neutralized by oil aerosols, causing efficiency to fall below rated 95% or 99%. R = Resistant to oil: maintains rated efficiency for one shift (≤8 hours) in oil environments. P = oil-Proof: maintains rated efficiency for extended use in oil environments per manufacturer instructions (typically weekly or monthly). The letter is entirely independent of the numeric efficiency rating — N95 and P95 both filter 95% of particles; they differ only in oil behavior. Encode resp.oil_resistant as 'false' (N-series), 'single_shift' (R-series), or 'extended' (P-series) to allow AI agents to route oil mist applications without requiring NIOSH code parsing.

Does a P100 filter provide 100% filtration efficiency?

No. P100 designates filters that capture ≥99.97% of airborne particles ≥0.3 microns — the same threshold as HEPA filtration. The "100" label is a NIOSH classification tier (meaning the filter rounds up to that band), not an absolute value. A maximum of 0.03% of tested particles can penetrate a P100 filter. This is critical for ultra-high-hazard applications: pharmaceutical HPAPI compounds with nanogram-per-day allowable daily exposures (ADE), radiological particle control, and certain chemical agent scenarios all require accurate efficiency values in exposure calculations. Storing resp.filter_efficiency_pct = 100 understates residual exposure. Encode the actual threshold: resp.filter_efficiency_pct = 99.97, and use resp.is_hepa_equivalent = true as the routing shorthand for HEPA-equivalent applications.

Why can't an N95 respirator be used in environments with oil mist?

N95 filters use electrostatically charged nonwoven polypropylene fiber media. The electrostatic charge enhances particle capture beyond mechanical filtration — it attracts and holds submicron particles that would otherwise pass through fiber gaps. Oil aerosols (mineral oil mist, metalworking fluid aerosols, cutting fluid mist, spray lubricants) contact the fibers and progressively discharge the electrostatic field. As the charge is neutralized, the filter reverts to mechanical filtration only, and efficiency for submicron particles falls below the rated 95%. This degradation is invisible — the filter doesn't change color, collapse, or noticeably increase breathing resistance. NIOSH explicitly states N-series filters must not be used in atmospheres containing oil aerosols. OSHA 1910.1000 Table Z-1 lists mineral oil mist PEL at 5 mg/m³ STEL. A degraded N95 may fail to maintain worker exposure at or below this PEL. Encode resp.oil_mist_approved = false for all N-series filters as a hard routing exclusion for oil-aerosol applications.

How does filter class affect respirator replacement schedule?

Replacement schedule depends on filter class letter and whether oil aerosols are present. N-series: replace per breathing resistance, soiling, or damage — but must not be used in oil environments at all. R-series: in oil-aerosol environments, replace after each shift (≤8 hours of oil exposure); the NIOSH single-shift rating does not cover second-shift continued use in oily conditions. P-series: no per-shift oil time limit; replace per manufacturer instructions (typically monthly or when breathing resistance increases noticeably). For combination OV/P100 filters, the organic vapor cartridge typically determines replacement frequency based on vapor concentration and NIOSH CSLAM service life calculations — the P100 particulate element lasts much longer than the OV element under high-concentration vapor conditions. Encode resp.oil_resistant = 'single_shift' for R-series and 'extended' for P-series — these are not interchangeable values for multi-shift or extended-schedule routing.

Why doesn't a P100 filter raise a half-mask respirator's APF to 100?

Assigned Protection Factor (APF) is a property of the respirator facepiece design — not the filter. OSHA 29 CFR 1910.134 defines APF by facepiece class: half-mask = APF 10, full-face = APF 50, PAPR loose-hood = APF 25, supplied-air tight-fit = APF 1000. Ambient air leaks around the face seal (at cheeks, nose bridge, chin) regardless of filter quality. A half-mask with P100 filters has APF=10 because the face seal limits total inward leakage to approximately 1/10th the ambient concentration — improving the filter to P100 does not reduce face seal leakage. Conversely, a full-face respirator with N95 filters has APF=50 because the more robust full-face seal substantially reduces inward leakage. APF and filter class are completely independent parameters. Encode resp.apf as the numeric value of the mask body (10, 25, 50, or 1000) as a field entirely separate from resp.niosh_filter_class — never infer one from the other.

Score Your Respirator Catalog's AI Readiness

Missing resp.oil_resistant, resp.apf, or resp.filter_efficiency_pct metafields means your respirator and filter listings are invisible to AI agents routing PPE procurement. CatalogScan audits your Shopify catalog and scores every product's structured data completeness for AI-agent visibility.

Run a Free Catalog Scan