Reva/The science

Hazard isn't risk.

Hazard is what a molecule could do at some dose. Risk is what it does at the dose your skin actually meets. Every scanner scores the first. Reva scores the second.

dose over hazard

The dose makes the poison.

Paracelsus settled this in 1538: the dose makes the poison. A molecule that harms at full strength is harmless at a trace, and a scanner that ignores how much is in the bottle is scoring theatre. So Reva measures every ingredient against a Margin of Safety - the dose known to cause no harm, divided by the dose your skin actually absorbs. Clear a hundred-fold margin and it clears. We picked a hundred because the SCCS did, and because we would rather be accused of being dull than of being clever with somebody's skin.

# margin of safety MoS = NOAEL / SED # clear the bar, it clears MoS ≥ 100cleared # 100 is the standard safety factor 10× interspecies # animal → human 10× intraspecies # person → person
SCCSCIRNOAEL ÷ SED

A margin of 100 is not a number we invented. It is the same green light the EU's SCCS and the US CIR use to clear a substance: a 10× factor for the leap from animal data to humans, times a 10× factor for the gap between one person and the next. Below the line an ingredient gets a dose gate, not a skull. The Australian exposure model behind these sums assumes 673 mg/kg/day of product on the skin, applied at 140 mL/day.

Two sunscreen filters, one method, opposite outcomes:

Oxybenzonerestricted
NOAEL67.9 mg/kg
Skin absorption9.9%
MoS at 6% whole-body55
Held to2.2% body / 6% face
SourceSCCS/1622/20
Avobenzonecleared
NOAEL450 mg/kg
Skin absorption< 0.59%
Margin of safetywell over 100
Readoutclear at use levels
fig. a · this is water. Enough of it will kill you, and that is not an argument against water. Twelve seconds of pouring, and the line is still not close.

six readings

Every metric, and where it stops.

A score is only as honest as the weakest method behind it. So each reading ships with the limit written next to it, not buried.

Safety score / 10

Margin of Safety weighted by concentration, with the first five ingredients counted double as a weak proxy for how much is really there. Bands: safe at 8 and up, low-risk 6 to 7.9, moderate 4 to 5.9, high-risk 2 to 3.9, hazardous under 2. More than three high-risk ingredients deducts 2; a single hazardous one caps the whole score at 2.

Allergens

The EU fragrance-allergen list, widened from 24 to 80 entries under Regulation 2023/1545, declared once past 0.001% in a leave-on or 0.01% in a rinse-off. We flag it "for you", never "toxic".

Comedogenicity / 5

The 1984 Fulton rabbit-ear scale, tested at close to 100%. So we discount it below roughly 1% and label it the weakest signal we carry.

Pregnancy & feeding

False the moment any of eight unsafe classes appears - retinoids, salicylic acid, hydroquinone, oxybenzone, phthalates, triclosan, toluene, formaldehyde releasers - and always false when coverage falls below a third.

Skin-type fit

Scored on the Baumann axes - oily or dry, sensitive or resistant, pigmented, wrinkle-prone - not one flat "good or bad".

Efficacy (GRADE)

Claims weighted by evidence tier - meta-analysis over RCT over cohort over in-vitro over anecdotal - and capped at 30 points per ingredient, so one strong study can't carry a whole formula.

Clean is not a metric.

The clean-beauty score starts at 100 and deducts by ingredient family - parabens -10, SLS/SLES -8, formaldehyde releasers -15, PEG -5, synthetic fragrance -5. It is a preference match, shown as a preference. It is never a hazard verdict, and we never dress it up as one.

honest uncertainty

No data is not the same as safe.

When coverage of a formula falls below a third, Reva returns no score. It holds any "good" match at neutral, and it never fakes a green. The gap is real: even among top-selling brands, a clinical audit found online ingredient lists routinely drop something that is on the physical bottle, and across independent sites the full list is often an image, a "key ingredients" teaser, or missing outright - the formats no scraper can read. Refusing to guess is the whole point. Every refusal will be written to a public ledger, with the confidence band that triggered it.

The score was computed. It was not published. Coverage 0.28 against a floor of 0.30.
Held readlow confidence
Coverage0.28
Floor0.30
Scoreheld
"Good" matchheld to neutral
Green fakednever
Loggedrefusal ledger · public

a living graph

Nothing here sits still.

Rules move, formulas change, and a score written once goes stale. Four agents will keep the graph honest between reviews.

Regulatory-diff watcher

Subscribes to the TGA, AICIS, the EU CosIng database, the CIR and the FDA. The TGA Poisons Standard updates about three times a year - February, June and October - and when a rule moves, the score moves with it, sourced and dated.

Reformulation sentinel

Diffs retailer INCI over time. If a formula quietly changes, your score changes with it, with a dated before and after so you can see exactly what moved.

Refusal ledger

Every "not enough data" is written down in public, with its confidence band. A gap is recorded as a gap, and the absence of a detected hazard is never read as proof a formula is safe.

Signed provenance

Each verdict will ship as a cryptographically signed card. It deep-links to the evidence behind it, and it cannot be re-skinned into a scarier verdict than the one we stand behind.

the audit

Strangers will mark our work.

The graph is benchmarked the way a clinical model is. A Golden Set of 1,500 ingredients and 500 products is blind-scored by a panel of three or more toxicologists. We run it as a Delphi: the median becomes the label. Agreement is measured with Gwet's AC2 against a floor of 0.80. We think Cohen's kappa is the wrong instrument here: it understates agreement on skewed data, and almost all of this data is skewed, and reported to the TRIPOD standard. No "% accurate" claim ships until the audit passes.

1,500 ingredients 500 products 3+ toxicologists, blind Delphi median = label gated at Gwet's AC2 ≥ 0.80 reported to TRIPOD
Golden Set auditnot yet run
Ingredients1,500
Products500
Panel3+ toxicologists, blind
MethodDelphi · median = label
AgreementGwet's AC2 ≥ 0.80
Not Cohen's kappaunderstates on skew
Reported toTRIPOD standard
Statusprotocol set, audit pending

Read a label, and check our working.

Every mark on this page carries a citation you can open. Read a real label the honest way, then read the receipts behind the maths.