Inspiration
Billions of dollars are wasted every year on beauty products that don't work for people's skin. The problem isn't availability — it's personalization at scale. Professional skincare consultations are expensive and gatekept behind salon appointments, leaving 47 million independent beauty consumers making blind purchasing decisions. We wanted to change that by putting clinical-grade skin analysis and expert AI consultation in anyone's pocket — for free, privately, and without a single account required.
What it does
Mirra AI transforms a selfie into a full skincare consultation in three steps:
Skin Analysis — Upload a selfie and receive scores across 9 clinical dimensions (wrinkles, dark circles, acne, pores, oiliness, moisture, redness, firmness, and texture) powered by the Perfect Corp Skin Analysis API, visualized as a radar chart and dimension cards.
AI Consultation Chat — A self-hosted Mistral 7B LLM (running on Linode) acts as your private skincare consultant. It receives your exact skin profile and delivers personalized, evidence-based advice — explaining which ingredients target your specific concerns and why. Your data never touches a third-party AI API.
Virtual Try-On & Recommendations — Browse products matched to your skin profile and try them on in real-time using Perfect Corp's AR Try-On API, with a before/after comparison slider.
Privacy is non-negotiable: selfies are processed in-memory and never written to disk, skin profiles are session-scoped with a 30-minute TTL, and no user account is ever required.
How we built it
Mirra AI uses a clean three-tier architecture:
- Frontend — React + Next.js on Replit, styled with Tailwind CSS and shadcn/ui. Handles camera capture, the skin analysis dashboard, AR try-on display, and the streaming chat interface.
- Backend — FastAPI (Python) on Replit acts as the stateless API orchestration layer, managing session-scoped skin profile caching and routing between the two AI backends.
- AI Backends — Perfect Corp APIs handle all computer vision (skin analysis, try-on, recommendations). A Dockerized Ollama + Mistral 7B instance on a Linode GPU handles the LLM consultation layer.
We used Kilo Code as our AI pair programmer throughout the entire build, working in structured workflow modes (Architect → Code → Debug → Review → Orchestrator) to maintain clean separation of concerns and move fast without breaking the privacy model.
The full stack deploys with a single command: docker compose up
Challenges we ran into
- Privacy-first architecture under time pressure — Ensuring selfies were truly never persisted (not even temporarily to disk) while still being forwarded to the Perfect Corp API required careful in-memory pipeline design in the FastAPI layer.
- LLM latency on streaming responses — Getting Mistral 7B on Linode to stream responses smoothly through the FastAPI proxy to the Next.js frontend via SSE required careful async handling and buffer management.
- Prompt engineering for clinical accuracy — Crafting a system prompt that made Mistral give genuinely useful, skin-profile-aware advice without hallucinating medical diagnoses took significant iteration. We settled on a Jinja2 template that injects the user's exact 9-dimension scores per session.
- Perfect Corp API integration timing — API key provisioning and base64 image formatting edge cases cost us time early in the sprint, which is why we built JSON mock responses for all three Perfect Corp endpoints to keep frontend development unblocked.
Accomplishments that we're proud of
- True privacy by design — No selfie ever touches a disk. No skin data ever leaves our infrastructure. No account required. This wasn't a compromise — it was the architecture from day one.
- Self-hosted LLM that actually gives good advice — Getting Mistral 7B to deliver warm, accurate, skin-profile-aware consultation responses (not generic beauty tips) through careful prompt engineering felt like a real unlock.
- One-command deploy for any indie brand — The fact that any developer can
git clone, add an API key, and rundocker compose upto have their own branded skincare AI is something we're genuinely proud of. - Built a complete, functional product in 24 hours — Skin analysis pipeline, AI chat with streaming, AR try-on, product recommendations, and a polished mobile-responsive UI. All P0 and P1 features shipped.
What we learned
- Self-hosting LLMs isn't just a privacy win — it's a surprisingly good developer experience once the Docker + Ollama setup clicks. Mistral 7B on a Linode GPU is fast enough for real-time streaming chat.
- Stateless, session-scoped architectures are underrated for hackathon projects. No database setup, no migrations, no auth — and it's actually the right architecture for a privacy-first product.
- Kilo Code's structured workflow modes (especially Orchestrator for multi-file features) kept our codebase coherent across a two-person team under time pressure in a way that free-form AI pair programming often doesn't.
- Building mock API responses in Sprint 1 was one of the best decisions we made — it completely decoupled frontend and backend progress.
What's next for Mirra AI
- Month 1–2: User accounts (opt-in), saved skincare routines, skin tracking over time, expanded ingredient knowledge base, 500 GitHub stars target
- Month 3–4: Mirra Cloud — managed hosting for brands that don't want to self-host — with a brand analytics dashboard and A/B testing for product recommendations. Target: first 10 paying brand customers.
- Month 5–6: Fine-tuned dermatology LLM, multi-language support, plugin API marketplace
- Month 7–12: White-label SDK, Shopify/WooCommerce integrations, clinical study partnerships, Series Seed fundraise or profitability

Log in or sign up for Devpost to join the conversation.