Inspiration

People rarely describe the perfume they want using perfect fragrance terminology.

They usually say things like:

“I want something clean, sweet and fresh, and comfortable enough for the office.”

As a multi-brand perfume decant seller, I hear questions like this regularly. I also see the same pattern across social media: people ask strangers for recommendations, scroll through dozens of reviews, compare note lists they may not fully understand, and still feel unsure about what to choose.

I realized that most people are not simply asking:

“Which perfume smells good?”

They are trying to make a personal decision involving taste, budget, occasion, performance, comfort, and trade-offs, but they often do not have the fragrance vocabulary to express all of that clearly. For users, choosing a fragrance is not a technical exercise. It is an everyday personal decision involving how they want to feel, how they want to be perceived, where they will wear it, and how much they are willing to spend. That insight originally inspired the first version of FindMyScent, a simpler fragrance discovery app where users could find alternatives, ask about scent characteristics, and get quick recommendations.

For OpenAI Build Week, I wanted to go deeper.

Instead of adding another feature to the original app, I rebuilt the core experience as a new standalone product: FindMyScent 2.0, an Indonesia-first AI perfume consultation and decision assistant that helps people turn vague preferences into recommendations they can understand and refine.

What it does

FindMyScent 2.0 is designed for ordinary fragrance shoppers, beginner perfume influencer, or anyone who loves smelling good. Users can describe what they are looking for in their own words. They do not need to understand fragrance families, accords, projection, longevity, or technical perfume terminology.

The system then:

  • Uses GPT-5.6 to translate the user's natural-language request into structured and validated preferences.
  • Applies backend rules to enforce hard constraints such as budget, catalog availability, and relevant usage context.
  • Retrieves and scores candidates from a curated, Indonesia-first fragrance catalog.
  • Uses GPT-5.6 to compare only those grounded candidates and explain the meaningful differences between them.
  • Produces an understandable decision report rather than a generic list of products.

Depending on the user's needs, the report can include:

  • Best Match
  • Alternative
  • Why it fits
  • What to consider
  • Trade-off
  • Confidence
  • A Buy Link

Most importantly, the decision does not end with the first result.

A user can say:

“I am more worried about it being too sweet than about weaker longevity.”

FindMyScent 2.0 updates the structured preference, reranks the candidates, and explains what changed and why. The user does not need to restart the consultation or fill out another questionnaire, everything in the same page.

The goal is not to pretend that AI can smell a perfume or guarantee that someone will love it. The goal is to give people a clearer, more honest, and more useful starting point for making a highly personal everyday decision.

How I built it

FindMyScent 2.0 uses a layered recommendation architecture rather than asking an LLM to freely generate perfume names.

The backend acts as the first decision layer. It handles:

  • catalog retrieval,
  • hard filtering,
  • structured scoring,
  • budget and availability validation,
  • candidate eligibility,
  • preliminary ranking,
  • output validation.

This ensures that every candidate comes from the actual curated catalog and that important constraints are enforced by application logic rather than left entirely to the model.

GPT-5.6 acts as both the language reasoning layer and the final decision layer. It is used to:

  • understand vague and conversational fragrance requests,
  • extract structured preferences,
  • identify decision-critical ambiguity,
  • ask targeted clarification questions when needed,
  • consider the user's answers and consultation history,
  • evaluate the shortlisted candidates produced by the backend,
  • decide which candidates should become the Best Match and Alternative,
  • explain why each perfume may or may not fit,
  • understand refinement instructions,
  • update the final selection or ordering when the user's priorities change,
  • communicate what changed and why in natural language.

This separation was intentional.

The backend determines which perfumes are valid and relevant candidates. GPT-5.6 then makes the final contextual choice among those candidates using the user's complete consultation history, including their original request, clarification answers, expressed priorities, and subsequent refinements.

GPT-5.6 is not treated as the source of product facts, prices, notes, or availability. It makes decisions only from the catalog candidates and structured evidence supplied by the application.

The original FindMyScent catalog contained simpler fragrance information. For FindMyScent 2.0, I created a separate and enriched database designed specifically for decision support. Selected fragrance records from my existing catalog were used as seed data, then restructured and curated with attributes required for:

  • preference matching,
  • budget filtering,
  • scent profile comparison,
  • longevity and projection expectations,
  • occasion and context suitability,
  • potential caution signals,
  • explainable recommendation output.

The catalog is intentionally Indonesia-first. Instead of trying to cover every perfume in the world, the MVP focuses on a smaller curated set of fragrances that are relevant and accessible to Indonesian shoppers.

I built the project with Codex as my engineering collaborator. I acted as the product orchestrator and fragrance domain expert. I understand how software products should be planned, structured, tested, and iterated, although I am not primarily a hands-on programmer in modern coding languages.

I defined:

  • the user problem,
  • the recommendation boundaries,
  • the fragrance data structure,
  • the product requirements,
  • the consultation journey,
  • the acceptance criteria,
  • the test scenarios,
  • how user refinements should update preferences and recommendation rankings,
  • the final product decisions,
  • and the implementation refinements needed throughout the build.

