Deterministic SDS auditing
A supplier's SDS declares the hazard. Ruleis checks the math behind it.
Ruleis re-derives GHS hazard classifications from a supplier's own Section 3 data and flags any mismatch with what they declared, citing EU CLP and US OSHA HCS 2024. Every number shows its source.
Honest by construction
A missing input is never shown as a clean result.
Every endpoint ends in one of three states: classified, evaluated with no cut-off crossed, or cannot be determined. When an input is missing the answer is "cannot be determined" and the missing inputs are listed, never a quiet "no hazard".
- Classified
- Evaluated, no cut-off crossed
- Cannot be determined
One flag, traced
One flag, traced from the page to the rule.
A flag is only useful if you can see how it was reached. This one is traced through the calculation that produced it.
Illustrative example, not a real supplier document
Extracted from Section 3
Sodium hydroxide (CAS 1310-73-2), declared at 10-30 %
The composition range comes straight from the supplier's SDS, with the page it was read from.
Worst-case boundary
Evaluated at the upper bound: 30 %
A concentration range is run at the boundary that gives the most severe result, not the midpoint.
Limit from the Annex VI table
Sodium hydroxide: Skin Corr. 1A (H314) at C of 5.0 % or more
The same entry lists Skin Corr. 1B at 2.0 % to under 5.0 %, and Skin Irrit. 2 (H315) and Eye Irrit. 2 (H319) at 0.5 % to under 2.0 %. 30 % is above 5.0 %.
CLP Annex VI Table 3, entry 011-002-00-6, specific concentration limits
Flagged
Declared H315 under-declares the computed H314
Skin Irrit. 2 as declared is less severe than Skin Corr. 1A as computed.
CLP Article 10 / Annex VI Specific Concentration Limit
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
Classification data: EU CLP Annex VI (ATP23) and US OSHA HCS 2024. The GB mandatory classification list is not loaded.
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
Illustrative example, not a real supplier document
- Supplier declared
- H315, Skin Irrit. 2
- Ruleis computed
- H314, Skin Corr. 1A
- Basis
- Upper bound 30 %, limit C of 5.0 % or more (Annex VI entry 011-002-00-6)
Under-disclosure: the declared classification is less severe than the composition data supports at its upper bound.
How it works
Language models read the PDF. Code decides the hazard.
Step 1
Upload the supplier SDS
Ruleis reads Sections 2, 3, 9, 11 and 12 and records where on the page each value came from.
Step 2
Check every extracted value
Values that more than one reader agrees on pass. The rest go to a person, with the page and the exact text beside them.
Step 3
Recalculate from rule tables
Plain arithmetic and comparisons against versioned CLP and OSHA tables. No model decides a hazard, and each result cites its rule.
Step 4
Review, export, sign off
Discrepancies show the supplier declaration beside the computed result. The audit report records every correction. Sign-off stays with your CIH or Regulatory Officer.
See the steps in the product
Three steps, one of them is code that never guesses.
The panels use a hypothetical document. Every limit and ATE value is taken from the rule tables; the concentrations are the example's own.
In the product, step 1
Upload the SDS, Ruleis extracts what matters
Ruleis parses Sections 2, 3, 9, 11 and 12: declared hazards, composition ranges, pH, toxicology and ecotoxicity data. Language models help only here, structuring OCR text and translating non-English layouts. They never decide a hazard classification.
Extracted from Section 3 (illustrative)
- Sodium hydroxide
- 10-30 %
- CAS
- 1310-73-2
- Upper bound used
- 30 %
In the product, 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 cut-offs run as plain arithmetic against versioned rule tables, so the same input gives the same result every time. A language model can misstate a threshold with total confidence, which is disqualifying for a legal compliance decision.
ATE additivity, oral route (illustrative)
- Ingredient, harmonised ATE (Annex VI, formic acid)
- 500 mg/kg at 35 %
- Mixture ATE = 100 / (35 / 500)
- 1428.6 mg/kg
- Category 4 upper bound (GHS Table 3.1.1)
- 2000 mg/kg
- Result
- Category 4
In the product, step 3
Every discrepancy is flagged and cited
The computed classification is checked against the supplier's declared H-codes. A mismatch, whether over-disclosure or under-disclosure, is flagged with the citation and rule version behind it. The same inputs against the same rule tables give the same result.
Discrepancy record (illustrative)
- Endpoint
- skin_corrosion
- Declared, computed
- H315, H314
- Citation
- CLP Article 10 / Annex VI SCL
Sample audit report
What your auditor receives.
A PDF per document: the verdict, the composition, each endpoint in its three states, discrepancies with citations, field provenance, registry versions and hashes, and the audit timeline.
This sample was produced by the product from a fictional example document. The supplier and the product do not exist.
Download the sample report (PDF)Pricing
Planned ranges, not an offer.
Ruleis is pre-launch. These are the ranges on our roadmap; terms are set per engagement.
Phase 1
B2B SaaS
12,000 to 36,000 USD
annual contract value
Phase 2
Usage-based
1.50 to 5.00 USD
per document
Phase 3
Enterprise
50,000 to 150,000 USD and above
per year
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.
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.
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.
Role 1 of 3
FAQ
What people ask before they sign up. The mechanics, not the marketing.
Ruleis re-derives the GHS hazard classification straight from a supplier's own Section 3 composition data, using the same math a regulatory officer would run by hand. If the result doesn't match what the supplier declared, it's flagged, with the specific rule and citation behind it.
It runs the calculation at the upper bound of that range, the worst case. If more than one ingredient shares a hazard endpoint, their upper bounds get added together before checking against the cutoff. This is the same approach a cautious reviewer would take by hand, applied consistently every time.
No. Language models are used only to read messy supplier PDFs and translate non-English documents into structured data. The actual classification, the toxicity math, the corrosion cutoffs, the pH overrides, all of it, runs as plain deterministic code against versioned rule tables. The same input always produces the same result.
It's flagged with the specific citation and rule version that produced it, for example a supplier declaring H315 when the composition data at its upper bound actually requires H314. Nothing is flagged without showing exactly which rule and which calculation triggered it.
Not yet, Ruleis is pre-launch. There's no self-serve signup. Use the request access form below and tell us about your supplier volume and the jurisdictions you need covered, and we'll follow up directly.
Classification data: EU CLP Annex VI (ATP23) and US OSHA HCS 2024. The GB mandatory classification list is not loaded. Results are not produced for other jurisdictions.
No. Ruleis automates the calculation and cross-check, but final regulatory sign-off remains the legal responsibility of the user's competent person or Regulatory Officer, as the footer says.
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.
Planned pricing ranges are above. Exact terms are set per engagement, ask in the form.