Skip to content
sp.
All projects

Case study · 2025–present

Tinted

Computer vision that gets skin tone right across the full range, then recommends makeup that actually matches.

MediaPipeCLIPClaude HaikuFastAPINext.js
01

The problem

Most beauty tech gets skin tone wrong for anyone who isn't light-skinned, because camera white balance and lighting swamp the signal. Tinted corrects for that and classifies tone across the full Monk scale.

02

Decisions, and what they cost

Every architecture is a set of trade-offs. These are the ones I made, the alternatives I rejected, and why.

Classical CV preprocessing in LAB color space

vs. raw RGB into a model

Lighting is the dominant error source, and correcting it deterministically beats hoping a model learns invariance. LAB separates lightness from color so classification works on the right axes.

Monk Skin Tone scale

vs. the older Fitzpatrick scale

Monk was built for inclusive tech, with real coverage of deeper skin tones. That's the exact failure mode this project exists to avoid.

CLIP shade matching + LLM recommendations

vs. a hand-built rules engine

CLIP matches visual similarity without labeling thousands of products. A rules engine is more auditable but scales poorly across brands.

03

Evidence it works

  • 45-test suite across preprocessing and classification.

  • Full product: FastAPI backend, Next.js frontend, live camera via MediaPipe.

04

What I'd do differently

I'd add a labeled eval set of diverse faces with per-tone accuracy reporting, the same eval discipline I applied to the research agent.