Every card in RealFeedApp has a cover image. They aren't fetched from the articles — publishers' images come with rights I don't have — so the app uses its own bank, generated ahead of time, one pool per topic.
I generated that bank once, shipped it, and this month threw all of it away and started over. Twice over, actually, because there were two separate failures and only the first one was my fault in the obvious way.
The original prompt asked for a dark, moody look — very dark near-black background, generous negative space. In a preview grid at full size, the results were genuinely nice. Restrained, editorial, not the usual glowing-blue-circuit-board thing.
Then I looked at the actual feed.
Cards render as tiles a bit under 400 pixels wide. A small object floating in a large field of black, scaled down to a tile, is a black rectangle. Not a bad image — no image at all. The model had done precisely what I asked: it put a modest subject in a lot of empty darkness. Negative space is a compositional virtue at poster size and a bug at thumbnail size.
The lesson is dull and I'll probably need it again: prompt for the size the image will be seen at, not the size you review it at. I was approving art in a grid of large previews and shipping it into small tiles, and never once compared the two. The rule that replaced the old one is three words long — brighter, higher contrast, subject filling the frame edge to edge.
The rewrite asked for documentary photography. The first batch came back with something I didn't expect: several images contained a coloured band along the bottom of the frame with a headline in it. Invented words, mangled letterforms, confident typography. One read TROOLDOGS NEWS
.
Three images out of fifteen. Not a fluke, a pattern.
The cause was in the prompt, and it was three words working together. I had asked for an editorial look, described the images as news features, and required that the topic's accent colour appear somewhere in the frame. Consider how a model satisfies all three at once. Editorial plus news plus a mandatory colour block has an obvious solution, and the model found it: a news graphic with a chyron. It wasn't malfunctioning. It was being efficient.
Deleting those three requirements removed the headlines completely. The accent colour turned out to be pointless anyway — the topic colour in the feed comes from CSS, so the image never needed to carry it.
An image model resolves your requirements literally and jointly. Each word looked harmless alone. Together they described a thing I did not want, and that thing was the cheapest way to satisfy the set. When you get a strange recurring artifact, it's usually not the model being weird — it's a solution to constraints you didn't realize you'd written.
I had assumed a style was a layer: keep the concepts, change the lighting and rendering. It isn't.
The old dark bank drew things like a stream of glowing tokens flowing into a dark portal. You cannot photograph that. There's no documentary shot of a token stream, and asking a model for a photograph of one gets you back exactly the render you were trying to leave behind. Switching to photography meant rewriting what each image depicts, not just how it's lit — a real object, in a real place, that a person with a camera could have stood in front of.
So a style isn't a filter over a fixed set of ideas. Each style needs its own list of subjects, and changing style means redoing the conceptual work, not just the rendering pass.
If your app will ever charge money, check the licence of the image model before you generate a few hundred files. Several of the most popular and best-looking checkpoints are explicitly non-commercial, and that's not something you want to discover after the art is shipped and the store listing is written. There are permissively licensed models that are entirely good enough for this job — but the licence has to be a selection criterion up front, not a thing you look up later. The new bank is live in the feed. Same idea as before — a pool per topic, and a given article always gets the same image, so the picture doesn't shuffle under you when the feed refreshes — but composed for the tile it actually lives in.
You can see it at ** realfeedapp.com**. If a cover ever looks wrong for its story, that's the failure mode I'm still hunting: the images are chosen per topic, not per article, so a strong photo attached to the wrong kind of story is the thing most likely to read as sloppy. Tell me which one and I'll pull it.