The Occasion Effect
What 21,778 outfits reveal about naming where you are going
no_occasion_mode flag points the same way — 65.3 when on, 63.7 when off. The free-text
field also fragments one idea into several strings, which the report documents rather than merges.
Observational snapshot, not a treatment study. No causal score lift is claimed.
The obvious theory is that telling the rater where you are going should help it help you. A named occasion gives the model a rubric to grade against. The data run the other way, and this report is about how far, and why the field is harder to read than it looks.
Two things are counted here: whether an occasion is named at all, and which occasion it is. The first result is about the first question, and it is the surprising one.
Section 1Methodology
The unit of analysis is one row in the OutfitScore analyses table. I keep a row if
analysis_type is fashion or complete and a numeric overall
score can be read under the same numeric-regex guard used by seo_stats_service. The
occasion is the occasion column, a free-text string the upload may or may not carry.
An empty or null occasion is treated as "none named." Soft-deleted rows are not filtered. The
window is every qualifying row then in production:
27 September 2025 through 14 October 2026.
Two fields are in play, and they are not the same field. occasion is the label itself
(for example everyday or wedding guest). no_occasion_mode is
a boolean the analysis carries when the user explicitly chose not to specify one; it is present on
only 4,499 rows. Sections 2 and 3 use the occasion label; Section 6 uses the boolean.
They are reported separately because they are not interchangeable.
wedding guest (n = 132)
and party (n = 120) clear it narrowly; the report prints the n beside every cell.
Occasions under the floor are named as too thin to rate, not merged upward.
Section 2Naming an occasion is associated with a lower score
Here is the whole first result in one split. The 2,935 rows with no occasion named average
71.4. The 18,843 rows that name one average 65.7. The empty-occasion
group is not a small curiosity; at 13.5% of the corpus it is larger than every named occasion
except everyday and general.
| Group | Rows | Share | Mean score |
|---|---|---|---|
| No occasion named | 2,935 | 13.5% | 71.4 |
| Occasion named | 18,843 | 86.5% | 65.7 |
The 5.7-point difference runs opposite to the "give the model more context" instinct. The most likely mechanism is structural in the rubric, not about the outfits: scoring includes an occasion-appropriateness pillar, and an outfit with no declared occasion cannot lose points for being wrong for one. The model has less to penalise. This snapshot can show the association and name the mechanism as a hypothesis; it cannot isolate it.
Section 3The named ladder
Among occasions that clear n ≥ 100, the spread is wide. Wedding guest leads at 73.3 and
puts 32.6% of its rows at 85-plus. At the other end, daily office wear averages 61.3
and sends 43.8% of its rows below 60.
| Occasion (exact string) | Rows | Mean | Median | 85+ | Below 60 |
|---|---|---|---|---|---|
everyday | 9,061 | 64.9 | 65 | 10.8% | 26.3% |
general | 6,175 | 67.7 | 68 | 15.8% | 19.4% |
general style | 495 | 61.9 | 65 | 0.2% | 31.9% |
streetwear | 279 | 64.9 | 65 | 2.5% | 21.5% |
school drop off or pickup | 222 | 62.7 | 63.5 | 0.9% | 25.2% |
daily office wear | 146 | 61.3 | 62 | 3.4% | 43.8% |
date night | 138 | 66.2 | 67 | 11.6% | 29.7% |
weekend brunch | 134 | 65.9 | 67.5 | 6.0% | 23.1% |
drinks with friends | 133 | 63.9 | 65 | 5.3% | 24.1% |
running errands | 132 | 66.1 | 65 | 2.3% | 24.2% |
wedding guest | 132 | 73.3 | 78 | 32.6% | 19.7% |
party / clubbing | 123 | 68.3 | 72 | 2.4% | 8.1% |
party | 120 | 68.8 | 78 | 19.2% | 15.0% |
party or clubbing | 106 | 56.7 | — | — | — |
The pattern at the top is that a well-defined, dressed context scores high. Wedding guest and the two party strings are the only named occasions above 68. The pattern at the bottom is that a broad, low-stakes context scores low: office wear, school run, everyday. A context that carries a clear dress code grades better than one that carries none, even though naming any context grades worse than naming none at all. Both things are true at once, and Section 5 shows why the second fact is softer than it looks.
Advertisement
Section 4The league table: formal high, work low
The exact strings are many and small. Grouped by intent — a rule disclosed below — a cleaner order appears. Formal occasions lead, work trails, and the most common context, the broad casual one, sits just under the middle.
| Occasion family | Rows | Mean |
|---|---|---|
| No occasion named | 2,935 | 71.4 |
| Formal (wedding, gala, cocktail) | 201 | 69.6 |
| General / versatile | 6,673 | 67.3 |
| Casual (everyday, errands, brunch) | 9,697 | 64.9 |
| Unclassified strings | 1,117 | 64.9 |
| Date | 222 | 64.7 |
| Party / clubbing | 468 | 64.0 |
| Travel | 145 | 62.9 |
| Work (office, business, interview) | 312 | 61.9 |
The family rule is a keyword map, disclosed so it can be checked: work matches
office/work/business/commute/meeting/interview; formal matches
wedding/formal/gala/black tie/cocktail/funeral; party matches
party/clubbing/club/night out/festival/concert; casual matches
everyday/casual/errand/brunch/weekend/school/uni/campus; date, travel,
and general match their words. Athletic strings (n = 8) are too thin to rate and are
withheld. The family shows the same shape as the exact table: a defined, dressed context is
associated with higher scores, and the everyday context with lower ones.
Section 5The fragmentation problem
The occasion field is free text, and the same intent arrives as different strings with different scores. This is the most important caveat in the report, because it means some of the ladder in Section 3 is an artefact of punctuation rather than of dressing.
| Same idea, different string | Rows | Mean |
|---|---|---|
party | 120 | 68.8 |
party / clubbing | 123 | 68.3 |
party or clubbing | 106 | 56.7 |
general | 6,175 | 67.7 |
general style | 495 | 61.9 |
"Party," "party / clubbing," and "party or clubbing" are the same occasion written three ways, and they score 68.8, 68.3, and 56.7. "General" and "general style" are 5.5 points apart. A report that ranked exact strings without saying so would be ranking spellings. The ladder in Section 3 is real as exact-string output — that is what the model saw and graded against — but a reader should not carry "party or clubbing scores 56.7" away as a claim about party outfits.
Section 6The no-occasion flag agrees
There is a second, narrower signal. no_occasion_mode is a boolean present on 4,499
rows, true when the user explicitly chose not to name one. It points the same direction as
Section 2: choosing "no occasion" averages 65.3 against 63.7 when
an occasion was selected.
no_occasion_mode |
Rows | Mean |
|---|---|---|
| True (no occasion chosen) | 3,607 | 65.3 |
| False (occasion chosen) | 892 | 63.7 |
The 1.6-point gap is smaller than the 5.7-point gap in Section 2 and rests on a different, sparser
subset, so it is a supporting result, not a second headline. What matters is the direction: on both
signals, naming an occasion is associated with a lower score, not a higher one. There are also 618
rows carrying a custom_occasion string — a further reminder that "the occasion field"
is several overlapping systems, not one.
Section 7What this report is not
It is not a claim that naming an occasion lowers your score, and it is not advice to stop naming one. The rows that name no occasion are different uploads with different habits, not the same uploads with a field removed. This is an observational difference between groups, not an effect.
It is not a dress-code guide. The report ranks how the model scored outfits that carried each occasion string. It does not say which outfit to wear to a wedding.
It is not live, and the exact strings are not merged. The frozen snapshot and the printed n are the whole claim.
Section 8Limitations
The corpus is voluntary and the field is free text. The 2,935 empty-occasion rows are not a random control: they may be quick tests, product shots, or uploads by people who did not want to type. Section 2 describes a difference between two self-selected groups.
The named-occasion cells are small. wedding guest (132) and party (120)
clear the floor narrowly; a handful of rows would move their means by a point. The exact n is
printed beside every cell for that reason.
Fragmentation is severe and is documented rather than repaired. "Party" appears at least three ways, "general" at least two, and 1,117 strings fit no family. Merging them would produce tidier numbers the model never wrote; the report keeps the strings separate and shows the splits.
The family rule is a keyword map, not human coding, and is not exclusive where a string matches more than one pattern. A different reasonable mapping would move a family mean by a point or two. No inter-rater kappa was computed.
The two occasion systems (occasion and no_occasion_mode) cover different
subsets and must not be combined into a single "occasion score." They are reported as two signals
that happen to point the same way.
Section 9Conclusion
On 21,778 scored outfits, 18,843 name an occasion and 2,935 do not. The unnamed rows score highest
(71.4) against 65.7 for the named — a 5.7-point gap in the counter-intuitive direction. Among named
occasions clearing n ≥ 100, wedding guest leads (73.3, 32.6% at 85-plus) and daily office wear
trails (61.3, 43.8% below 60). Grouped into families, formal leads (69.6) and work trails (61.9).
The no_occasion_mode flag agrees (65.3 vs 63.7). Free-text fragmentation means some of
the ladder is punctuation, which the report prints rather than hides. No causal lift is claimed.
The honest sentence for a journalist is: on this data, telling the rater where you are going is associated with a lower score, and the highest-scoring group is the one that stayed quiet. If you want the engine to look at your own frame, the tool is the same as it was: the free AI outfit rater. This page is the study. Pitch this URL.