Inspiration
1 in 4 people has a chronic visible skin condition. Conditions like rosacea, eczema, psoriasis, vitiligo, and severe acne are often talked about in medical terms. Yet the emotional side is overlooked. The anxiety before a job interview, the dread before a first date, and the self-consciousness during a video call are ignored. No tool currently exists that helps someone prepare for a high-stakes moment two hours in advance. There’s no tool that offers real data and true empathy. That is the gap Presence aims to fill.
What it does
Presence takes a photo of the user's face and analyzes it using Perfect Corp's YCE API, the same engine used in professional dermatology tools. It provides 14 actual skin metrics: redness, texture, evenness, pores, moisture, radiance, acne severity, dark spots, skin tone, and more.
The user informs Presence about their upcoming situation and emotional state. The LLM then uses these scores to create a personalized 12-minute readiness plan. This is not generic advice; it’s tailored to their redness score, texture rating, and specific circumstance.
The AI companion chat retains full context from the scan. Each response references real metrics. The Studio tab offers a virtual try-on and skin simulation using the user’s detected skin tone via Perfect Corp's Makeup VTO API. The Resilience dashboard displays the TrueFoundry AI gateway live, including a chaos demo where you can disable a provider and see automatic failover happening in real time.
How we built it
Backend: FastAPI and Python. The perfect_corp.py service manages all YCE API calls and includes custom image preprocessing. Webcam images often have the face occupying a small area of the frame, which doesn't meet Perfect Corp's face-size requirements. We created a preprocessing pipeline that upscales, centers and crops each image to square format, and re-encodes it before upload.
LLM stack: Each prompt contains the user's 14 raw skin scores, condition, situation details, and emotional state. All requests go through TrueFoundry's AI Gateway, linked to a virtual model setup of Groq, Gemini, and OpenAI. The resilience.py service monitors provider health and displays it on the frontend in real time.
Frontend: Next.js 14 App Router, TypeScript, Tailwind, Framer Motion, Zustand. It has five distinct pages: Analyze (intake), Results (plan), Chat (companion), Studio (VTO), and Resilience (gateway visualization).
Challenges we ran into
Perfect Corp's skin analysis API needs the face to occupy at least 60% of the image width. Webcam captures produce wide-frame images with small faces, leading to error_src_face_too_small on nearly every real capture. We addressed this with a silent preprocessing step before each API call, so users never see the error.
Getting the LLM to refer to specific skin scores consistently, without inventing numbers or resorting to generic phrases, needed careful prompt design. The final prompt structure clearly specifies which numbers to use and prohibits affirmations without data support.
Accomplishments that we're proud of
- Real Perfect Corp API integration that works end-to-end, rather than being a simulation
- Three-model LLM resilience that you can demo live; disable a provider and watch it switch over in real time
- A frontend that looks polished and professional
- Image preprocessing that quietly solves a tricky API constraint
- An AI companion that accurately incorporates skin scores into its responses, rather than just recognizing them
What we learned
The difference between "API functioning in a test script" and "API working with real webcam images" is significant. It often requires understanding the physical limitations the API was designed around. Perfect Corp expects close-up portrait images, while webcams typically deliver wide-angle shots. Bridging this gap necessitated understanding why the API fails, not just that it fails.
TrueFoundry's virtual model system makes switching between multiple providers quite simple once the model is set up correctly; the challenge lies in getting the FQN format exactly right.
What's next for Presence
- Long-term tracking — scan before and after an event to create a personal skin map over time
- Referral integration for therapists or counselors for users whose anxiety needs more support than an app can provide
- Community layer — anonymized stories from individuals who have faced similar situations
- Expanded VTO with more coverage products mapped to skin tone clusters from the YCE API
Built With
- fastapi
- framer-motion
- google-gemini
- groq
- next.js
- openai
- perfect-corp-yce-api
- pillow
- python
- railway
- shadcn/ui
- tailwind-css
- truefoundry-ai-gateway
- typescript
- vercel
- zustand
Log in or sign up for Devpost to join the conversation.