JSON-Structured Image Decomposition: Apply Client Feedback to Event Concepts Without Starting Over
What This Builds
You generate a concept image for a corporate gala: midnight blue linens, gold centerpieces, candlelight ambiance. The client loves the layout but wants blush and white instead of blue and gold, and "something softer — less dramatic lighting." With free-text prompting, you'd regenerate the entire image and likely lose the table arrangement, the room proportions, everything that was working. With this technique, you extract a structured JSON blueprint of the image, change only the color and lighting fields, and re-apply it to the original. The rest of the composition stays intact.
This is not a design tool replacement. It's a client feedback workflow: one round of revisions takes 10 minutes instead of 30, and you keep creative control over what changes.
Prerequisites
- Experience generating event concept images with Gemini or Midjourney (Level 3)
- Advanced subscription ($20/month) for best results — Sign up
- The original concept image saved locally (not just a screenshot)
- A free Advanced account works for basic color swaps; complex material or lighting changes produce better results on paid tier
The Concept
When you ask an AI image editor to "change the linens from blue to blush," it interprets that as a loose instruction and rewrites the scene. The camera angle shifts. The centerpieces change shape. The lighting mood drifts. That's because the model treats your prompt as a description of what the new image should look like, not a surgical instruction about what to keep.
The JSON technique works differently. First, you ask Gemini to analyze your image and describe every visual element as structured data: each object's name, color, material, position, and size. This creates a machine-readable inventory of the image. Then you edit only the specific fields you want changed, paste the modified JSON back alongside the original image, and tell Gemini to apply it. Because the JSON explicitly defines every element (including everything you are NOT changing), the model has a contract to honor, not just a suggestion to interpret.
Think of it like a floral brief you'd send to a vendor. Vague instructions produce vague results. A specific written spec with exact color codes, quantities, and placement instructions produces what you actually wanted.
Build It Step by Step
Part 1: Generate Your Base Concept Image
Start with a concept image you've already created in Gemini for a client event. If you don't have one yet, generate it now.
Prompt to generate a starting concept:
Corporate awards dinner, 200 guests, round tables of 10, hotel ballroom setting,
midnight blue and gold color palette, tall floral centerpieces, candlelight and
warm uplighting, elegant and formal tone, wide-angle view showing full room layout
--ar 16:9
Save the image locally before doing anything else. You'll need the original file for every revision cycle. Once you have the base image, move on to extraction.
Part 2: Extract the JSON Blueprint
Open a fresh conversation in Gemini at gemini.google.com. Upload your concept image and use this extraction prompt:
Analyze this event concept image and output a structured JSON object that describes
every visual element. For each element, include these fields:
- name
- colour (use descriptive hex or plain language)
- material
- position (foreground / midground / background, and left/center/right)
- size (dominant / medium / small / accent)
- quantity (if applicable)
Also include a separate "lighting" block with:
- overall_mood
- primary_source
- colour_temperature
- intensity (soft / moderate / dramatic)
- special_effects
And a "room" block with:
- space_type
- ceiling_height (visible / tall / low)
- floor_covering
- wall_treatment
- camera_angle
Output only the JSON. No explanation.
Gemini will return something like this (abbreviated):
{
"elements": [
{
"name": "table linens",
"colour": "midnight blue",
"material": "satin",
"position": "foreground, center",
"size": "dominant",
"quantity": "multiple"
},
{
"name": "centerpiece floral arrangement",
"colour": "white and gold",
"material": "fresh flowers, gold vase",
"position": "midground, center",
"size": "dominant",
"quantity": "multiple"
},
{
"name": "charger plates",
"colour": "gold",
"material": "metallic",
"position": "foreground, center",
"size": "medium",
"quantity": "multiple"
}
],
"lighting": {
"overall_mood": "dramatic and formal",
"primary_source": "candlelight with warm uplighting",
"colour_temperature": "2700K warm amber",
"intensity": "dramatic",
"special_effects": "candle glow, soft shadows"
},
"room": {
"space_type": "hotel ballroom",
"ceiling_height": "tall",
"floor_covering": "dark hardwood",
"wall_treatment": "neutral panels with uplighting",
"camera_angle": "wide-angle, slight elevated perspective"
}
}
Copy the full JSON output and paste it into a text file. This is your working document for all revisions.
Part 3: Make Surgical Edits for Client Feedback
The client says: "We love the layout and the tall centerpieces, but can you try blush and white instead of blue and gold? And softer lighting — our executives prefer a warmer, more relaxed feel."
Open your JSON file. Change only these fields:
"table linens": {
"colour": "blush pink" // was: midnight blue
},
"centerpiece floral arrangement": {
"colour": "white and blush" // was: white and gold
},
"charger plates": {
"colour": "brushed gold" // no change — keeping gold accents
},
"lighting": {
"overall_mood": "warm and intimate", // was: dramatic and formal
"intensity": "soft" // was: dramatic
// leave primary_source and colour_temperature unchanged
}
Everything else in the JSON stays exactly as returned. Table arrangement, room structure, ceiling height, camera angle, floor covering: untouched.
Part 4: Re-Apply the Modified JSON to the Original Image
Open a new Gemini conversation. Upload the original image (not the extracted JSON, not a previous revision). Paste the modified JSON and use this re-application prompt:
Modify this event concept image based on the following JSON prompt. Apply only the
changes shown in the JSON. Preserve all other visual elements exactly as they appear
in the original image, including the room layout, table arrangement, ceiling details,
and camera angle.
[paste your modified JSON here]
Gemini processes both the image and the JSON contract and produces a revised version. The result shows the blush linens and softer lighting while the table arrangement, centerpiece height, and room proportions carry over from your original.
Real Example: Corporate Gala Color Revision
The situation: You're presenting concept images to the marketing director at a regional bank for their 200-person annual awards dinner. You've generated a strong base concept with midnight blue and gold. She loves the overall design but the CFO wants a "softer, more feminine" palette after seeing the initial concept. The event is in 6 days.
Step 1 — Extract the blueprint. Upload your base concept to Gemini with the extraction prompt above. Copy the full JSON output.
Step 2 — Apply the feedback in the JSON. Change table linens colour to "soft ivory", centerpiece floral arrangement colour to "dusty rose and ivory", napkins colour to "dusty rose". In the lighting block, change intensity from "dramatic" to "soft" and overall_mood from "formal and dramatic" to "warm and celebratory". Leave the room block and every structural element completely unchanged.
Step 3 — Regenerate with the contract. New Gemini conversation, original image uploaded, modified JSON pasted, re-application prompt submitted.
Output: A revised concept that shows the same ballroom proportions, same table arrangement, same centerpiece height — now in dusty rose and ivory with softer lighting. The marketing director can present this to the CFO in the same meeting without a 2-day turnaround.
Time saved: What would have been a full re-brief to an AI tool or a designer is now a 12-minute edit cycle. For events with 3-5 rounds of visual feedback, that's 45-90 minutes saved per event.
What to Do When It Breaks
The room layout changes despite the JSON. The camera angle block is the most common culprit. If the
camera_anglefield wasn't included in your extraction, go back and re-extract with a more explicit JSON schema that includes the room block. Locked camera angle is the most important field for preserving layout.Gemini ignores some JSON fields. This usually happens when a field conflicts with another. For example, if you set
intensity: "soft"but keptspecial_effects: "dramatic candle glow", the model may hedge toward dramatic. Remove the conflicting field rather than trying to override it with text instructions.Colors don't render as expected. Replace color names with hex codes in your JSON.
"colour": "#E8C4B8"gives the model a precise target."dusty rose"is ambiguous.The image loses background elements (e.g., uplighting disappears). These elements were probably defined in the lighting block rather than as explicit elements. Add them as named entries in the
elementsarray with their own colour and position fields, then leave those entries unchanged in your revision.The free tier produces noticeably different results. Gemini's free tier honors JSON instructions less precisely for complex multi-element scenes. Use AI Studio (aistudio.google.com) as a free alternative with the same model when your paid quota runs out mid-revision cycle.
Variations
Simpler version: Skip the full extraction and hand-write a small JSON object describing only the 2-3 elements you want to change. Attach it to the original image with the re-application prompt. This works for quick single-element swaps (linen color, centerpiece flowers) and takes about 5 minutes.
Theme variation batch: Extract once, then create three separate modified JSON files (one per color palette option) and regenerate three variations simultaneously. Present all three in a single client PDF to get faster sign-off. Three options instead of one round of revisions often shortens the approval process by a full week.
Lighting mood comparison: Keep all elements identical in the JSON but create two versions of the lighting block: one for the cocktail hour (bright, energetic) and one for dinner service (dim, intimate). Run both against the same room concept to show the client how the space transforms through the evening.
Merge concepts from two venues: Extract JSON from a concept image created for Venue A (which has a layout the client loves). Extract a separate elements block from Venue B photos. Swap the room block in the JSON to transfer the Venue A layout aesthetic to a Venue B image. This is the most advanced use and requires some manual JSON editing, but it's the fastest way to answer "can we get that look in this space?"
What to Do Next
This week: Run one extraction-edit-regenerate cycle on an existing concept image you already have. Test changing a single field first (just linen color) to see how well the JSON constraint holds before trying multi-field revisions.
This month: Build a library of JSON templates for your most common event types (corporate dinner, wedding reception, conference general session). Store them in a Google Doc. When a new event brief comes in, start from the closest template rather than extracting from scratch.
Advanced: Combine this with a Claude Project for recurring annual events. Store the client's approved JSON palette (from last year's event) in the project context. When the new year's planning starts, use it as the baseline and propose variations from a known starting point rather than rebuilding the visual direction from scratch.
Advanced guide for Event Planner professionals. Gemini's image generation features require a Advanced subscription ($20/month) for consistent multi-element JSON adherence. AI Studio (aistudio.google.com) is a free alternative for the same underlying model.