RuleisRequest access

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.

Sending opens your email client with this request prefilled so you can review it before it goes out. Ruleis is pre-launch, this reaches a person directly, not a queue.