From hackathon to MVP: Building a smarter beauty search
We participated in the WebDev Challenge Season 2, Episode 6, where we took on a novel challenge to redesign the skincare beauty purchasing process with Algolia and Gemini. Most people purchase skincare products the same way: reading a few claims on the label, watching a couple TikTok recs, and relying on a ton of hope. Most of us then flip the bottle over and hit the ingredient list… and realize we didn’t actually know what we were looking at.
That “guesswork” gap—between marketing and meaning—is what pushed us to build a smarter beauty search experience. Something that lets you shop for what you’re actually trying to solve (dryness, dark spots, breakouts), and then explains why a product is recommended in plain language. By solving the problem well, it also saves buyers money because they’re getting the right thing.
The first version took us four hours in the hackathon. The hard part was turning that prototype into something that could be scaled, tuned, and trusted. In this blog, we’ll explain how we went from “it works on demo day” to an MVP anyone can keep building on—with Algolia as the search foundation and Gemini as the “ingredient translator” layer.
We originally presented on this topic together at Algolia DevCon, and you can watch it below.
The problem: Skincare shopping is a search problem (with trust issues)
Most e-commerce search flows assume people know what they want:
But skincare isn’t really category-first; it’s concern-first. When someone types “dry skin,” they’re not looking for a product type. They’re asking:
So we framed the problem like this: We want to help shoppers search by concern, then build confidence with ingredient-level clarity.
The hackathon build: Prove the idea fast
Our hackathon constraint was simple: we had four hours to show the idea was possible. So we made two core bets:
In practice, that meant:
Even in a prototype, that combination mattered. Instant results alone are useful—but instant results with explanations are what start to feel trustworthy.
MVP 1.0: Keep the flow tight
Once we had more time, we tightened the experience into a usable MVP with a few opinionated features:
We kept Algolia doing what it’s great at — indexing, retrieval, default ranking, and fast iteration via the dashboard. And we used Gemini only where it adds value like translating “ingredient science” into plain English or adding context (benefits, cautions, tips).
This separation is important. If your AI layer becomes your retrieval layer, you can lose determinism and speed fast. We wanted the search experience to stay solid even if the AI layer changes.
MVP 2.0: Move from “results” to “discovery”
MVP 2.0 was about personalization and “discovery” instead of just returning a list.
We leaned into a few Algolia capabilities that made the experience noticeably smarter without forcing us to build a huge backend:
The goal was: regardless of where someone is in their skincare journey, they should be able to search naturally and still get strong results.
We structured search relevance as follows:
Searchable attributes: Concern-first, ingredient-second
We wanted users to search for:
So we made sure those fields were searchable and prioritized correctly. That single decision changes the UX dramatically. You’re no longer forcing users to translate their problem into a product category.
Recommended by LinkedIn
Synonyms: Support beginners and experts at the same time
People don’t all use the same vocabulary. Early on, someone might type “dry skin.” Later, they might type something more technical—like “xeroderma.” By setting up synonyms, we didn’t have to teach users how to search “the right way.” They could search their way and still get relevant products.
Ranking: Prioritize potency, then break ties with ratings
We used a simple philosophy:
This is one of those moments where relevance isn’t just “text match.” It’s your product philosophy encoded into ranking. Even if your formula is imperfect at first, having an explicit model makes it easier to iterate—and to explain internally why a search result looks the way it does.
Front-end implementation
We built the UI in React and treated Algolia “hits” (products retrieved by the search engine) as the source of truth for what appears on the page. Two implementation details mattered a lot:
A custom hit grid
Algolia returns structured data (often JSON-like), but the user needs a clean product grid. We built a grid component that:
The point wasn’t fancy UI—it was predictability. No matter how many results come back, the layout stays stable.
A custom “search bridge” + pagination
We also built a custom search connector so that as the user types, Algolia updates results dynamically—letter by letter. Then we controlled how many hits show per page and wired pagination into the same flow. This is where instant search stops being a feature and becomes a feeling.
The AI layer: Gemini as the “ingredient translator,” not the search engine
We were careful with how we used Gemini. All products live in Algolia. All retrieval happens through Algolia. Gemini’s job is to answer: “Why did this show up, and how should I use it?” That’s how we generated explanations like which ingredients are relevant to the concern, what the ingredient benefits are, what to be mindful of (for example, reminders around sun sensitivity with certain acids), etc.
Prompting approach: Combine user intent + product ingredients
The basic structure was:
Gemini already has general knowledge about ingredients (benefits, common side effects, incompatibilities). We used that to produce a clearer explanation layer—without trying to make the model “decide” which products should rank.
What we learned going from prototype to MVP
A hackathon is great for proving an idea. An MVP is about proving you can operate the idea.
Here are the takeaways I’d carry into any search-driven product build:
If you’re building something similar
If you’re working on search or recommendations—especially in domains where people don’t speak the taxonomy (beauty, wellness, healthcare, finance)—the pattern that worked for us is:
That combination is what took us from a four-hour demo to an MVP we can keep improving—without rebuilding the whole stack every time we learn something new.
You can check out the demo on https://syscily.com/#projects.
Algolia•1K followers
1moGreat use case for AI and moving beyond traditional product search. Also shoutout to Jason Lengstorf at CodeTV for organizing the original challenge!