I reviewed Codex's implementation critically rather than accepting every output as is. When I found code that was unnecessary, inconsistent, overly complex, or misaligned with the intended product behavior, I flagged it, requested specific changes, and verified the revised implementation before continuing.

Codex helped translate those decisions into architecture and working implementation, build each work unit, run technical checks, debug issues, and improve the application through repeated iteration. This collaboration allowed me to focus on product intent, domain logic, system behavior, and quality control, while Codex accelerated the hands on engineering work required to turn those decisions into a functioning product.

The workflow was deliberately human-in-the-loop:

Define one unit -> let Codex implement it -> manually review and test it -> request corrections -> verify it again -> continue to the next unit.

This allowed me to use Codex deeply without handing over the product judgment that depends on real fragrance knowledge and customer experience.

Challenges we ran into

The hardest challenge is that fragrance is intensely personal.

A perfume can smell and perform differently depending on:

  • skin chemistry,
  • weather,
  • environment,
  • dosage,
  • personal memory,
  • and individual perception.

Even familiar words such as "fresh", "clean", "sweet", "soft" or "strong" can mean different things to different people. This made it important not to present recommendations as absolute truth.

FindMyScent 2.0 needed to communicate uncertainty honestly, surface possible mismatches, and distinguish between:

  • how well a candidate matches the user's stated preferences,
  • how complete and consistent the user's information is,
  • how strong the available catalog evidence is,
  • and how uncertain the real-world wearing experience may still be.

Another challenge was grounding the AI. A language model can produce convincing perfume recommendations even when the facts are inaccurate, the prices are outdated, or the products are not present in the catalog. I therefore designed the system so that product selection begins with the database, not with the model's memory. The model can interpret, compare, and explain, but it cannot freely invent the recommendation set.

The final challenge was scope. A complete fragrance platform could include comparisons, brand discovery, store finding, personal collections, reviews, availability tracking, and many other features. For this build, I intentionally focused on one polished end-to-end journey:

Understand the user's needs -> retrieve grounded candidates -> explain the decision -> let the user refine it.

Accomplishments that I am proud of

I am proud that FindMyScent 2.0 can take a user from:

"I know the feeling I want, but I do not know what perfume to choose."

to a shortlist they can actually understand.

In one continuous experience, a user can:

  • describe their needs naturally,
  • receive recommendations grounded in a real catalog,
  • understand why each perfume was selected,
  • see possible drawbacks and trade-offs,
  • adjust one of their priorities,
  • and receive an updated decision without starting over.

Most importantly, this project transforms a problem I repeatedly encounter in my real work into a functioning product experience. I also believe it can help a much broader audience, because the same questions appear constantly across social media: people know the kind of feeling, situation, or impression they want, but they still struggle to translate that into a perfume choice.

There are already many fragrance recommendation tools, but most of them rely on fixed quizzes and predefined answer paths. Even the first version of FindMyScent was intentionally simple. FindMyScent 2.0 takes a different approach: it understands what the user is actually asking in natural language, filters the catalog using structured criteria, asks follow-up questions when important information is missing, and gives users a way to refine their priorities without restarting the entire process.

It is not an idea chosen only because AI could be added to it.

It began with real questions from real perfume shoppers, and it uses AI because understanding those questions genuinely requires nuanced language interpretation and contextual reasoning.

What I learned

I learned that building an AI recommendation product is not mainly about writing one clever prompt.

The quality of the result depends heavily on:

  • the quality of the catalog,
  • the consistency of controlled values,
  • the clarity of data contracts,
  • the separation between deterministic logic and model reasoning,
  • the validation of model output,
  • and the way uncertainty is communicated.

I also learned that LLMs become much more useful when their role is specific.

GPT-5.6 performed best when it was asked to understand language, compare grounded evidence, interpret changing priorities, and explain decisions not when it was asked to invent the entire recommendation from scratch.

This project also reinforced an important lesson:

In a subjective domain, explaining why something may not fit can be just as valuable as explaining why it does.

Finally, working with Codex strengthened my belief in human-led orchestration. AI can implement, debug, test, and accelerate development, but strong product direction still depends on clear intent, domain understanding, critical review, and deliberate decisions.

What's next for FindMyScent 2.0

My long-term goal is for FindMyScent 2.0 to become a trusted starting point whenever someone feels overwhelmed by fragrance choices. Not merely the largest perfume database, but the clearest decision layer on top of one.

The next possible experiences include:

  • side-by-side perfume comparison,
  • recommendations based on perfumes a user already likes or dislikes,
  • deeper brand-specific exploration,
  • searching for perfumes with highly specific characteristics,
  • discovering relevant offline fragrance stores,
  • expanding and continuously validating the Indonesia-first catalog,
  • learning from structured user feedback while preserving privacy,
  • and testing the recommendation framework with more and more real fragrance shoppers.

Perfume may appear to be a narrow niche, but the decisions inside it are surprisingly rich and deeply personal.

FindMyScent 2.0 is the first step toward making those decisions more understandable, accessible, and grounded.

Built With

Share this project:

Updates