Free
Blog

AI product photography holds a catalog together when every SKU is edited into one master frame

Share
  • https://havincy.com/blog/ai-product-photography-agency-master-frame
AI product photography holds a catalog together when every SKU is edited into one master frame
Google's Vertex AI documentation for Gemini 3 Pro Image, the model most tools list as Nano Banana Pro, prices a 2K output (about 4 megapixels) at the same 1,120 output tokens as a 1K output (about 1 megapixel), so an agency rendering a client's 30-SKU skincare catalog at 1K to "save budget" is paying full price for a quarter of the pixels it will need the moment the client asks for zoom on the product page. The saving was never there.

The bigger cost isn't resolution, though. It shows up when the client lines up those thirty packshots on one collection page and sees thirty slightly different shoots: the serum lit from the left, the toner from above, the cleanser on a warmer stone with a shadow twice as long. Nobody asked for thirty interpretations of "premium minimal." They approved one hero image and assumed the rest would match it.

The number: 1K and 2K cost the same tokens, and what that says about how agencies spec AI packshots


The figures come from the Gemini 3 Pro Image model page on Google Cloud (https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro-image): 1K is roughly 1 MP at 1,120 output tokens, 2K is roughly 4 MP at the same 1,120 tokens, and 4K is roughly 16 MP at 2,000 tokens. Each input image adds 560 tokens.

Read that as a spec sheet, not a pricing curiosity. Below 2K there is nothing to save on output, so 2K is the floor for any catalog master. 4K costs more, but not four times more, and it is the tier you pick on purpose for hero SKUs that get a zoomable gallery. The input side matters too: a request carrying a master frame plus a SKU photo is 1,120 tokens of input before you write a word of prompt. That is still cheap next to re-rolling a SKU five times because it came back lit wrong.

Which is where the real budget leaks. Agencies tend to optimize the price of one render and ignore the number of renders per approved image. A workflow that lands SKU twelve on the first or second try at 2K costs less than one that needs six attempts at 1K, and it is the only one that produces a catalog that looks like a single shoot.

Why per-SKU text prompts drift


Most agency catalogs drift for one reason: each SKU starts from a fresh text prompt. "Amber glass serum bottle on pale stone, soft side light, minimal, beige background" reads the same across thirty prompts, but the model resolves it from scratch every time. Text describes a category of image. It doesn't pin down a specific one.

What re-rolls between generations:

Light direction and softness: "soft side light" can arrive from the left on one SKU and the right on the next, with a different falloff across the label.
Surface: the stone's grain, warmth and reflectivity change, and so does how much of it sits in frame.
Shadow: length, angle and edge softness shift, which is the first thing a client notices on a grid.
Camera height: a few degrees higher and the bottle's shoulder and cap read differently, so tall and short SKUs stop sharing a horizon.
Label text: the model redraws typography on every pass, and small print is where it slips.

Adding adjectives doesn't fix this. Every extra descriptor is one more thing the model interprets independently per SKU. Consistency has to come from pixels, not words.

Step 1: Get one hero packshot approved as the master frame


Before producing any SKU at volume, produce one image the client signs off on, and treat it as a locked asset rather than a draft. Pick the SKU with the hardest material (clear glass, a metallic cap, a matte tube with fine print), because it exposes lighting problems a simple jar would hide.

Lock five things in that frame and write them into the job file:

Light: direction, softness, and where the highlight sits on the product.
Surface: the exact plate, its color and texture, how much of it is visible.
Background plate: tone, gradient, any prop and its position.
Camera height: the product's horizon line and perspective.
Brand colors as hex values, not names. Black Forest Labs' FLUX.2 overview (https://docs.bfl.ml/flux_2/flux2_overview) lists hex codes as a way to control brand color, and writing the exact value removes one more thing for the model to guess.

Render the master at 2K, or 4K if the client's product page template has zoom. Get approval in writing. From this point the master frame is the shoot, and every other image is a variation of it.

Step 2: Edit each SKU into the master


Each SKU now becomes an edit, not a generation. Every request carries two references: the approved master frame and a clean photo of the actual SKU. A flat phone shot on white works, as long as the label is sharp and the shape is accurate. The prompt describes only the swap: replace the bottle in the first image with the product in the second image, keep light, surface, shadow, background and camera position identical, preserve the label exactly.

That swap-only prompt is the opposite of the per-SKU prompt above. It doesn't redescribe the scene, because the scene already lives in the master's pixels. It says what changes and lists what must stay.

Reference limits shape the setup, so check them before building the batch:

