DEMO DATA A synthetic six-week diary, so the analysis has something to work with. These are not real readings.

Method

How this works, and
what it cannot tell you

A tool that makes claims about your body owes you its working. This page is the whole method — the API calls, the arithmetic, and the limits that no amount of data will remove.

01

Where the numbers come from

Each capture runs the four-step Perfect Corp YouCam AI Skin Analysis pipeline. It is asynchronous — you submit a task and poll for the result, rather than getting scores back from one request.

  1. 1POST /s2s/v2.0/file
    Register the image and receive a file_id plus a presigned upload URL.
  2. 2PUT <presigned URL>
    Upload the bytes. Registering the file does not upload it — skipping this is the classic integration bug and fails later with an opaque 500.
  3. 3POST /s2s/v2.0/task/skin-analysis
    Start the task with the seven concerns and format: json. Returns a task_id.
  4. 4GET /s2s/v2.0/task/skin-analysis/{id}
    Poll with backoff until the status is success or error.

The photo is resized in your browser before upload and is never stored by Slept On. Scores are kept as YouCam’s raw_score, not ui_score — their documentation is explicit that ui_score is adjusted upward for “beauty psychology”, and a diary trying to detect a four-point change over six weeks needs the unmassaged number.

02

Which seven metrics, and why

YouCam exposes sixteen SD skin concerns. Slept On tracks seven. The other nine — wrinkles, firmness, age spots, eyelid droop, eye bags, tear trough, skin type — are structural. They do not meaningfully move in six weeks, so tracking them daily would add noise and cost units without adding information.

  • Acne Breakout severity and count across the face.
  • Redness Erythema — how flushed or irritated the skin reads.
  • Oiliness Sebum level, weighted toward the T-zone.
  • Moisture Apparent hydration of the stratum corneum.
  • Radiance Brightness and evenness of tone.
  • Texture Surface smoothness and roughness.
  • Dark circles Periorbital darkness under the eyes.

All seven are scored 1–100 where higher is better. A redness score of 90 means very little redness. Slept On phrases every sentence in terms of the score rather than the concern, so the direction never inverts on you.

03

The arithmetic

No model and no LLM touches the analysis. It is ordinary statistics, computed in the browser, and the same diary always produces the same findings.

Spearman's rank correlation
The default for numeric factors. Skin scores are noisy and occasionally spiky, and self-reported logs are coarse; rank correlation is robust to a single terrible day and catches relationships that are monotone without being linear.
Welch's t-test
For yes/no factors and for product change-points. Welch rather than Student because two groups in a real diary are never the same size or the same variance.
Lag search
Skin does not respond the same day. Every factor is tested against every metric at 0, 1, 2 days of lag, so “last night’s sleep” is matched to this morning’s face rather than to yesterday’s.
Benjamini-Hochberg correction
This is the one that matters. Seven factors × seven metrics × three lags is 147 hypotheses. At p < 0.05 roughly seven of them would look significant from pure noise — which is how a tool like this turns into a horoscope. Every p-value is corrected across the whole family actually tested, and the family size is printed on the insights page.
Partial correlation on photo brightness
Every surviving correlation is re-run holding your photo’s measured brightness constant. If the relationship collapses, Slept On says so — it was your lighting, not your skin.
Minimum sample size
Nothing is reported below 8 paired observations, however large the coefficient. A correlation over four points is noise, and presenting it with the same confidence as one over forty is the core dishonesty this product exists to avoid.

The statistical core has 93 unit tests (npm test), including the incomplete beta function and Student’s t checked against closed-form identities and an independently implemented reference. The demo diary is generated with known planted relationships, and the tests assert that the engine recovers them and finds nothing in the two factors deliberately given no effect at all.

04

What this cannot tell you

Correlation is not causation, and never becomes it

Slept On can tell you that your redness scores run higher after long sleeps. It cannot tell you that sleeping more will improve your skin. The nights you sleep well are probably also the nights you drank less, ate earlier and were less stressed — and no amount of self-tracking separates those without an experiment you would have to design deliberately.

The camera is a confound

Lighting, distance, lens, time of day and whether you just washed your face all move these scores, sometimes more than a genuinely good week does. Slept On measures your photo’s brightness and controls for it, which helps, but it cannot control for what it cannot see.

Small samples lie, and two weeks is a small sample

Fourteen readings is enough to notice something and nowhere near enough to be sure of it. Every claim carries its n for exactly this reason. Distrust the small ones — including when they agree with you.

Self-reported logs are approximate

You are estimating last night’s sleep from memory and rounding your water intake. That measurement error is real and it flattens genuine relationships, so a null result here is weaker evidence of absence than it looks.

It is not medical or dermatological advice

Slept On is a self-tracking tool. It does not diagnose anything, it is not a substitute for a dermatologist, and it should not be used to decide whether a skin condition needs treatment. If something on your skin worries you, see a doctor.

The scores are a vendor's model, not ground truth

These metrics are Perfect Corp’s estimates from a single photograph. They are not clinical instrument readings, they carry their own error, and a change of a point or two is well inside it.