Every shade,
measured — not guessed.

One in four beauty orders comes back because the shade was wrong on arrival. ExactHue Core replaces the filtered guesswork of virtual try-on with measured colour science — real lighting models, CIE-referenced maths, and a shade library built across Fitzpatrick types I–VI.

No filters. No smoothing. No skin-tone flattening — ever.

I II III IV V VI
CIE L*a*b* & CAM16-UCS Pantone SkinTone™ calibration targets Spectral reflectance modelling Fitzpatrick I–VI coverage D65 · D50 · A · F2 · F7 · F11 50,000+ skin samples

The returns problem

A quarter of beauty orders never stay sold.

Foundation, concealer, tinted serum, lip. The category that depends most on colour is the one where customers can least judge it before buying. A swatch photographed under studio lights, rendered on a screen that was never profiled, viewed in a bathroom at night — three transformations stand between the product and the decision, and none of them are colour-managed.

So the customer orders two shades to keep one. Or orders one, gets it wrong, and returns it. The brand absorbs reverse logistics, a repackaging loss, a restocking cost, and — worst of all — a customer who now believes the range does not have their colour.

Return rates cited are category averages reported across beauty e-commerce; your own baseline is measured during onboarding before any claim is made about improvement.

01 — COST

Returns are margin, not noise

A returned shade rarely resells at full price. Between shipping both ways, inspection, repackaging and markdown, a single mismatched foundation can erase the contribution of several successful orders.

02 — CONFIDENCE

Uncertainty suppresses the first order

Shoppers who cannot trust a shade preview either buy nothing or buy defensively. Both outcomes distort demand signals and make range planning guesswork.

03 — WASTE

Bad data ruins good inventory

When returns cluster in shades that were mis-previewed rather than mis-made, buying teams read it as weak demand and under-produce the deeper end of the range. The gap then compounds season over season.

Why measurement wins

Colour is a physical quantity. Treat it like one.

Everything below is a measurement target that ExactHue Core is engineered and benchmarked against.

ΔE < 1.0Median perceptual difference between recommendation and in-hand product on our internal benchmark set
50,000+Calibrated skin samples spanning Fitzpatrick types I through VI
6Standard illuminants modelled — D65, D50 and A, plus the F2, F7 and F11 fluorescents common on retail floors
1 in 4Beauty orders returned industry-wide for shade mismatch — the number we exist to move

ΔE figures refer to CIEDE2000 (ΔE00) computed against spectrophotometer readings of the physical product. A ΔE00 of roughly 1.0 is the threshold at which a trained observer begins to perceive a difference under controlled viewing conditions.

First principles

Everything happens between 380 and 740 nanometres.

Colour is not a property an object carries around. It is what happens when light of particular wavelengths meets a surface, some is absorbed, the rest comes back, and an eye interprets the result. Skin has a reflectance curve across that narrow band — a signature describing how much of each wavelength it returns.

That curve belongs to the person. It does not change when they walk from a window to a kitchen bulb. What changes is the light being multiplied by it, and therefore what the camera records. Pixel-based matching compares those recordings and quietly assumes the light was the same on both sides, which is almost never true.

Recover the curve and the lighting cancels out. That is the whole premise, and everything else on this page is engineering in service of it.

The colour science in full →

Below 380 nm is ultraviolet and above 740 nm is infrared. Neither is visible, and both are partially recorded by a camera sensor — one more reason a raw pixel value is not a measurement.

ExactHue Core

Four stages, one honest answer.

The engine runs the same pipeline whether it is called from a product page, an in-store tablet, or your merchandising team's batch tooling.

Characterise the capture

Before any skin is analysed, the engine solves for the conditions the image was taken in. It estimates the illuminant's correlated colour temperature, detects mixed lighting, measures exposure headroom, and flags clipping in the channels that matter most for melanin-rich tones. Captures that cannot support an honest answer are rejected with a specific reason rather than answered badly — a refusal to guess is a feature, not a failure.

Recover true skin reflectance

Camera pixels are device-dependent and non-linear. ExactHue Core inverts the capture chain — de-gamma, sensor response, white balance, illuminant — to recover an estimate of the skin's own spectral reflectance: what the skin actually is, independent of the room it was photographed in. Undertone, saturation and depth are separated at this stage, which is why a warm-undertone and a neutral-undertone customer at identical depth receive different recommendations.

Match in a perceptually uniform space

Matching happens in CAM16-UCS, where equal numerical distances correspond to roughly equal perceived differences. Your catalogue is ingested as measured colour, not as marketing swatches, so the comparison is product-to-skin rather than image-to-image. The result is a ranked set with a stated confidence and an explicit ΔE, not a single opaque verdict.

Render without lying

Try-on rendering re-applies the product's measured colour under the customer's actual lighting — including how it will look in daylight and under warm indoor light. No skin smoothing, no brightening, no beautification. If a shade will oxidise slightly warmer or read ashy on a given undertone, the preview shows that, because the alternative is a sale that returns.

Side by side

Pixel matching and measured colour are not the same trade.

