Back to Dressfindr

Dressfindr

Recommendation Methodology

How I approached helping shoppers discover wedding guest dress brands beyond the few obvious places everyone defaults to.

Overview

I noticed that friends shopping for wedding guest dresses often hit a cold-start problem: they knew they wanted something specific, but still defaulted to the same small set of brands. Dressfindr was built to expand that search surface using structured taste inputs, including style words, occasion, price range, design details, and brands someone already likes as inspiration.

The recommendation system translates brand research into weighted attributes, then ranks brands based on how strongly they match the shopper's selected signals.

1

Build the Brand Universe

I started by collecting dress brands from retailers and marketplaces, then de-duped them into a master list while keeping track of where each brand was carried. That gave the product a broader starting catalog than the few brands that usually come to mind first.

2

Define a Taste Schema

Next, I created a structured way to describe each brand around the qualities that matter when someone is choosing where to shop for a formal dress: price range, formality, age demo, dress focus, and style signals like romantic, classic, playful, resort, or edgy. I iterated on this schema as I tested the algorithm, because the recommendations were only as good as the inputs used to describe each brand.

3

Score and Enrich the Catalog

I experimented with LLMs to generate brand descriptions and fill in the schema, adding guardrails so the model could say it did not have enough information instead of guessing. I also gathered dress imagery for each brand so recommendations could be judged visually, not only from text.

4

Test Similarity and Ranking

The first version helped users type in a brand and find adjacent brands. I tested embeddings for semantic similarity, but the results were not precise enough for the fashion taste problem, so I moved toward a scoring system where I could see and tune why a brand was showing up.

5

Add Human Feedback

As I reviewed results, I realized the data schema and AI-assisted scoring had not captured the essence of a lot of the brands. Some brands were showing up for the wrong categories, while others were missing from searches they were clearly a fit for, like Zimmermann not ranking for romantic. I built an internal review frontend where I could thumbs up or thumbs down a result for a specific search, and later correct individual style words attached to a brand. That feedback evolved from a binary yes/no on tags like preppy or romantic into a tag-strength score, so one thumbs down could lower a brand's association with that tag to a 2/10.

6

Structure Ranking Signals

I added a layer of signal relationships on top of the base brand tags. Positive associations helped the algorithm give partial credit for related features, like romantic connecting to lace, ruffles, chiffon, or pastels. I also created anti-signal pairings for combinations that should suppress a result, like resort conflicting with dark, winter-heavy fabrics. I also adjusted how price was treated in the algorithm: being $300 over budget matters a lot more for a $200 shopper than for someone shopping at $1,200, so I used tighter tolerance at lower price ranges and looser tolerance at higher ones.