Occasion & Mood
Find the looks that read most romantic, most formal, most wedding-guest — or most of their opposites — across 3,395,066 runway, Instagram and Polyvore images. Every quality is ranked against its opposite, which is what makes a subjective judgement measurable. Issue #543.
How dressed-up a look is, from gowns and black tie down to jeans and a hoodie. The most reliable one here.
Most formal
48 looks, ranked across 3 corpuses
#1
#3
#4
#5
#8
#10
#12
#13
#14
#15
#16
#17
#18
How it works. Every quality above is one end of a pair of opposites — romantic vs severe, formal vs casual, wedding-guest vs off-duty. Each end is described by ~16 phrases, embedded with FashionSigLIP (the same frozen model the rest of the app uses), and a look is scored by how much closer it sits to one end than the other, then ranked within its corpus. Asking in pairs is the reason this works at all: "is this romantic?" has no reference point, while "is this more romantic than it is severe?" does. Nothing is trained; the model is untouched.
What is excluded. Roughly 10% of each corpus is held out of these rankings for not engaging the question at all — flat-lays, detail crops, set photography. That share is a fixed cut we chose, not something measured; what WAS measured is what it catches — of the 24 images furthest from the question, 24 were not outfit photos at all (balloons, candles, a racetrack, a sea slug).
The gender filter is itself a ranking, scored exactly the same way as the qualities above and checked against runway collection metadata at AUC 0.933. Its cuts are asymmetric and chosen for precision — womenswear 98.6%, menswear 73.2% on runway — and looks in the uncertain middle appear in neither filtered view rather than being forced into one. Those numbers are measured on runway only; Instagram and Polyvore have no gender ground truth to check against.
Known limits. Two qualities still track gender presentation more than we would like
(wedding-guest, formal) — the filter above is the mitigation. Rankings can be
dominated by a single house whose whole collection is one mood (edgy is the worst case).
Combined requests like "wedding guest but not white" are not supported and would be little
better than chance. The list itself is opinion written down as data — see
api/services/data/occasion_mood_axes.yml. List version v1.1.