The photo problem: getting usable pictures out of a business that won't take them
This update was drafted on a schedule by the AI I build with, from real project notes — part of the vibecoding experiment this blog documents.
So here's the one part of building a website from a business's Google reviews that I still don't have a clean answer for. The pipeline writes the copy from what customers actually said. It picks a palette, builds the layout, sets the type. It does all of that in a couple of minutes and most of it is genuinely good. And then it needs about five photographs of the real place, and there is nothing in the machine that can produce those, and the business owner does not want to take them.
I've written before that photos are the ceiling on this whole approach — the input the pipeline can't fake. That post argued the why. This one is the grubby practical version: what I actually do when a plumber or a nail salon or a taco spot needs pictures and has none I can use.
Why not just generate them?
Because it's a lie about a physical place someone is about to drive to.
An AI interior shot of "a warm, inviting dining room" is not the dining room. A stock photo of a mechanic's bay in a different country is not the bay. The moment a customer walks in and it doesn't match, you haven't given them a nice website — you've given them a reason to distrust the business before anyone's said a word. A site with three honest, slightly-crooked phone photos beats a site with ten beautiful fake ones, every time, and it isn't close.
The one exception I allow: generated or abstract imagery that is obviously not a photograph — a textured background, a pattern, an illustrated icon set. That's decoration and everyone reads it as decoration. The problem is only ever photos that pretend to document something real.
What counts as "usable"
I've had to lower this bar a lot, and lowering it was the right call.
Usable means: shot on a phone, in landscape, roughly in focus, of a real thing that belongs to the business. That's it. It does not mean styled, lit, or good. A slightly dim photo of the actual storefront does more work than a perfect stock image, because its job isn't to be beautiful — its job is to say this is a real place and here's what it looks like so you recognise it when you arrive.
What I actually need, in priority order:
- The exterior, ideally with signage, so someone can spot it from the road.
- The space you walk into — reception, the counter, the main room.
- The work or the product — a finished haircut, a plated dish, a repaired fence, the shelves.
- A person who works there, even one, even slightly awkward. Faces do something no room shot does.
- One detail — the espresso machine, the tools on the wall, the tank of lobsters. Something specific to them.
Five photos. One of each. If I get those, the site is done. If I get two, the site has two photos and a lot of honest whitespace, and that's still fine.
Getting them out of someone who doesn't want to
This is the actual skill, and most of it is removing excuses one at a time.
"I don't have a good camera." Their phone is a good camera. The photos on their own Google listing were taken on it. I'm not asking for a shoot, I'm asking for the same thing they already do for Instagram, pointed at five specific things.
"The place is a mess right now." Good — a working business looks like a working business. I'm not selling pristine, I'm selling real and open. The messy version photographs as authentic. The over-tidied version photographs as a business that closed.
"Send me a list and I'll do it later." Later never comes. What works better: a numbered list of exactly five shots, framed as "reply to this text with five photos, took my last client four minutes." Specific, small, and with a number attached so it feels finite.
They genuinely won't. Then I use what exists. Google Business Profile photos — theirs and customers' — are already public and already associated with the business. Customer photos in reviews are often better than anything the owner would've sent, because they're of the thing the customer cared enough to photograph. I'll also check whether they've been tagged anywhere, whether a local paper covered them, whether there's a photo on a supplier's site. It's scavenging, but it's honest scavenging — every image is of the real place.
Nothing usable exists at all. Then the site ships with no interior photography and leans on what it does have: the logo, a strong type treatment, the review quotes set large, a map, a colour field. A confident text-forward site with no fake photos reads as deliberate. A site with one bad stock photo reads as cheap. So when in doubt, zero beats one.
The thing I'd tell another builder
The temptation, when you've automated everything else, is to automate this too — to let the image model fill the hole so the pipeline stays end-to-end. Don't. The whole pitch of building from real reviews is that it's grounded — the customer's actual words about the actual place. The second you drop in a synthetic photo of a room that doesn't exist, you've broken the one promise that made the approach worth anything.
The photo step is manual on purpose. It's a text message to a real person asking for five real pictures, and sometimes it's a slow no, and that friction is load-bearing. It's the part of the process that keeps the output tethered to something true. I'd rather ship a site with gaps than a site that's quietly lying about what's behind the door.
This one's auto-drafted from my notes on a schedule. If a number isn't in the notes, it doesn't show up here — I'd rather leave a blank than make something up.