Both put a shade on a screen. Only one of them can tell you how wrong it might be.

  Conventional virtual try-on ExactHue Core
What it comparesYour camera's pixels against a studio photograph's pixelsRecovered skin reflectance against measured product colour
LightingAssumed neutral, and silently wrong everywhere elseEstimated per capture, six illuminants modelled as spectra
What it reportsA shade name, with no stated errorA shade, a ΔE00 and a calibrated confidence
When the capture is poorAnswers anyway. It has no way of knowing it should notDeclines with a reason code, and does not bill for it
Deep skin tonesDegrades hardest, where training data is thinnestReported per Fitzpatrick band; a regression blocks the release
RenderingSmoothing and brightening applied to flatterTexture preserved, no beautification at any stage
AuditabilityTake the result on faithCheck it against a spectrophotometer
Catalogue inputMarketing swatch imagesSpectrophotometer readings of the physical product

See the difference

Change the light. Watch a pixel matcher fall apart.

Same person, same foundation, three lighting conditions. Switch between them and compare what ExactHue Core recommends against what a conventional pixel-matching try-on picks.

Choose a lighting condition to compare shade-matching results

ExactHue Core Recovers true reflectance first, so the light cancels out
ΔE00
Conventional pixel matching
ΔE00

Swatches are illustrative renderings of a single mid-depth neutral undertone under modelled standard illuminants; they are not a substitute for a measurement of your own range. Below roughly ΔE00 1.0 a difference is imperceptible to a trained observer; above 3.0 most people see it immediately.

Coverage, not tokenism

Built across the full range from the first commit.

Shade-matching systems fail unevenly. Accuracy that looks acceptable in aggregate frequently collapses at the deep end of the range, where fewer training samples, harsher sensor noise and channel clipping all compound. That failure is the reason so many customers stopped trusting virtual try-on in the first place.

ExactHue's sample library is balanced by construction across Fitzpatrick types I–VI and across undertone families within each type. We report accuracy per band, never as a single headline average, and we treat a per-band regression as a release blocker.

Read about the shade library

Fitzpatrick classification is used as a coverage taxonomy for research sampling. It is a descriptive research tool, not a medical assessment, and ExactHue makes no dermatological or health claim.

The economics

What a returned foundation actually costs.

Finance teams tend to book a return as lost revenue and move on. The real number is larger, and its shape is what makes the case for fixing shade accuracy rather than absorbing it.

Take a foundation retailing at $42 with a landed cost of $9. On a clean sale the contribution is comfortable. On a return the money leaves in five directions, and only the first is the one people picture.

  • Outbound fulfilmentAlready spent before anything went wrong. Picking, packing, the parcel itself.18%
  • Return shippingUsually free to the customer, which means it is not free at all.22%
  • Inspection and handlingSomeone opens it, checks the seal and decides whether it can be sold again. Labour, not software.20%
  • Repackaging or write-offCosmetics are hygiene-sensitive. A returned unit with a broken seal is destroyed, not restocked.26%
  • Markdown on resaleWhatever survives inspection rarely goes back at full price.14%
Typical erosion on one mismatched complexion return 30–45% of unit revenue

Illustrative ranges, drawn from published beauty e-commerce benchmarks and the cost structures brands describe to us. Your own figures will differ — establishing them is the first thing a pilot does, before anyone claims an improvement.

The cost nobody models

Everything above is measurable. The expensive part is not.

A customer who receives the wrong shade rarely concludes that the preview was inaccurate. They conclude that the brand does not carry their colour. That belief is durable, it is held disproportionately by customers at the deeper end of the range, and it appears nowhere in a returns report — it appears as an order that never happens.

Recovering a mismatch return saves a margin. Preventing one keeps a customer.

Why this is the category worth attacking

Returns split roughly three ways. Damage in transit is a logistics problem. Change of mind is a fact of retail and largely irreducible. Mismatch is neither — it is an information problem, and information problems have answers.

It is also the category most often misfiled. Shoppers pick whichever reason closes the form fastest, so mismatch hides inside “not as described” and “changed my mind”. Nearly every brand we speak to is under-counting it, which is why the baseline analysis tends to surprise the team that commissioned it.

In practice

One endpoint, a visible decision, and the honesty to stop.

What your engineering team integrates, what the engine reports back, and what happens when it cannot answer well.

Integrate

Drop it in, keep your stack

Plain JSON in, ranked matches out. Render them with our embeddable widget or your own components — there is no framework requirement and no replatforming.

Decide

See why, not just what

Every response carries the reasoning behind it. Your team can show a shopper what to change, and your analysts can tell a lighting problem apart from a catalogue problem.

Decline

Refuse rather than guess

A confident wrong shade costs a return and a customer. When the frame cannot support a reliable answer the engine says so, names the reason, and asks for a better one.

What makes it different

Not a colour picker. Not an AI filter.

Two approaches dominate the market today. Both fail for the same underlying reason: they never model the physics of the light in the room.

Real lighting models

Standard illuminants are simulated end to end, so a recommendation made under a kitchen bulb still holds at a window. Most systems assume neutral daylight and quietly break everywhere else.

