Everything automated except the judgement
Somny sells itself through landing pages, one for each kind of picture people go looking for. I built the pipeline that researches a topic, writes the page, generates every image on it, and hands me one proof to approve.
Founder · AI pipeline · Prompt design · Interface design
The pictures were the bottleneck
Somny needs a landing page for every kind of picture people search for, and each page carries eighteen images that all have to show the same recognizable characters.
The copy was never the slow part. Sourcing eighteen on-brand images was, because every one of them has to be generated, chosen, and cropped to a slot of a fixed size.

Left one judgement in the loop
I could have let it pick. It holds the prompt, the character and the four candidates, and best-of-four is exactly the call a model will make confidently. I kept the choice because confidently wrong is the failure that reaches a customer, and this is the one step where looking is faster than checking.
It generates four candidates and picks none of them. Choosing is the job I kept.
Six pages, every one a draft first
I took six pages through end to end. Four are live and I left two sitting as drafts, because I made the pipeline write into the CMS as a draft and never straight to the site. I made that the default rather than a flag, because the only thing worse than a slow page is a wrong one nobody read before it appeared.

Locked the crop to the slot
Every slot has a fixed shape, and the crop box is locked to it with a pixel floor underneath. I would rather make a bad crop impossible than catch one later, because catching it later means spotting a stretched hero after it is live and going back around for it.

Cast the characters by rule, not mood
Nine people are cast across all six pages, and the casting is written as rules rather than picked each time: weights, so some turn up more often, and topic gates, so pet pages get pets and professional pages get adults.
Left to choose freely, the model casts its favorite, and then every page looks like the same person.

Mapped every slot to its CMS field
The last step writes the whole page into the headless CMS I set up, in one call: eighteen images and every block of copy landing where it belongs.
I did that mapping by hand, field by field, because a page arriving half-assembled costs more than one never generated at all.
What it cannot do is choose
Six pages went through it and 288 candidates were generated to fill them. One in four survived onto a page. Everything up to that ratio runs without me.
The choosing is the part I did not automate, and it is still the step that decides whether any of it was worth generating.
I wrote the six skills, designed and built the review interface, wrote the prompt and casting rules, and configured the headless CMS it publishes into.



