Inspiration

Beauty tools can turn a photo into a score or a suggested look without showing how that result should inform a personal decision. We wanted to make the process more transparent: start with the products you already own, understand your options, inspect the available evidence, and decide for yourself what to try.

What it does

Skinwise brings together a makeup planner and a skin journal. In the planner, you can enter your products and time limits, explore combinations that fit, and choose a plan without uploading a photo. If you want a visual preview, you can optionally use YouCam, compare available looks, make an explicit choice, and save it for later.

In the journal, you can view YouCam’s returned images beside the original photo and record what you noticed, including uncertainty. Optional camera guidance offers framing and capture hints. Those hints are advisory, not a measure of cosmetic accuracy.

How we built it

We built Skinwise with React, TypeScript, and Vinext on Cloudflare Workers. A local constraint solver finds combinations based on the products and limits a user enters. Optional YouCam requests go through server-side routes so the API key is not exposed in the browser.

Saved looks use versioned browser storage and exclude portraits and provider receipts. The camera flow supports capture and retaking, while lightweight on-device checks provide optional framing and image-signal guidance.

Challenges we faced

One challenge was keeping the planner and skin journal honest about what each can tell a user. A virtual makeup preview is different from a skin analysis, and neither guarantees a physical result or establishes a diagnosis.

We also worked through receipt recovery, production navigation, image preparation, and camera lifecycle handling. Testing camera behavior without physical devices required us to distinguish simulated browser checks from real-device validation.

For the demo, we needed to show the broader product story—including lipstick-only and full-look previews—and synchronize the narration with the actions on screen.

What we learned

A score needs context. Showing the original image beside the provider’s output helps people inspect the evidence rather than treating a number as a verdict. Users also need to see costs and limitations before deciding whether to request a preview.

We learned to describe capture guidance according to what it actually checks. Framing and basic image signals can suggest a retake, but they do not prove an image is suitable for every purpose or that a model will be accurate.

Accomplishments we're proud of

Skinwise makes useful planning available before a user uploads a photo or spends API units. Users can explore feasible combinations, understand constraint conflicts, and choose a plan without being pushed toward a preview.

We’re proud that Skinwise keeps user choice visible throughout: compare options, choose a look explicitly, save it for later, or keep the original. The journal also makes room for uncertainty instead of forcing a confident interpretation.

What's next for Skinwise

We want to validate the camera flow on physical iOS and Android devices, evaluate the framing guidance across more capture conditions, and learn whether the planner and journal help people make useful, repeatable choices.

We’ll keep documenting provider behavior, costs, and limitations. Skinwise does not diagnose conditions, prove product effectiveness, or guarantee real-world shade, comfort, or wear.

repo link: https://github.com/10toothhtoot01/skinwise

Built With

Share this project:

Updates

Submission history