App Store TestFlight: link Demo site: link
momo: the beauty companion that talks, sees and remembers. Like Duolingo's owl, but you can show it your skin and ask it anything.
Inspiration
Beauty is the cash machine of retail
The global beauty industry is worth about $450 billion a year, and it grows about 5% a year to 2030 (McKinsey & Company, State of Beauty 2025). People do not buy skincare once. They buy it every month, for years, and they keep adding to it.
The reason is simple: almost everyone wants to look good and stay young for as long as possible, and they are willing to do a lot for it. For many women, skincare is not a luxury. It is a must: a long-term investment in themselves, often put before other needs.
And here is the fact: when we want to buy something expensive, we do a lot of research. We ask AI, we ask people, and we even ask a doctor if we can. All of that costs energy, time and more money. We made it simpler.
But the investment runs blind
- We can't trust beauty reviews anymore. Influencers are paid to praise products. "Holy grail, 10/10 #ad" tells you nothing. And most reviews are written on day one, before the product had time to work.
- Nobody measures the result. People spend money on their skin for months, then cannot say if it worked. "I think my redness is better?" is a feeling, not a result. Memory is short, and the light in the bathroom mirror changes every day.
So we built momo
momo is a beauty companion: a friend you can share your day with. It is a small blue cloud mascot. You interact in the simplest way: just open the camera, scan, and talk.
With the YouCam AI Skin Analysis API, momo does not guess how your skin is. It measures it, the same way every time. Then it puts the numbers next to the products you used, day after day. Your own results become an honest, anonymous review that helps the next person with your skin.
Like Duolingo, but it talks back
| Duolingo-style mascot | momo | |
|---|---|---|
| Daily habit, streaks, rewards | Yes | Yes, framed as your own routine goal |
| Talks with you | No, it sends reminders | Yes, by voice, both ways |
| Sees you | No | Yes, a measured skin check with YouCam, and product scans |
| Remembers you | Your lesson progress | Your skin scores, your shelf, your timeline, how each product felt |
| Answers your questions | No | Yes, grounded in your own measured history and honest reviews |
| Has moods | Fixed animations | Happy when fed and when you share your day. Never because of how your skin looks. |
What it does
- Measured skin check (YouCam). Take a selfie inside the face oval. YouCam scores redness, oiliness, acne and moisture. momo shows them as redness, shine, breakouts and dry patches, and compares them with your last check.
- Talk. A voice check-in each day: how your skin feels, what you used, anything new. The chat is optional.
- Your diary keeps the scores. Each day stores the measured signs next to the products you used. Over weeks, this shows what really changed, not what you remember.
- Scan a product. Show the front and the back label. momo names it, says what it does, and checks it against your shelf.
- Watcher. It looks for products that clash with each other, with your skin, or with your plans. A clash is a warning with a plan, never a ban.
- Share a review, dress up momo. Review products on your shelf, anonymously. Every review earns the same points, good or bad. Spend them on fur colors, hats, glasses and ribbons for momo.
Kind words only
momo never says your skin "looks worse". YouCam gives numbers. momo speaks in neutral words and talks about change, not about beauty. When a photo is not good enough, momo asks for better light instead of guessing.
How momo uses YouCam Skin AI
One skin check, from the camera to the answer:
- Live preview, one frame. The camera shows a live preview with a face oval. momo sends only one frame, when you take the photo. Live frames would cost units for nothing.
- Face crop. The camera crops a 3:4 portrait around the oval, so the face is about 70% of the image width. YouCam needs more than 60%. A small crop is scaled up to at least 480 px on the short side.
- YouCam task. The momo server uploads the photo and starts an SD skin analysis with 4 concerns:
redness,oiliness,acneandmoisture(9 units). - Bounded polling. The task is asynchronous. The first status poll is after 1 s. The interval grows 1.5 times up to 3 s, and the server stops after 45 s.
- In parallel. While YouCam measures, a vision model writes momo's short spoken summary and scores uneven tone. The two waits overlap.
- Score to sign. YouCam returns a
ui_scorefrom 1 to 100, where higher is healthier skin. momo stores each as a sign:1 - ui_score / 100.
$$ \text{sign} = 1 - \frac{\text{ui_score}}{100} $$
| YouCam concern | momo sign |
|---|---|
redness |
Redness |
oiliness |
Shine |
acne |
Breakouts |
moisture |
Dry patches |
Errors become retakes
A YouCam error code becomes a friendly retake, and a failed task costs no units:
| YouCam error | momo says |
|---|---|
error_src_face_too_small |
Come a little closer. |
error_src_face_out_of_bound |
Move back a little. |
error_lighting_dark |
Face a window. |
error_no_face, error_pose, error_large_face_angle |
Fit your face inside the oval. |
Measured, not scripted
Measured on 2026-11-01: one skin check took 5.4 s, and the units went from 1040 to 1031 (9 units). The skin check sheet shows the units after each check, as the demo quota. Anyone with a key can run it:
npm run test:youcam -- ./selfie.jpg
Honest reviews, by design
| Rule | Why |
|---|---|
| Points are flat: the same for every review, whatever the stars or the words | A 1-star review earns the same as a 5-star review, so nobody is paid for praise. |
| Only products on your shelf, one review each | No reviews of products you do not use, and no farming points. |
| Anonymous: skin type, age group and city, plus a masked name | Nobody can find or pressure the reviewer. |
| Weeks of use and measured skin checks are recorded | Two months of measured results count for more than a first-day opinion. |
| Same-skin reviews come first | A dry-skin rave does not decide a pick for oily skin. |
| Every claim has a source tag | Diary, product, camera check or reviews. A source momo does not have is never shown. |
Business model: keep momo fed and happy
momo is a reflection of you. Just like us, momo snacks or grabs a boba, and has moods too. Every AI action is momo's food, because it costs tokens and API units. momo is happy when it is fed and you share your day, and hungry with no food.
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | Daily ration, share reviews, earn points, dress up momo |
| Snack | $5 / month | Auto-feed momo, recover your streak |
| Boba | $15 / month | All of Snack, plus measured YouCam skin checks |
| Feast | $30 / month | All of Boba, plus a direct line to our doctor, who can read your records |
The YouCam units come from the subscription. Plan names and contents are a draft. Safety warnings always work, even when momo is hungry. Later: referrals to partner doctors and brand partnerships, which never change the watcher or the reviews.
How we built it
- App: React, Vite, TypeScript, Tailwind and shadcn/ui. A 3D mascot in Three.js. Voice uses the browser's own speech engines, so a spoken check-in costs no API call. An iOS build with Tauri for TestFlight.
- Server: Hono on Node. It holds every API key. The app never receives one.
- YouCam AI Skin Analysis:
momo/server/vision/youcam.ts. Upload URL, upload, task, bounded polling, and the units left. It runs next to the vision model inmomo/server/vision/index.ts. - Camera:
momo/src/components/camera.tsxandmomo/src/lib/image.tscrop the face to fit YouCam's rules before anything is sent. - Privacy: your diary and photos stay in your browser. The server stores nothing.
Challenges we ran into
- YouCam needs a whole face. A close-up of one cheek or one spot returns
error_no_face. So we cannot zoom in on the area the user cares about. We built a face oval and a crop that keeps the face at about 70% of the width. - Detail on small spots. With a full-face photo at SD, a small spot is only a few pixels, and the 4 SD concerns give one score for the whole face. Scores per area (forehead, nose, cheek) come only with HD concerns, which cost more units.
- Asynchronous tasks. A skin analysis is a task, not a direct answer. A flat poll loop wastes calls, so we used a growing interval with a hard stop.
- Units are real money. We send one frame per check, never live frames, and we show the units left after each check.
- Speed for a spoken answer. YouCam and the vision model run at the same time, so the user waits for the slower one, not for both.
Accomplishments that we're proud of
- A skin check that gives the same kind of numbers every day, so change over weeks is measured, not remembered.
- YouCam error codes turned into kind retake messages, with no units lost on a bad photo.
- A review system where honesty pays the same as praise.
- A companion that never judges your skin.
What we learned
- A measured score is only useful when it is compared with the same person, in the same kind of photo, over time. The crop and the retake rules matter as much as the model.
- Numbers need kind words. Users want to know what changed and what to do, not a grade.
- Showing the source of every claim builds more trust than a confident answer.
What's next for momo
- HD concerns for scores per face area and mask images, so momo can show where the change is.
- Measured reviews: a review that shows the reviewer's own score change over weeks of use, anonymously.
- Real reviews at scale: login, review analysis as a batch job, and checks against one person using many accounts.
Built With
- react
- react-native
- three.js
- typescript
- youcam-api

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