These are hard rules, not suggestions. Every spoken line and every screen the app produces has to pass them. When in doubt, say less. The claim rules are enforced by scripts/guardrail-lint.ts in CI.
A product becomes a regulated drug the moment its stated use is to diagnose, treat, cure, mitigate, or prevent a disease, or to affect the structure or function of the body. Acne is a disease and its active ingredients are OTC drugs, so "treats acne" is a drug claim. The safe path is to make no efficacy claim at all and describe only appearance and the product's own labeled function. The FTC separately requires strong scientific substantiation for any health claim, including implied claims and testimonials. Condition monitoring over time is a device claim; Aloud never frames a re-scan as tracking a condition.
| Safe (cosmetic) | Unsafe (drug / treatment) |
|---|---|
| "helps with the look of shine" / "oil-free finish" | "treats oily skin" / "controls sebum" |
| "for the appearance of blemish-prone skin" | "clears acne" / "treats breakouts" |
| "described as hydrating / for the look of dryness" | "repairs the skin barrier" / "cures dryness" |
| "helps skin look more even" | "corrects hyperpigmentation" / "treats melasma" |
| "reduces the look of fine lines" | "reverses aging" / "stimulates collagen" |
| "listed as niacinamide, a skin-conditioning ingredient" | "niacinamide treats your rosacea" |
| "for the look of redness" | "reduces inflammation" / "treats rosacea" |
| Safe (observation) | Unsafe (diagnosis) |
|---|---|
| "your skin looks like it has some redness in the cheek area" | "you have rosacea" |
| "the analysis shows a higher oiliness score in the T-zone" | "you have seborrheic dermatitis" |
| "there appear to be some blemishes along the jaw" | "you have acne" |
| "the analysis flags some dark spots" | "you have melasma" |
Recommending a dermatologist is protective ONLY when it is generic and not tied to a named condition. Safe: "if you are concerned about a specific skin condition, a dermatologist can help." Unsafe: "you have acne, see a dermatologist," because the first clause is a diagnosis.
Say what the label lists, not what is safe for the person. Safe: "this product does not list any EU-flagged fragrance allergens." Unsafe: "this is safe for your allergy." Flag "contains a listed fragrance allergen" by matching ingredient names against the EU list (about 80 substances under Regulation 2023/1545). Absence of a labeled allergen is not proof of a fragrance-free formula.
Never claim a percentage accuracy, "unbiased," or "works for every skin tone." Published dermatology literature shows lighting-driven under-detection concentrates on deeper skin tones; Aloud discloses reduced reliability honestly ("the light is low, readings are less reliable") instead of claiming universality.
Blind users overtrust confident AI descriptions and cannot catch a wrong one. Required mitigations:
- Ground every skin statement in the structured Skin Analysis scores. Never send the face image to a general vision model to freely describe it.
- Use negative-framed uncertainty: state the chance of error, not just the answer.
- Refuse low-confidence claims. Below threshold, say "I cannot tell reliably."
- Always offer a human-assist escape hatch.
- Communicate input quality ("the photo was too dark, let us retake"), never blame the user.
- Express confidence in plain language, never raw percentages.
- Audio and haptic first. Every core flow operable without seeing the screen.
- Correct semantics: ARIA live regions for status, managed focus, keyboard operable, labelled controls.
- Test with an actual screen reader (VoiceOver, TalkBack) on a real device, and with a real blind or low-vision user when possible.
- Responsive, visible focus, reduced motion respected.
- Never tie a face image or skin data to a name or email. No biometric profiles.
- No identity inference: race, ethnicity, health conditions, age beyond the API's own neutral skin_age.
- Nothing persisted server-side. Session state only; optional scan history stays in localStorage.
- Do not train anything on YouCam outputs; the API terms forbid it.
- Secrets never reach the browser. Consent screen before any capture.
Only load-bearing, primary-sourced numbers in judge-facing or user-facing material; the canonical list lives in docs/FACTS.md. Never use untraceable figures.