ExactHue Core
The engine, explained without hand-waving.
ExactHue Core is a shade-matching engine built on colour physics rather than image aesthetics. This page describes what it actually does, what it deliberately refuses to do, and how it connects to your storefront.
The premise
A photograph is not a measurement.
Every consumer camera is an opinionated instrument. It applies automatic white balance, a tone curve, noise reduction, sharpening and a colour-rendering profile tuned for pleasing photographs — not for accuracy. Two phones pointed at the same face in the same room will produce different pixel values, and neither set of values describes the skin.
Layer a screen on top of that. Most displays are uncalibrated, many are actively warm-shifted by night modes, and the browser may or may not honour the embedded colour profile. By the time a swatch reaches the customer's eye, the chain has introduced several transformations that nobody accounted for.
Conventional virtual try-on ignores all of this and matches pixels to pixels. It works acceptably in a well-lit studio and degrades sharply everywhere else — most sharply at the deep end of the tonal range, where sensor noise and channel clipping do the most damage. ExactHue Core takes the opposite approach: model the chain, invert it, and match on the physical quantity underneath.
What the engine refuses to do
- No smoothing. Texture is signal. Removing it removes the evidence that a match is working.
- No brightening. Lifting exposure to make a preview flattering shifts the very quantity being measured.
- No skin-tone flattening. Undertone is not noise to be normalised away; it is the primary axis of a good match.
- No confident answer from a bad capture. If the lighting cannot support a reliable result, the engine says so and explains what to change.
At a glance
Three moves, and a number you can check.
The full pipeline runs six stages, but it is easiest to understand as three: measure the light, recover the skin, return a shade with its error attached.
Measure the light first
Before any skin is analysed the engine solves for the room: colour temperature, mixed sources, exposure headroom, clipping. A capture that cannot support an honest answer is declined with a reason rather than answered badly.
Recover the skin, not the photo
The capture chain is inverted — gamma, sensor response, white balance — and the skin's own reflectance curve is estimated, constrained to shapes real skin can actually produce. The result describes the person, not the room.
Return the error, not just the answer
Matching happens in a perceptually uniform space, and every result carries an explicit ΔE00 and a calibrated confidence. That is the difference between a recommendation you can audit and one you have to take on faith.
The pipeline
From pixels to a defensible recommendation.
Six stages. Each one produces an intermediate you can inspect, which is what makes the final number auditable rather than merely confident-sounding.
Capture qualification
The frame is assessed before anything else happens: exposure headroom, per-channel clipping, motion blur, colour-cast severity, and whether more than one illuminant is present. Mixed lighting — a window on one side and a warm bulb on the other — is the single most common cause of bad matches in the wild, and it is detected explicitly rather than averaged over. Captures that fail qualification return a structured reason code so your interface can ask for a better one.
Illuminant estimation
The engine solves for the scene's correlated colour temperature and its distance from the Planckian locus, classifying it against modelled standard illuminants: D65 noon daylight, D50 horizon daylight, Illuminant A incandescent, and the F2, F7 and F11 fluorescents typical of retail floors. This is what allows a match made under a 2700 K bulb to remain valid at a north-facing window.
Capture-chain inversion
Device gamma is removed, the sensor's spectral response is compensated using the device profile, and the camera's automatic white balance is unwound. What remains is an estimate of the light leaving the skin, rather than the camera's interpretation of it.
Spectral reflectance recovery
From that linearised signal, the engine estimates the skin's spectral reflectance curve — constrained by a physically-plausible skin model parameterised on melanin and haemoglobin concentration. Constraining the solution to curves that real skin can actually produce is what keeps the estimate stable on noisy consumer captures. The output is device-independent: it describes the skin, not the photograph.
Perceptual matching
Skin and catalogue are compared in CAM16-UCS, a perceptually uniform appearance space in which equal numerical distances correspond to approximately equal perceived differences. Depth, undertone and saturation are weighted separately, because a customer forgives a half-step depth error far more readily than an undertone error. Results carry an explicit ΔE00 and a calibrated confidence.
Faithful rendering
For try-on, the matched product's measured colour is composited back onto the capture under the estimated illuminant, preserving the skin's own texture and specular behaviour. The customer can toggle between modelled lighting conditions to see the shade in daylight and in warm indoor light before deciding.
Colour science
The standards we build against.
None of this is proprietary magic. It is published colorimetry, applied carefully and benchmarked honestly.
CIE 1931 & CIE L*a*b*
The foundation of modern colorimetry. Tristimulus values under a defined observer and illuminant give a device-independent description of colour that has been the industry reference for close to a century.
CIEDE2000 (ΔE00)
The difference metric we report. It corrects the known non-uniformities of earlier formulae, particularly in the blue and neutral regions, and correlates far better with what observers actually perceive.
CAM16-UCS
A colour-appearance model that accounts for the viewing environment — surround, adaptation, background luminance. Matching happens here because it is where perceptual distance behaves most predictably.
Pantone-calibrated targets
Physical calibration targets, including SkinTone references, anchor the pipeline to measurable ground truth. Every sampling session is validated against them before its data enters the library.
Standard illuminants
All six — D65, D50, Illuminant A, F2, F7 and F11 — are modelled as spectral power distributions rather than as colour-temperature shortcuts, which is why fluorescent retail lighting does not break the match.
Melanin–haemoglobin modelling
Skin colour is dominated by two absorbers. Parameterising on them keeps reflectance estimates within the space real skin occupies, which is what makes the method robust on ordinary phone cameras.
The shade library
50,000+ samples, balanced by design.
A shade-matching system inherits the biases of the data it learned from. Libraries assembled from whatever imagery was abundant tend to be dense at the light end of the range and thin at the deep end — which is precisely where accuracy matters most and where existing products fail hardest.
ExactHue's library is built to a sampling plan rather than to convenience. Coverage targets are set per Fitzpatrick type and per undertone family within each type, and a session that would skew the distribution is rejected rather than merged.
- Controlled capture. Every sample is taken under known illumination with a physical calibration target in frame.
- Spectrophotometer ground truth. Contact readings accompany image captures, so the library contains measurements rather than inferences.
- Undertone stratification. Warm, neutral, olive and cool families are sampled within each depth band, not treated as a post-hoc label.
- Consent-first collection. Contributors are informed, compensated and free to withdraw; withdrawal removes the sample from training and from the library.
The library is used to build and validate the engine. It is not sold, licensed or shared, and it is not used to identify anyone. See the privacy policy for how contributor data is handled.
Accuracy is reported per band
A single headline average hides exactly the failure mode that matters. Every internal benchmark and every customer-facing report breaks ΔE00 down by Fitzpatrick band and by undertone family, and a regression in any single band blocks a release.
API overview
Three endpoints do the work.
Authentication is a bearer token scoped to an environment. Requests are idempotent, responses are versioned, and the contract will not change under you without a deprecation window.
| Endpoint | Purpose | Returns |
|---|---|---|
POST /v1/match |
Match a capture against a catalogue | Ranked matches with ΔE00, confidence, undertone classification, and a capture-quality report |
POST /v1/render |
Composite a matched shade onto the capture | Rendered previews under one or more modelled illuminants, texture preserved |
PUT /v1/catalogue |
Ingest or update measured product colour | Per-SKU ingestion status with validation warnings for out-of-gamut or unmeasured entries |
Full API reference — auth, reason codes, rate limits and versioning →
Full API reference — auth, reason codes, rate limits and versioning →
Server-rendered fallback. The embeddable widget degrades to a server-rendered shade grid when JavaScript is unavailable, so product pages remain complete and indexable. That is the same principle this website is built on — every page you are reading is static HTML.
Integration
It meets your stack where it is.
ExactHue Core is designed to sit alongside an existing commerce platform, not to replace any part of it.
Shopify
App-embed block for the product page, with catalogue sync from variant metafields.
Salesforce Commerce Cloud
Cartridge with SFRA controller hooks and an ISML include for the shade selector.
commercetools
API extension that enriches product projections with measured colour at publish time.
Custom storefronts
Direct REST integration with an optional web component. No framework requirement.
Catalogue onboarding
Send spectrophotometer readings if you have them, Pantone references if you do not, or ship physical samples to our laboratory in Singapore and we will measure the range for you. Most brands are fully ingested within two weeks.
Data residency
Processing can be pinned to EU, UK, US or APAC regions. Captures are processed for the request and are not retained for model training unless a customer explicitly opts in under a separate written agreement.
Want the technical detail behind the claims?
We will walk your engineering and product teams through the benchmark methodology, the per-band results, and the failure cases we have not solved yet.