Gemini 3 Pro Image accepts up to 14 images per prompt, with a 7 MB limit per file for inline or console upload and 30 MB from Cloud Storage, according to the Vertex AI model page. Compress SKU photos first, since a raw 12 MB phone shot won't go through inline.
FLUX.2 [pro], [max] and [flex] take up to 8 reference images via API (10 in the playground), [klein] up to 4, and [dev] is recommended at 6 or fewer, per the BFL overview. FLUX.2 output tops out at 4 MP, which covers 2K-class masters; a 16 MP zoom tier means Gemini 3 Pro Image at 4K.

You rarely need more than two or three references per SKU. A third earns its slot when a product has a back label or a distinctive closure you want held, so add a close-up of the cap or side panel. Spare slots should carry information about the product, not more mood images.

Step 3: Batch by lighting family, then derive crops from the master


Not every SKU belongs in the same master. A clear glass dropper, an opaque white tube and a matte black jar respond to the same light differently, and forcing them through one frame gives you a blown-out tube or a jar with no edge definition. Group the catalog into lighting families (clear or translucent, opaque light, opaque dark, metallic) and approve one master per family, each derived from the first master so surface and camera height stay shared.

Run each family as a batch. Gemini 3 Pro Image supports batch inference on Vertex AI, which suits a 30-SKU run where every edit is queued against the same master instead of prompted one at a time.

Then the crops. The ad set wants 4:5 for feed, 1:1 for marketplaces and thumbnails, and 9:16 for Stories and Reels. Gemini 3 Pro Image supports all three ratios among its list, but generating each crop as a new image puts you straight back in the drift problem: three ratios, three slightly different lights. Compose the master with enough headroom and side room to crop from, then cut the 4:5, 1:1 and 9:16 versions out of it. Extend the canvas with an edit only when a ratio truly needs more background than the master holds, and leave the product pixels untouched when you do.

Step 4: Coverage pass before the client sees anything


Don't assume label text survives an edit. In practice, small type still distorts, especially ingredient lists and volume markings, and neither model's documentation promises otherwise. Put a coverage pass on the schedule, run by someone who didn't generate the images:

Label text fidelity: compare every word against the SKU photo at 100% zoom, including product name, volume and claim lines. Anything wrong goes back to edit, or to a retoucher in Photoshop with the real label artwork.
Cap and closure geometry: dropper bulbs, pump heads and flip caps are where shapes melt. Check them against the clean SKU photo.
Color against hex: sample brand color areas and the product itself against the values in the job file.
Shadow direction and length: lay every SKU in a family side by side at thumbnail size. A mismatched shadow jumps out on a grid faster than in a single image.
Horizon line: the base of every product should sit at the same height across the family.

Reject at this stage, not after the client flags it. One SKU pulled back internally costs a re-edit. One the client finds costs trust in the other twenty-nine.

Where Havincy fits


Havincy keeps the pieces of this workflow in one place without pretending to automate the judgment. Brand kit stores the client's logos, colors, tone and guidelines and applies them to every creation, so the hex values from Step 1 live with the client account rather than in a loose text file. The Product shot and Product ad skills are the image workflows for packshots and ad variants. Nano Banana Pro and FLUX.2 Pro sit in the same workspace, with Seedream 5.0 Pro and GPT Image 2.5 available if you want to test an alternative on a difficult material. Once the catalog is approved, Publishing schedules the social rollout and measures how the crops perform. Teams running their own batch scripts can reach the same models through the Havincy API.

The master frame, the lighting families and the coverage pass are still your team's calls. The difference is not exporting between four tools to make them.

FAQ


What resolution should AI product photos be for ecommerce?
Render masters at 2K at minimum. On Gemini 3 Pro Image, 2K (about 4 MP) costs the same 1,120 output tokens as 1K, so there is nothing to save below it. Use 4K (about 16 MP, 2,000 tokens) for hero SKUs on product pages with zoom, and check your store platform's own image guidelines for upload limits.

Can AI keep label text accurate on product photos?
Often, but not reliably enough to skip checking. A sharp photo of the real SKU as a reference helps a lot, and a swap-only prompt that asks to preserve the label helps more. Small text still distorts, so every image needs a 100% zoom check against the real packaging, and some labels will need a retouch with the original artwork.

Should we edit from a master frame or fine-tune a product LoRA?
For a catalog where many products have to share one consistent scene, editing into an approved master is faster to set up and needs no training. A LoRA trained on one product makes more sense when a single SKU has to appear across many different scenes and campaigns over months.

When does a real photo shoot still win?
When the material is the selling point and hard to fake: complex liquids, fabric drape, jewelry with real refraction. Also when packaging imagery has to be exact for a regulated category, or when the client already has a studio day booked that covers the range. Many agencies shoot the clean SKU references for real and use AI only for the scene, which is exactly the workflow above.


← All articles