About the Project
The Inspiration
Skincare shopping can be overwhelming. People often know they have concerns like pores, acne, wrinkles, or uneven texture, but it is difficult to understand what products actually fit their needs. We wanted to create a more personalized experience where a simple selfie could become the starting point for a complete skincare journey.
That idea led us to build SkinCart AI — an AI-powered skincare experience that connects skin analysis, personalized product discovery, daily routines, and visual simulation in one flow.
What We Built
The experience starts with a selfie. SkinCart AI uses YouCam Skin AI to analyze supported skin concerns and converts those results into an easy-to-understand skin profile.
From there, the detected concerns drive our deterministic recommendation engine. We map concerns to relevant skincare ingredients and products and provide an explanation for why each product was selected.
The experience then generates a personalized AM and PM skincare routine, followed by AI Skin Simulation, allowing users to visualize a selected skin concern before and after the simulation.
The complete journey is:
Upload Selfie → AI Skin Analysis → Personalized Products → AM/PM Routine → AI Skin Simulation
How We Built It
We built SkinCart AI as a full-stack application:
- Frontend: React, TypeScript, Vite, Tailwind CSS
- Backend: Java 21, Spring Boot
- Database: PostgreSQL with Flyway
- AI: YouCam Skin Analysis and AI Skin Simulation APIs
- Architecture: Provider-based integration with separate mock and real YouCam implementations
- Recommendations: Deterministic, explainable rules rather than an opaque AI/LLM recommendation layer
The YouCam integration runs securely through the backend, keeping API credentials away from the frontend. The skin analysis workflow handles asynchronous tasks and polling, while the application converts provider responses into internal models used by the recommendation and routine engines.
What We Learned
One of the biggest lessons was that building an AI-powered product is not only about calling an AI API. The real challenge is turning AI output into a useful product experience.
We learned how to:
- Integrate asynchronous AI APIs into a production-style backend.
- Design a clean provider abstraction for real and mock implementations.
- Build explainable recommendations from AI-generated skin insights.
- Handle image upload requirements and real-world API constraints.
- Create a complete user journey instead of treating AI as an isolated feature.
- Design the experience so the user can understand why a product was recommended.
Challenges We Faced
The biggest challenges were around real-world image processing and asynchronous AI integration.
During testing, some selfies failed because the face occupied too little of the image. We adjusted the capture guidance and learned how important input quality is when working with computer-vision APIs.
We also had to handle asynchronous YouCam tasks, provider errors, polling timeouts, image URLs, and the difference between a technically successful AI response and a visually meaningful result.
Another challenge was making recommendations useful without introducing an unnecessary opaque AI layer. We chose a deterministic recommendation engine so that every recommendation could be explained and reproduced from the detected skin concerns.
Why SkinCart AI
SkinCart AI is designed to make skincare shopping more personal and easier to understand.
Instead of simply showing a catalog of products, it connects AI skin analysis → personalized recommendations → daily routine → visual simulation into one experience.
Our goal was to demonstrate how AI can be integrated into a practical consumer workflow where the technology is useful, understandable, and directly connected to the user's next action.
Built With
- docker
- flyway
- java-21
- jpa
- maven
- postgresql
- react
- render
- rest-api
- spring-boot
- tailwind-css
- typescript
- vite
- youcam-ai-skin-simulation-api
- youcam-skin-analysis-api
Log in or sign up for Devpost to join the conversation.