Standards-referenced maths

CIE colorimetry and Pantone-calibrated targets give every match a number you can audit. Where a competitor says “great match,” we say ΔE00 0.7, and you can check it against a spectrophotometer.

A library, not a scrape

Over 50,000 calibrated skin samples collected under controlled conditions across all six Fitzpatrick types — balanced by design rather than by whatever happened to be abundant online.

Honest rendering

No beautification, no smoothing, no lightening. The preview is the product on the skin, which is the only preview that survives contact with the parcel.

Drops into your stack

A REST endpoint and a lightweight embeddable widget for Shopify, Salesforce Commerce Cloud, commercetools and bespoke storefronts. No replatforming, no rebuild of your PDP.

Evidence you can act on

Per-shade confidence, per-band accuracy and mismatch clustering feed straight into buying decisions — so range planning stops being a hunch about the deep end of your line.

What brands get

Fewer returns. Steadier inventory. A range customers believe in.

ExactHue Core is sold to beauty brands and retailers, not to consumers. The measure of success is commercial, and it is measured against your own pre-integration baseline.

Returns reduction

Shade-mismatch returns are isolated from fit, damage and change-of-mind returns, then tracked against a measured baseline so the effect is attributable rather than assumed.

Conversion confidence

Shoppers who see an accurate, unfiltered preview commit to one shade instead of hedging across two — which lifts contribution margin even before returns move.

Sustainable inventory

Accurate demand signals per shade mean less overproduction at the middle of the range and less stock-out at the ends. Fewer parcels in the air is both a cost line and a carbon line.

Integration

One endpoint. Roughly an afternoon.

Send a capture and a catalogue reference; receive a ranked set of matches with explicit confidence and ΔE values. Render it with our drop-in widget or with your own components — the engine does not care which, and the response is plain JSON.

  • REST API with idempotent requests and versioned responses
  • Embeddable widget with a server-rendered fallback for non-JavaScript clients
  • Catalogue ingestion from spectrophotometer readings, Pantone references or physical samples we measure for you
  • Region-pinned processing for EU, UK, US and APAC data residency
API overview
POST /v1/match
{
  "capture": { "image": "<base64>",
               "device": "web-cam" },
  "catalogue": "aw26-foundation",
  "illuminant": "auto"
}

// 200 OK
{
  "quality": { "usable": true,
                "cct_k": 4120 },
  "matches": [
    { "sku": "FDN-240N",
      "delta_e00": 0.68,
      "confidence": 0.94,
      "undertone": "neutral" },
    { "sku": "FDN-245W",
      "delta_e00": 1.41,
      "confidence": 0.81,
      "undertone": "warm" }
  ]
}

Where it runs

Processing stays where you put it.

Enterprise customers pin the engine to a region, and a pinned request does not leave it while it is being handled. The region is part of the API host, so residency shows up in your own network logs rather than being something you take on trust.

EU

Default for European brands. Data stays inside the EEA for the whole request.

UK

Kept separate from the EU region, for teams that need it that way.

US

For North American storefronts, and the lowest latency for that traffic.

APAC

Serving Asia-Pacific, and where our own laboratory measurements originate.

Captures are processed and deleted whichever region you choose. Residency controls where that processing happens, not whether anything is kept — by default nothing is. See the privacy policy and your data rights.

Quick answers

The five things people ask first.

Do you need a special camera?

No. An ordinary phone or laptop camera is exactly what the engine is designed around — that is both the difficulty and the point. What it needs is enough light and a single light source, and it checks for both before it answers rather than after.

How long before we see a number?

The baseline analysis lands in week one, and it tends to be the moment the room goes quiet — most brands have never seen their returns classified by shade and tonal band. A read-out against a held-out control follows the 90-day pilot.

What happens to our customers' photos?

Processed to produce the match, then deleted. Not retained for training unless you explicitly opt in under a separate written agreement. No facial recognition, no face templates, and no inference about anyone's age, health or ethnicity. The privacy policy is specific about all of it.

We already have a try-on vendor. Does this replace them?

Not necessarily. Plenty of brands keep an existing try-on for lip and eye, where the demands are different, and use ExactHue Core for complexion, where accuracy decides whether the parcel comes back. Run them alongside each other and let the return numbers settle it.

You are pre-seed. What if you disappear?

Your measured catalogue is exportable in an open format whenever you want it, including the day you leave, so the most valuable thing the engagement produces is portable. The integration is a single endpoint, so pulling it out costs about what putting it in did. Judge us on the method and the read-out.

Every question, including the awkward ones →

From the founder

“The beauty industry solved pigment chemistry decades ago. What it never solved was the last thirty centimetres — between a screen and a face, in a room nobody profiled. That gap is not a design problem or a marketing problem. It is a measurement problem, and measurement problems have answers.”

Get started

Bring your catalogue. We will show you the numbers.

A pilot starts with your own return data and a measured sample of your range. If ExactHue Core can't beat your current baseline on your own products, you'll hear it from us first.

Pre-seed company, founded 2025. Registered office and colour-science laboratory in Singapore.