Identity Preservation Engine · Commerce layer
The product changes. The shopper doesn’t.
A try-on layer any store can plug in between recommendation and checkout. Makeup, lashes and hair colour are painted only inside the product’s own area, then checked for region, skin tone and identity before the shopper sees the result. Hairstyles run on our hair engine behind the same identity and skin-tone gates. Built for deep skin tones first, and run here across all 10 shades in our swatch.
What happened to that preview
One pass through the pipeline
Every preview above went through these five steps. The numbers are measured on this preview, live, in your browser.
-
1 Map the face
68 facial landmarks and a cheek skin measurement in CIELAB. Model photos are mapped ahead of time; your photo is mapped on your device.
—
-
2 Mask the product
Lips, lids, lash line and cheek apples are cut from the landmarks. Everything outside them is locked.
—
-
3 Render inside the mask
The shade replaces colour while the skin’s own texture stays. Pigment is calibrated to skin depth so colour reads true on deep skin, not grey.
—
-
4 Validate
Three independent checks, each with a fixed threshold. A single failure withholds the result.
-
5 Deliver, flag or withhold
The store receives the outcome with the numbers, so a flagged or withheld preview is never shown as if it were fine.
—
Linen to Cocoa
The same look on all 10 shades
Model 1 in each shade of the StyleMyCrown swatch. Only her skin colour differs, so any change in fidelity would come from the engine, not the person.
| Shade | Skin L* | Pixels changed outside product | Skin tone ΔE outside product | Identity distance | Outcome |
|---|
Straight, wavy, curly and braided
Hairstyles on the hair engine
Catalog styles from bone straight and bobs to body waves, curls and braids. A hairstyle can’t be painted inside a mask: the hair is generated on our servers, then each result goes through the same checks a StyleMyCrown customer gets. Those checks are face distance against the original, skin-tone ΔE on the cheeks, and an evaluator face check, followed by alignment to the original framing. The model results below were made ahead of time, and the numbers are the ones recorded then. In the store they appear instantly: every hairstyle is made ahead on each model, and any hair colour can then be tried on it on the device. The store never waits on the engine.
For partners
Drop it into any storefront
The layer ships as one element. The store passes the product’s shade; the engine handles the face, the mask, the render and the checks, and reports the outcome back.
<script type="module"
src="/embed/smc-tryon.js"></script>
<smc-try-on layer="lip" shade="#b3132f"
finish="satin" label="Hibiscus Red"></smc-try-on>
<smc-try-on layer="hair" shade="#b4522a"
label="Burnt Sienna"></smc-try-on>
<smc-try-on hairstyle="box-braids"></smc-try-on>
<script>
document.addEventListener('smc:result', (e) => {
// { outcome, identityDistance, skinDeltaE,
// changedOutsideProduct, tone, subject, label }
analytics.track('try_on', e.detail);
});
</script>
- Any catalog. A product is a layer and a shade: lip, blush, shadow, liner, lashes or hair colour, with a hex colour and finish. No retraining per product.
- Any stack. Plain HTML element, no framework. Works on hosted platforms and headless storefronts.
- Private by design. Makeup, lashes and hair colour run on the shopper’s device. Photos are not uploaded for them.
- Honest outcomes. Every preview reports its checks. Flagged and withheld results are visible to the store.
- Hairstyles and wigs. Run on the StyleMyCrown hair engine (generative, on our servers) behind its gates: face distance, skin-tone ΔE and an evaluator face check. Made ahead on each model and shown instantly, with hair colour applied on the device. Running the engine live on a shopper’s own photo (1 to 3 minutes, photo sent to our servers) is available as an opt-in.