Inspiration

We'd just come out of a string of finance projects — spreadsheets, papers, more spreadsheets — and wanted to build something that actually touched someone's daily life. When my friend found Agents for Humans, we got hooked fast, and started looking for a mundane, repetitive task worth automating properly.

Skincare kept coming up, because I had been living the problem for years. Every new product means flipping the bottle over, squinting at 25-30 ingredients printed in font size clearly designed to be ignored, and typing them one by one into an LLM just to ask "does this fight with what I already use?" If that failed, it meant digging through internet forums hoping someone had reviewed both this new product and your existing routine together which, for anything beyond the five most popular products on the internet, basically never happens.

And you don't get to do this once. Every new product means doing it again, from scratch.

What made it worse was realizing the tools that do exist are almost all owned by skincare brands themselves which means their "recommendations" are really just a funnel back to their own product line, not an honest answer about what's actually in your bathroom cabinet. There wasn't anything that just answered the question straight, for any product, against your actual routine.

The market context made this feel worth building on, too. Skincare is a steadily growing industry. Skincare has always been a priority category for women, but it's seeing an unprecedented rise among men right now. But what's common across all people is that roughly 70% of people are unknowingly using conflicting ingredients. That's a real, common, everyday friction, not a niche one.

What it does

DermaCare is an AI cosmetic chemistry assistant. Snap a photo of a product label, and it:

  • Reads the label for you — a vision agent runs OCR on the photo and pulls out the actual INCI ingredient list, so nobody has to type 30 chemical names by hand ever again.
  • Analyzes your full routine, not just one product — upload up to five products to a persistent routine shelf, and the AI remembers them across every conversation.
  • Vets a product before you buy it — attach a photo inline mid-chat to check compatibility with your existing routine on the spot, without permanently saving it.
  • Flags dangerous conflicts — cross-references ingredients against a database of documented conflicts and synergies (retinol + AHA, vitamin C + niacinamide, and more) instead of guessing.
  • Recommends safe swaps — filtered by your skin type, climate, budget, and allergies, from a database of real products, with an explanation of why each one fits.

Throughout, it stays deliberately narrow: it's engineered to talk about cosmetic appearance only, and explicitly refuses to diagnose or prescribe — pointing to a dermatologist instead when something looks like it's beyond a skincare-routine question.

How we built it

The core is a dual-agent pipeline orchestrated with the Strands Agents SDK: a Vision agent for label extraction, and a Chemistry agent that calls out to tools — a DynamoDB profile lookup, a PostgreSQL fuzzy-match search against 6,222 ingredients, a conflict-interaction check across 113 documented rules, and a filtered product search across 2,269 real skincare products connected by 82,000+ ingredient relationships.

The stack runs on AWS end to end: Cognito handles auth, a photo upload lands in S3 and fires a Lambda function that updates the user's profile in DynamoDB, and everything is served from a single EC2 instance — a public Node/Express API in front, and the Strands agent service running privately behind it, talking to Postgres RDS and the LLM.

Challenges we ran into

The biggest one was infrastructure, not code: our intended architecture used Amazon Bedrock for the model layer, but our AWS account couldn't get verified in time to actually provision it before the demo deadline. Rather than stall, we pivoted the model layer to Gemini 3.5 Flash Lite mid-build — same agent architecture, different model behind it — which meant re-testing the whole vision extraction and chemistry reasoning pipeline against a model we hadn't planned around.

The rest of the challenge was just the grind of standing up real cloud infrastructure under a deadline: getting RDS security groups to actually talk to the EC2 instance, keeping the agent service correctly localhost-only while the web server stayed public, and making sure five different AWS services (S3, Lambda, DynamoDB, RDS, Cognito) handed data to each other correctly instead of silently dropping it.

What we learned

Building the thing you personally wish existed is a different experience than building a "feature." Every design decision — what counts as a conflict, how cautious to be near medical language, how to phrase a warning — kept getting checked against "would this actually have helped me, standing in the aisle, three years ago?" That constraint turned out to be a better guide than any generic best-practice list.

We also learned, the hard way, that cloud architecture plans need a plan B — losing Bedrock access days before the deadline forced us to get comfortable swapping the model layer out without breaking the agent orchestration around it.

What's next

  • Live web scraping so product data and prices stay current instead of static
  • Expanding the ingredient and product database well past its current size
  • Routine history tracking, patch-test reminders, and product expiry notifications
  • Barcode scanning as a faster alternative to photographing labels
  • Multi-language support, since skincare confusion isn't an English-only problem

Built With

Share this project:

Updates

Submission history