Here is the simplest way to explain what the Controlled Iteration Framework does.
Standard Midjourney prompting is a slot machine. You put in a prompt; you get out an image. Put in the same prompt with one word changed; you get out a completely different image — different scale, different perspective, different ceiling height, different light. The AI has no memory between generations.
The Controlled Iteration Framework adds a memory system. You generate one image — the hero image — that establishes the spatial DNA of the space you want to show. You then lock that DNA so that every subsequent image inherits it exactly. You then vary only the specific thing you want to test — a different floor material, a different programme type, a different time of day — while everything else stays the same.
The result is a set of images that read as a direct comparison: the same space, the same perspective, the same light, different material.
This is not a Midjourney trick. It is a structured parametric workflow. And it requires following four steps in the right order.
Step 1: Hero Image Establishment
The hero image is the foundation of the entire framework. Everything depends on getting this right.
A hero image for architectural iteration must specify six things precisely:
- Programme: The spatial type and function. "Open-plan contemporary living and dining space" is more useful than "nice room." The programme term tells the AI what kind of space to generate.
- Dimensions: Specific measurements. "5-metre ceiling height, 8-metre width" anchors the scale. "Spacious living room" produces unpredictable results.
- Camera height: Always 1.5 metres for architectural interior work. This is the standard standing adult eye level. If you do not specify it, the AI chooses — and it will not be consistent across generations.
- Perspective type: Always specify explicitly. "One-point perspective, central vanishing point" gives the AI a clear compositional constraint. "Perspective" on its own is interpreted differently every time.
- Lighting: Time of day, quality, and direction. "Warm morning diffuse light through north-facing glazing" is better than "good lighting" — because lighting is the primary cue that viewers use to assess spatial scale.
- Materiality: The material palette in the hero image will be the variable you change in Step 3. Choose a material that represents the project's aesthetic direction. This is not the final choice — it is the starting point.
The hero image prompt follows this structure:
> [Programme] at [dimensions], [perspective type], [camera height], [lighting quality and direction], [material palette], [photography style and lens] --ar 16:9 --v 6.1 --style raw
Always include `--style raw`. This removes Midjourney's default aesthetic stylisation — the slightly painterly, oversaturated quality that looks impressive in isolation but makes architectural images harder to compare between generations.
Generate 4–6 variations from the same prompt. Select the one that is most spatially accurate — not the most visually dramatic. Accuracy can be corrected later in the framework. A geometrically wrong image cannot be fixed with parameters.
Step 2: DNA Lock
The DNA lock is what makes the framework work. Without it, every new prompt is a fresh generation — back to the lottery problem.
The DNA lock has three components, applied simultaneously to every subsequent prompt:
- `--sref [hero_image_url]` passes the hero image to the style encoder. The model extracts a mathematical representation of the image's aesthetic fingerprint — tonal range, grain structure, light quality, colour temperature, material rendering approach.
- `--cref [hero_image_url]` passes the same image to the geometry encoder. The model locks the spatial geometry — perspective type, camera height, proportional relationships, scale.
- `--seed [number]` applies the seed number from the hero image to subsequent generations. Using the same seed pulls generations toward the same spatial base.
To find the seed: react to the hero image in Midjourney Discord with the envelope emoji ✉️. Midjourney will respond with the seed number in the thread. Save it immediately.
The complete DNA lock syntax for every subsequent prompt:
> --sref [hero_image_url] --cref [hero_image_url] --sw 150 --cw 100 --seed [hero_seed]
The `--sw 150` and `--cw 100` values are the recommended starting points for architectural work. `--sw 150` is strong enough to maintain aesthetic cohesion without distorting geometry. `--cw 100` applies the full spatial geometry of the hero image to every iteration.
Before proceeding to Step 3, test the DNA lock with a single validation prompt. Use the same programme description as the hero image, with the DNA lock applied but no other changes. Compare the validation output to the hero image. If camera height, perspective, ceiling height, lighting quality, and window configuration all match, the DNA lock has held. If not, re-run the validation before generating a full deck.
The most common error at this step: using `--sref` without `--cref`, or vice versa. These parameters do different things. `--sref` handles the aesthetic; `--cref` handles the geometry. You need both. Always.
Step 3: Controlled Variable Iteration
With the spatial DNA locked, the next step is to vary only the specific design variable being tested — while everything else remains constant.
The rule: only change the variable. Do not change anything else.
If you are generating a six-material floor finish deck, the prompt text should be identical to the hero image prompt in every respect except the floor material description. Do not change the programme term, do not change the lighting description, do not alter the camera specification. The DNA lock handles consistency; your prompt text handles the variable. Keep them separate.
For a material iteration starting from a hero image with pale concrete floors and white plaster walls:
- Hero image material: "pale concrete floor and white plaster walls"
- Iteration 1: "light oak wide-plank floor and white plaster walls"
- Iteration 2: "dark walnut floor and white plaster walls"
- Iteration 3: "honed Carrara marble floor and white plaster walls"
The only text that changes is the floor material. Everything else — programme, dimensions, camera, perspective, lighting, photography style, DNA lock — stays identical.
For a programme iteration, only the programme term changes:
- Hero image programme: "Boutique hotel ground floor lobby"
- Iteration: "Co-working lounge" (same geometry, same scale, same light, different programme)
Batch your iterations. Generate all variations in quick succession while the model is in the same generation context. This reduces incidental variation from model updates or context shifts.
Step 4: Orthographic Consistency Check
Before including any image in the final presentation deck, apply the consistency threshold check:
| Check | Pass/Fail |
|-------|-----------|
| Camera height approximately 1.5 metres? | |
| Perspective type matches hero image? | |
| Ceiling height consistent with hero dimensions? | |
| Lighting colour temperature consistent? | |
| Window configuration similar to hero? | |
| Material rendering photographic, not stylised? | |
Any image that fails two or more checks should be regenerated. An image that fails one check may be acceptable depending on project context.
Review images at actual presentation size, not as thumbnails. A thumbnail might look consistent; a full-resolution image at presentation size might show significant geometric drift. Always review at the intended output size.
The ::weighting Fine-Tuning Adjustment
The DNA lock handles most consistency requirements. But if your project requires a specific camera angle or perspective type that the hero image does not perfectly establish, `::weighting` gives you explicit priority control.
`::weighting` appends a priority multiplier to specific terms in your prompt. The value determines how strongly Midjourney prioritises that element:
| Parameter | Recommended Weight | Effect |
|-----------|-------------------|--------|
| Perspective type | ::1.5 to ::2.0 | Strong enforcement |
| Camera height | ::1.0 to ::1.5 | Moderate — baseline from DNA lock |
| Programme terms | ::1.0 to ::1.5 | Moderate — spatial type clarity |
| Material terms | ::0.5 to ::1.0 | Light touch |
| Lighting quality | ::0.5 to ::1.0 | Light touch — DNA lock baseline |
Values above ::2.0 are rarely necessary and can produce prompt conflicts. Apply `::weighting` selectively — only where the DNA lock alone is insufficient.
The Mandatory Disclosure
Every AI-generated image distributed to any third party — clients, contractors, planning authorities, professional colleagues — must carry the following disclosure:
> AI Imagery Disclosure: These are AI-generated conceptual impressions for discussion purposes only — they do not represent a final design, a planning application, or a structural or material specification. All dimensions, proportions, and materials must be verified against the architect's drawings and specifications.
Apply this disclosure to every image before it enters a client-facing document. Make it part of the deck assembly workflow, not an afterthought.
What the Framework Cannot Do
The Controlled Iteration Framework produces spatially consistent, client-ready presentation imagery. It does not produce verified design drawings, planning compliance evidence, or structural calculations.
AI-generated imagery is a visualisation and concept exploration tool. It is not a design document. It is not a specification. It is not a substitute for professional judgement on structural feasibility, planning compliance, or spatial proportions.
The architect authorises every output. AI generates; the architect approves.
Related Resources
The Architect's Parametric Prompt Engineering guide covers the complete four-step Controlled Iteration Framework with 25 copy-paste-ready prompts, two complete worked examples (residential material deck and hotel lobby programme iteration), and the full Midjourney parameter reference table. Tested with Midjourney v6.1 and v7.
If you are working at an earlier design phase and need to translate AI-generated concept images into buildable specifications for your drafting team, the From Generative Visuals to Geometric Parameters covers the complementary workflow: using ChatGPT with Advanced Data Analysis to extract estimated spatial proportions from a Midjourney concept image into a reviewable CSV constraint sheet.
Stop Guessing, Start Systemising
The lottery problem is real. Standard prompting cannot solve it. The Controlled Iteration Framework can — by adding a memory system to Midjourney through four advanced parameters, and applying it through a four-step structured workflow.
The Architect's Parametric Prompt Engineering guidehas the complete framework, the full prompt syntax, the worked examples, and the mandatory disclosure requirements. Tested with Midjourney v6.1 and v7.
Grab it here.
Practical AI for Professionals