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.
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
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
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
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
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:
- P100 particulate filter element: Replace per manufacturer schedule (often 30 days) or when breathing resistance increases
- OV cartridge element: Replace per NIOSH CSLAM (Chemical Substance in Air Limit Assessment Model) calculation based on vapor concentration, temperature, humidity, and use time — or when odor breakthrough is detected
- In practice, the OV cartridge typically dictates replacement frequency in high-concentration vapor environments
// 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