← All Field Notes
· Sep 4, 2026

The Blog Picture That Never Generates a Face

Key takeaways

The picture at the top of this post was made in about four seconds by a browser running with no window open. No stock photo, and nothing in it invented by an image model. The background is a page we wrote. The person is a photograph.

That split is a rule here, and it started with a failure rather than a principle.

The video with six different men in it

We tried, once, to have an AI model generate a presenter for a sales video. That tool reads a description of a person and invents someone who matches. Which it did. Six times. Across the clips in one video the man on screen was a slightly different man each time, plausible on his own and obviously wrong in sequence.

We killed it. And the rule that came out of it is narrow and easy to follow: Michael's face is never generated. Anything else in the frame can be.

Blog hero images are built from a real photograph composited onto a rendered background, never from an AI generated face

There is one carve-out, added recently and worth stating precisely, because a rule with a fuzzy edge is a rule nobody applies. Taking an approved real photograph and re-posing it with an image model is allowed. Generating a face from a description is not. The test is whether an actual photograph of him is the input. If it is, his real face comes through the edit and only the pose changes. If the input is a sentence, you get one of those six men.

That carve-out is stills only. Video is untouched. He films himself.

How the picture is actually made

The hero is an HTML page. It takes the headline, a face name and a short list of partner logos in its address, and a headless browser screenshots it at 1200 by 630.

Three things about that are worth borrowing even if you never build one.

The headline sizes itself. Short titles get big type, long titles step down through fixed sizes. Nobody picks a font size per post, so nobody forgets to and ships an overflowing one.

Each cutout carries its own display height, because a head-and-shoulders headshot and a full standing pose do not sit at the same scale. Getting that wrong once puts his head behind the title.

And it costs nothing to run. No credits, no per image fee, no queue. That matters more than it sounds. Anything with a per unit cost gets skipped on a busy day, and a pipeline that quietly stops producing pictures is worse than one that never had them.

The bug you cannot see

Along the bottom of every hero runs a small rail of logos for the platforms that post is actually about. Michael's reasoning was simple. Show the tools we work in, consistently, and people start associating us with them.

One of those logos is a black mark supplied on an opaque white background. The template lays every logo on a white tile. So a black mark on white, dropped onto white, and it worked fine.

Except the code path it was using tried to recolour the mark using its transparency as a stencil. There was no transparency. The whole rectangle was solid, so the stencil covered everything, and the logo rendered as a plain white square on a white tile. Invisible. Not broken, not missing, not an error in any log. Just a slightly emptier picture than intended, on every post naming that company, for weeks.

Two different logo file problems produced the same invisible blank white tile on a white panel, with no error raised in either case

Days later the same blank tile turned up on a different post from the opposite cause. That logo was supplied as a white mark, drawn for use on dark backgrounds. White on white. Nothing to recolour and nothing to see.

Same symptom, opposite causes, and different fixes. One stopped recolouring. The other was repaired in the file itself, because our tiles are always white and no case here ever wanted a white mark.

The lesson is not about logos. Some defects do not announce themselves. A failed upload throws an error. A missing image leaves a broken icon. A correct process producing a blank rectangle looks like a design choice, and the only thing that catches it is somebody opening the finished picture and looking at it. Every hero here now gets opened before it goes anywhere.

Two looks, and why we log which one

There are two approved looks. A navy blazer headshot, and a cap and sunglasses shot. They alternate post by post, with two overrides: anything a stranger might land on first takes the blazer, and a hard technical post takes the cap.

That alternation exists because Michael did not want to guess which one performs better. It is a running test. And a test is only readable later if you write down what each post got at the time, so every one of these posts logs its face in the same file that tracks the topic.

What this means for your business

If you are producing content regularly around the Bay Area, the picture is not decoration. It is most of what decides whether anyone reads the words.

Three things to take from this. Put a real face on it, yours, not a stock model and not a generated one, because people can tell and it costs you trust you never see leaving. Build it from a template so it takes seconds instead of an afternoon, since friction is what kills a content habit. And look at what came out before you publish, because the failures that survive longest are the ones that look fine.

Want this built for you

We build content systems for small businesses that produce the whole package, words and pictures and posting, without a designer in the loop for every post. If you want a GHL consultant in the Bay Area who builds the machine instead of just running it, start at optechsol.llc.

Want this working in your business?
Get my plan ← Back to all Field Notes