Deterministic SDS auditing
A supplier's SDS declares the hazard. Ruleis checks the math behind it.
Ruleis re-derives GHS hazard classifications straight from a supplier's own Section 3 data. Any mismatch with what they declared is flagged, citing EU CLP and US OSHA HCS 2024.
Flagged: declared H315, upper-bound data requires H314
Composition data at its worst-case boundary crosses the skin corrosion cutoff the supplier did not disclose.
Skin Corr. 1, CLP Annex I 3.2.3.3
ATE additivity: mixture oral ATE = 847 mg/kg
No reclassification required. Additivity formula run across every disclosed ingredient at its upper bound.
OSHA HCS 2024 Appendix A.1
pH override: measured pH 1.4
Defaults to Skin Corr. 1 / Eye Dam. 1 absent empirical override data on file for this mixture.
CLP Annex I 3.2.2.4
Every result cites its rule and rule version
EU CLP
Regulation (EC) No 1272/2008
US OSHA HCS 2024
29 CFR 1910.1200
GHS
UN GHS, Rev. 7
The problem
A declared hazard classification is only as good as the cross-check behind it.
A Safety Data Sheet declares a hazard classification in Section 2. Confirming it against the Section 3 composition data means re-running toxicity, corrosion, and cutoff math by hand, so most distributors do not do it consistently.
Ruleis runs that cross-check on every document, every time, and shows its work.
Discrepancy detected
- Supplier declared
- H315, Skin Irrit. 2
- Ruleis computed
- H314, Skin Corr. 1
- Basis
- Worst-case boundary, CLP Annex I 3.2.3.3
Under-disclosure: the declared classification is less severe than the composition data supports at its upper bound.
How it works
Three steps, one of them is code that never guesses.
Step 1
Upload the SDS, Ruleis extracts what matters
Ruleis parses Section 2, 3, and 11: declared hazards, composition ranges, toxicology data. Language models help only here, structuring OCR text and translating non-English layouts. They never decide a hazard classification.
Extracted from Section 3
- Sodium hydroxide
- 10-30%
- CAS 1310-73-2
- min_conc 10, max_conc 30
- Ethoxylated alcohol
- 1-5%
Step 2
Deterministic code runs the hazard math
Every concentration range is evaluated at its worst-case upper bound. Acute toxicity additivity, corrosion, eye-damage, and aquatic cutoffs run as plain arithmetic against versioned rule tables, the same result for the same input every time. An LLM can misstate a threshold with total confidence, which is disqualifying for a legal compliance decision.
ATE additivity, oral route
- Mixture ATE (mg/kg)
- 847
- Cutoff for Category 4
- 2000
- Result
- No reclassification
Step 3
Every discrepancy is flagged and cited
The computed classification is checked against the supplier's declared H-codes. Any mismatch, over-disclosure or under-disclosure, is flagged with the citation and rule version behind it. Re-running the same document against the same rule version returns the existing result, not a fresh guess.
Discrepancy record
- Endpoint
- eye_damage
- Severity
- Under-disclosed
- Citation
- CLP Annex I 3.3.3.3
Who it's for
Built for the people who sign off on hazard classifications.
EHS directors
Need a documented, repeatable cross-check on incoming SDS documents, not a one-off manual review that does not scale past a handful of suppliers.
Regulatory affairs managers
Own the answer when an auditor asks why a classification was accepted. Every Ruleis result carries the citation and rule version that produced it.
Compliance officers at distributors and formulators
Currently do this cross-check by hand against a spreadsheet of cutoffs, or do not do it at all because the volume of incoming SDS documents makes it impractical.
Request access
Ruleis is pre-launch. Talk to us before you sign up for anything.
There is no self-serve signup yet. Tell us about your supplier volume and the jurisdictions you need covered, and we will follow up directly.
Pricing is subscription-based for ongoing SDS auditing, or usage-based for high-volume integrations. Exact terms are set per engagement, ask in the form.