Problem Statement
Many people care about appearance, self-improvement, and personal presentation, but it is hard to get clear, practical, and personalized feedback. Most rating apps only give a number, without explaining what is working, what could improve, or which hairstyle, beard style, grooming choice, or presentation change would actually suit the person.
FaceRate AI was built to make facial feedback more useful, visual, and actionable.
Solution Overview
FaceRate AI is an AI-powered facial analysis and glow-up simulator. Users upload a photo and receive structured facial scores, category feedback, improvement suggestions, and visual simulations.
The app does more than rate a face. It uses the analysis results to generate personalized recommendations, style previews, comparison tools, and a realistic Maximum Potential Preview that shows an improved version of the user while preserving their identity.
A simplified version of the scoring idea is:
$$ \text{Overall Score} = f(\text{skin}, \text{hair}, \text{eyes}, \text{symmetry}, \text{facial structure}, \text{presentation}) $$
The goal is not only to produce a score, but to turn that score into practical guidance.
For the hackathon demo, users receive free tokens so judges can test the main flows without payment.
Key Features
- Facial analysis with overall and category-based scores
- Personalized feedback and improvement suggestions
- Analysis history and progress tracking
- Face comparison between different analyses
- Visual simulator for hairstyles, beard styles, colors, accessories, and custom prompts
- Maximum Potential Preview for a realistic glow-up style result
- Token-based access system for demo usage
- Authentication with Clerk
- Public frontend with private backend logic, prompts, API keys, and scoring workflows kept server-side
Technologies Used
- React
- TypeScript
- Vite
- Tailwind CSS
- FastAPI
- Python
- PostgreSQL
- Redis
- Docker
- Clerk
- Stripe
- OpenAI API
- FAL AI
- Face++ / facial analysis APIs
- Axios
- Recharts
- Hetzner cloud deployment
- Cloudflare / HTTPS deployment
Target Users
FaceRate AI is for people who care about self-improvement, grooming, style, photography, dating profile quality, or understanding how they present themselves visually.
It can help users who want honest feedback, people experimenting with new looks, and anyone who wants a more practical alternative to simple attractiveness ratings.
Inspiration
I built FaceRate AI because I have always cared a lot about appearance, self-improvement, and understanding what actually makes a photo or face look better. I know many people feel the same way: they want honest feedback, but they do not always know what is working, what could improve, or what style would suit them.
I wanted to create something that could analyze a face, explain the strongest features, point out areas to improve, and then go further than a normal rating app by helping users visualize different hairstyles, beard styles, colors, and a personalized maximum-potential version of themselves.
How I Built It
The frontend was built with React, TypeScript, Vite, Tailwind CSS, Clerk authentication, Axios, and Recharts. The private backend is built with FastAPI and connects to several external services for AI analysis, image editing, authentication, and data storage.
The project combines multiple APIs and workflows. One part of the system analyzes the face and produces structured scores. Those scores are then used by other parts of the app to generate personalized feedback, simulation prompts, and the Maximum Potential Preview.
This was one of the most interesting parts of the project: using the output of one AI process as input for another.
Conceptually:
$$ \text{Photo} \rightarrow \text{Analysis Scores} \rightarrow \text{Personalized Advice} \rightarrow \text{Simulation Prompt} \rightarrow \text{Visual Preview} $$
Challenges
The hardest part was the AI image simulation. At the beginning, the model often changed the person’s identity too much, hallucinated facial features, or edited areas that should have stayed untouched. Hair and beard edits were especially difficult because small prompt changes could make the result look fake, too subtle, or like a completely different person.
I spent a lot of time improving prompts, adding identity-preservation rules, making the edits more realistic, and trying to make hairstyle and beard changes visible without destroying the original face. The Maximum Potential Preview was also challenging because it needed to look better while still feeling like the same person.
Another major challenge was preparing the project for a realistic deployment setup. I separated the public-facing frontend from the private backend so that API keys, prompts, scoring logic, and image-generation workflows stay server-side. I also added token limits for the demo, documented the API contract, and deployed the project with HTTPS for a better browser experience.
What I Learned
I learned a huge amount during this project. I became much more confident working with React, TypeScript, FastAPI, authentication, API communication, Docker, deployment, production environment variables, and multi-service architecture.
Before this, I had only built a smaller project that communicated with the OpenAI API. This time, I built something more complete that connects multiple systems together and uses the data from one service to power another. I also learned a lot about AI safety, prompt injection risks, keeping secrets private, and why production apps need careful security decisions.
Development Process
I started with the core facial analysis checkpoint. After that, I built the analysis history and comparison features so users could track progress over time. Then I moved on to the simulator, where I spent a large part of the project improving hairstyle, beard, color, and custom prompt behavior.
Near the end, I built the Maximum Potential Preview, which became one of the most important features. I also added token-based access for the demo and prepared the project for deployment and hackathon review.
What’s Next
I originally started prototyping a realtime Battle mode using Redis, where users could compare results, vote on matchups, and climb rankings. I left it out of the public demo because I did not have enough time to polish it safely, but I still think it could become a fun social feature later.
Future improvements would include more refined simulations, stronger privacy controls for uploaded images, improved long-term progress tracking, and deeper personalization across different style goals.
Log in or sign up for Devpost to join the conversation.