Icovela · Solo product · Live
Icovela generates complete app icon sets. The hard part was never making a pretty picture — it was making the same instruction produce the same look, ten styles deep, every single time.
Icovela's users are people shipping their own products: developers who have never had to think about icons, and designers who know exactly what they want and would rather not draw it six times. Launch day needs six images, not one, and all six have to read as the same object across a 16× scale difference.
512
Primary, Alt A, Alt B
96
Notification
60
Small
32
Favicon
Drawn to true relative scale. Detail that carries the 512 is gone by the 32 — so the set has to be designed, not just generated.
Ask for six related assets, get six unrelated ones.
Light, perspective and palette move on every regenerate. Invisible on one icon, fatal across a set.
Prose is the wrong instrument for an aesthetic — for beginners and professionals alike.
The job isn't “make me an icon.” It's “make me six icons that look like the same designer made them.”— the sentence that decided the entire architecture
Choosing shouldn't be typed. Nobody describes an aesthetic in prose reliably, and plenty of users don't yet know which aesthetic they want — so the styles are decided in advance and the user points at one. Holding a style is my job either way: same prompt twice, two different pictures. For one illustration that randomness is the feature; for a set it's the defect. So the object of design was not an image generator but a control system on top of one.
Nobody can write “frosted glass over an opaque back layer.” Everybody can point at it. Every aesthetic choice is a pick, never a sentence.
If an option only has one right answer, it isn't an option. It's a default I owe the user.
A stochastic system fails sometimes. Pricing has to assume that from day one, not patch it later.
The product's own surface: off-white ground, a single accent, no borders and no shadows. This case study page is built in that same language on purpose.
Each one trades user freedom for predictable output. That trade is the product.
The prompt box as the first move.
The style is settled before the user types. Their phrasing cannot destabilise it.
Transparency. Every style carries a reference grid, attached server-side, shown nowhere.
Prose describes intent. An image is the intent.
300px of canvas, permanently.
Comparison instead of linear refinement. Nothing overwrites anything.
Revenue on every failure. Balance check and debit are one atomic operation.
Legible pricing: 10 credits, one icon, no asterisks.
Every style is a specification debugged against a system I can't step through. I versioned each one, so the cost is on record.
Prompt versions per style, from my iteration log. Which style takes one round and which takes eleven is unpredictable — hence one fixed test for all of them.
Upgrading the flat styles brought the outlines straight back. Half the library runs on the older model by choice — invisibly.
Ten styles, picked because they are what app icons actually look like now — the research is done, so the user chooses instead of hunting. Each one shown against unrelated subjects, because a style that only works on a camera isn't a style.
Everywhere else the reference image is mine and the subject is the user's. Here the roles swap: they supply the object, the style stays fixed. Same engine, no new interface — only possible because the reference image was already the unit of control.
A generation lands anywhere in the blue. No signal tells me where.
Too long for a spinner to feel honest, too short for a progress page. With no completion signal, a percentage bar would be a lie.
So the loader is the Icovela mark: bobbing 5% over 2.4s, three bumps breathing 1× to 1.25× at 0.22s stagger. Branded, alive, honest about not knowing how long is left.
Early rounds validated single lucky outputs. The signal that mattered — does this hold across unrelated subjects — came last.
One style absorbed ten rounds before I accepted I was solving the wrong problem. A cap on attempts would have got me there sooner.
I track the funnel but not per-style keep-versus-discard rates — the one number that would tell me which style to work on next.
Easiest way to check that claim is to go and try to break it.