09 May 20264 minProduct

Why we removed the heart button.

We took out the button that asked users to "like" outfits — and the recommendation engine got 18% better. A note on the cost of feedback you didn't ask for.

For the first six months of closed beta, every outfit suggestion shipped with two small buttons — a heart and an X. We thought we were collecting signal. We thought we were teaching the algorithm to understand taste.

What we actually collected was availability bias. Users tapped hearts for outfits they happened to be in the mood to imagine wearing, not outfits they'd actually wear. The algorithm dutifully learned to recommend "mood-board" outfits — interesting, photographable, occasionally absurd — instead of practical ones.

We removed both buttons. The only signal we kept was did you wear it? — a single tap the next morning, opt-in. The model still has fewer data points per user, but each one is now a fact rather than a fantasy. Outfit-completion rate is up 18% across the cohort.

If your machine-learning product has a "thumbs up" button, ask what behaviour it actually rewards. Often it's the behaviour of clicking, not the behaviour you wanted.

22 Apr 20266 minEngineering

On naming colours.

A 30-shade fashion palette and how Outfyx decided "burnt orange" was a real colour and "#A6471D" was not. CIE-LAB perceptual distance, K-means, and the death of the hex code as a noun.

Most apps that show you a colour show you a hex code. We considered this and decided against it. A user looking at their charcoal coat does not want to be told it's #36454F. They want to be told it's charcoal.

The fashion industry has spent two hundred years naming colours — burgundy, ochre, taupe, ecru, sage. Each carries cultural baggage that a hex code does not. "Cherry" is a different thing than "#C8102E", even when they're the same pixel.

We curated a 30-shade palette of fashion-relevant colour names. When the AI extracts a dominant colour from a garment, it scores its distance from every anchor in CIE-LAB perceptual space (using the ΔE76 formula) and assigns the nearest. RGB Euclidean distance was tested first; it kept assigning blue garments to "Grey." LAB has been correct on every test image.

The palette is hand-tuned, not generated. We argued for an hour about whether "burnt orange" was worth a slot. It was.

03 Apr 20265 minAlgorithm

What the algorithm got wrong this month.

Seven suggestions Outfyx made that we couldn't defend. We publish these every month so the engine learns in public. No, you cannot turn this section off.

This is the most uncomfortable thing we publish. Every month we take seven outfit suggestions the algorithm generated that we — the studio — couldn't defend. We print them here without explanation, then publish the engineering note describing what we changed.

April's mistakes:

1. White trainers with a black-tie invite. (Calendar parser missed "black tie" as a dress code.)

2. Wool coat over a swim shirt in 28°C Lisbon. (Weather threshold was set in °F by accident.)

3. Three shades of beige in one outfit. (Colour-monotone penalty was too lenient.)

4. Boat shoes on a Tuesday in a meeting. (Calendar event was titled "lake meeting." It was a metaphor.)

5. Same shirt as yesterday. (Recency check failed when the previous-day record was missing.)

6. Velvet blazer at 11am on a Wednesday. (Formality scoring did not factor time of day.)

7. Two hats. (We do not know how this happened. We have added a constraint against two hats.)

The diffs are on our internal review board. They will be in the May build.

18 Mar 20268 minDesign

The brief our developer ignored.

We asked for sharp 90° corners. We got 4px radius. A note on how design briefs survive contact with implementation, and why we kept the version with rounder corners anyway.

The original brief specified 0px corner radius on every UI element. Sharp. Architectural. Editorial. Our developer shipped 4px. We were going to fight it.

Then we used the app for a week. The 4px corners read as sharp at every screen size we cared about, and they didn't feel hostile at the precise moments where 0px did — particularly in the "delete account" confirmation. Sharp corners on destructive actions feel punishing. A small radius softens an action without compromising the editorial tone.

We kept the 4px. The brief was wrong; the implementation was right.

The general lesson: the developer is closer to the running product than the designer. When they push back, listen. Override only if your principle is load-bearing, not aesthetic.

02 Mar 20263 minPricing

Why we charge $1.99.

Not $9.99. Not $14.99. A note on price psychology, the manipulative aesthetics of "ending in 9", and how we settled on a number that does not pretend.

Two pricing principles. First: ending prices in 9 is a manipulation that has worked since the 1880s and works on you whether you know it or not. Second: we wanted to use the manipulation anyway, because pretending we don't isn't honesty — it's just expensive.

We settled on $1.99 weekly, $4.99 monthly, $39.99 yearly. The trailing 9s are there. We don't pretend they're not. What we don't do is round prices to feel "premium" ($12.00, $50.00) when the underlying cost is lower — that would be a different lie.

Yearly Pro is $39.99, or about $3.33 a month. That's lower than most coffee orders. It's higher than free. It's where we landed.

14 Feb 20267 minCulture

A wardrobe is a private archive.

We do not want a "social closet." Here's the seven-minute argument for why your clothes are a diary, not a feed.

Every other wardrobe app we tested has a social layer. Friends can see your closet. Friends can like your outfits. There's a feed.

We thought about doing this. It would have been easier to grow. We decided against it for one reason: your clothes are diary entries. The dress from your sister's wedding. The shirt you wore the day you got the job. The jacket that doesn't fit anymore but you can't bring yourself to give away.

A wardrobe is not a feed. It's an archive. Publishing it to friends — even friends — changes what it is.

So Outfyx has no social layer. No public profile. No "share to story" button. You can show someone your closet by handing them your phone. That's it.

This decision will cost us viral growth. It will also let us tell users, truthfully, that their wardrobe is private.

30 Jan 20264 minEngineering

Why we run the AI on a single GPU.

Most fashion-AI products burn money on inference. We don't. A short note on lazy model loading, FAISS, and a hostile attitude toward GPU spend.

The pipeline at the heart of Outfyx — Fashion DETR, BEN2, SAM2, CLIP, Real-ESRGAN, K-means colour, FAISS recommendation — runs on a single GPU. One. With lazy model loading, idle eviction, and a 300-second unload timeout, we keep peak VRAM under 8 GB.

The engineering instinct is to scale horizontally: more replicas, more redundancy, "infinite" inference capacity. The financial instinct is to scale vertically: fewer machines doing more work. We picked the financial instinct.

The trade-off: at 99th-percentile traffic, requests queue. We've decided that adding 400ms of latency for the highest-traffic minute of the day is acceptable if it means our monthly GPU bill stays under $200. So far it has.

This is the kind of decision a venture-backed company would make differently. We are not venture-backed. We are a studio.

11 Jan 20265 minStudio

We are not a startup. We are a studio.

The first dispatch. Why we set up the company as a design studio first, software product second, and what that means for what we will and won't ship.

This is the first dispatch. Hello.

Outfyx Studio is a design studio. Our first product is Outfyx — the wardrobe-and-stylist app you might be reading this on. The studio has other clients. Outfyx is the one we work on every day.

We chose this structure deliberately. A studio publishes opinions. A startup ships features. A studio refuses work it finds boring. A startup pivots. A studio is small forever. A startup either gets bigger or dies.

We are small forever. We will never raise a Series B. We will never have 200 employees. We will never have an "engagement team." If this is the wrong size for you to want to use, that's understandable.

What you'll get instead: a stylist app that we actually maintain, that we publish dispatches about, that we tell you when it gets things wrong. A small studio that takes a long view.

Welcome.

Press inquiries — admin@outfyx.com