Norra Image System
norrå
The Norra three-seat bouclé sofa in a limewashed living room, morning window light on the wall
The Norra Modular Sofa

Built in modules. Made for staying.

Start with one seat and add more as your home grows. Free delivery, 100-night trial.

Build your Norra →
Case study · AI image production

Norra is a direct-to-consumer modular sofa brand. I built a reference-locked AI workflow that places the real product into fully generated scenes and produces hero, lifestyle, ecommerce and paid-social imagery to one brand standard. Each image is planned around its placement in a layout and the job it has to do.

Making one good image is easy. Making eleven images where the arm radius, backrest count, welt seam and oak legs match the physical product every time takes a process. This page documents that process: the reference library, the prompt architecture, the QA gate and the layouts the images were made for.

RoleAI image direction, prompting, QA, UI layout
ModelNano Banana Pro (Gemini 3 Pro Image), 2K
Inputs4 product renders, 1 wordmark
Output9 approved assets, 5 aspect ratios
Hit rate9 of 11 generations approved
BrandNorra, a fictional brand
01 · Brief

Every image starts from an objective.

Before generating anything, each asset got a channel, a commercial job, a format and a copy-safe zone. An image is approved when it does that job inside its layout. How it looks on its own is only part of the check.

AssetChannelObjectiveFormatCopy zone
Homepage heroWeb · above the foldShow the full 3-seat at a glance and set the brand mood. Carry an H1 and CTA.16:9 → 4:5Left 38%
Lifestyle · readingPDP gallery, emailShow the seat depth and that you can curl up on it.4:5None
Lifestyle · doorwayEditorial, organic socialMake the sofa look like part of a real home.4:5Door frame
Single modulePDP · 1-seat optionAnswer "will it fit a small flat?" One module works as a lounge chair.4:5None
Material detailPDP, retargetingShow texture and softness, which a photo of the whole sofa can't.1:1None
Configuration · 2-seatPDP configuratorShow exactly what a 2-module build looks like.3:2None
System drawingPDP, how-it-worksExplain modularity in one look.16:9Left 33%
Feed adMeta / PinterestStop the scroll and stay recognisable as a thumbnail.4:5Top 35%
Story adIG / TikTok storyA warm, relatable moment. Durability, pet-friendly.9:16Top 14% / bottom 20%
02 · Reference library

The product is the fixed point.

Four clean renders form the source of truth. Each generation gets only the views that match its camera angle. A module shot gets the module view, and a 3/4 hero gets the 3-seat view plus both arm modules so the model can see each end. Seven fidelity attributes are written down once and checked on every output.

Three-seat reference render
REF-A · 3-seat · 3/4
Armless module reference
REF-B · Armless module
Left-arm module reference
REF-C · Left-arm module
Right-arm module reference
REF-D · Right-arm module
F1 · Arm

Thick, rounded arm with soft radius corners. Top sits just below the backrest.

F2 · Backrest

One pillowy backrest cushion per module. Never one continuous bench back.

F3 · Seat

Deep loose seat cushion with a soft welt seam along the base.

F4 · Legs

Tapered round legs in light oak. No metal, no plinth.

F5 · Fabric

Cream-white bouclé with a fine, dense, curly loop. Not teddy fleece, not linen.

F6 · Configuration

Module count and arm placement match the brief. Arms only on the outer ends.

F7 · Proportion

Low profile, deep seat, generous arm-to-seat ratio. Not stretched to fill the frame.

03 · Prompt architecture

Five blocks. One of them never changes.

[SHOT]
Varies

Placement, lens, angle and where the product sits in frame, written in percentages so copy zones are reserved in the composition from the start.

[PRODUCT LOCK]
Locked

The seven fidelity attributes, word for word, in every prompt. Ends with explicit negatives: no piping, no buttons, no pillows covering the backrest.

[SCENE]
Varies

Drawn from a fixed set of materials: limewashed plaster, wide-plank oak, stoneware, linen, dried branches. Scenes change but stay in the same world.

[LIGHT]
Brand rule

Low-angle warm window light from frame-left. One light direction across the whole set, so images sit together in a grid.

[FINISH]
Brand rule

Photographic register, true colour, light grain, and no generated text or logos. Type is always set live in the layout.

[SHOT] Homepage hero, wide editorial interior photograph. Eye-level, 35mm, f/5.6, slight 3/4 angle matching REF-A. The ENTIRE sofa is inside the frame, both arms and all legs visible: sofa spans 40–92% of frame width, seat line at ~62% height. Left 38% is calm open plaster wall, reserved for headline copy. [PRODUCT LOCK] The Norra three-seat modular sofa from the reference images: cream-white bouclé with a fine nubby curly texture; three separate seat modules, each with a deep loose seat cushion and a soft welt seam along the base; one rounded pillowy backrest cushion per module; thick rounded arms with soft radius corners at both ends, arm top just below the backrest; tapered round light-oak legs. Same proportions, same low profile, same fabric colour. No piping, no buttons, no added pillows. [SCENE] Warm-minimal living room: limewashed plaster in warm greige, wide-plank oak floor, a low round oak coffee table with a ceramic cup and a closed book, a dried branch in dark stoneware beside the right arm. [LIGHT] Soft early-morning sun from a tall window out of frame left, through sheer linen; long soft diagonal window shadows on the wall; warm, low contrast. [FINISH] Photorealistic high-end furniture catalogue photography, true-to-life colour, subtle film grain, no text, no logos, no people. // refs REF-A, REF-C, REF-D // model nano-banana-pro · 2K · 16:9
04 · The work

One product, one light, many rooms.

Every frame uses the same product lock and the same light direction. The scenes, people and formats change. Viewed as a set, they read as one shoot.

Woman reading curled in the corner of the sofa in golden light
Lifestyle · 4:5
Sofa seen through a dark doorway into a sunlit room
Editorial · 4:5
Single armless module as a lounge chair by a window
1 module · 4:5

Reading. A person adds scale and shows the seat depth. Her face is turned to the book, so the product stays the subject.

Doorway. Framing borrowed from interiors editorial. The dark foreground makes the room feel lived in and gives the sofa depth.

One module. Only the armless reference was passed, so the model had no arm geometry to add by mistake.

Detail and system
Engraved line drawing of three sofa modules in exploded axonometric view
System drawing · 16:9
Hand pressing into the bouclé seat cushion, macro
Material · 1:1
Two-seat sofa of two arm modules on a sage studio sweep
Configuration · 2 modules · 3:2

System drawing. Same references, different medium. Line art explains the joins better than a photo, and the empty third holds a "How it works" headline.

Material. Raking light at 100mm. The hand compressing the bouclé shows softness without a word of copy.

Configuration. A layout that doesn't exist in the reference set. Two arm modules with no centre module, built from REF-C and REF-D only.

05 · Paid social

Composed for the placement.

Ad frames were generated with their copy zones built into the prompt, then type was set live on top. The red dashed lines mark platform UI that covers the image. The product never sits under them.

Cream sofa on a terracotta studio sweep

Start with one seat. Add the rest later.

Shop modules

Feed 4:5 · 1080×1350 · headline in top 35%

Whippet asleep on the sofa, a hand resting on its back
norra · Sponsored

Made for every member of the family.

Performance bouclé ↑

Story 9:16 · 1080×1920 · dashed = UI overlay

Thumbnail test

A feed ad is often seen at thumbnail size. Each frame is checked at 160, 96 and 64px. If the silhouette still reads as a Norra sofa at 64px, the frame passes.

160px
96
64
1:1 crop · 160
64
06 · In the interface

One hero, two breakpoints.

The hero was composed for both crops. On desktop the headline sits over the empty wall. On mobile the image crops to 4:5 around a set focal point and the copy moves below, so type never sits on top of the product.

Desktop hero layout

Built in modules. Made for staying.

Start with one seat and grow from there.

Build your Norra

Desktop ≥1024px · 16:9 · object-position 60% 55%

Mobile hero crop

Built in modules. Made for staying.

Start with one seat and grow from there.

Build your Norra

Mobile 390px · 4:5 · object-position 68% 50%

Focal point

Set on the centre module's seat. Every crop keeps it in the middle third.

Type contrast

Ink #1C1B19 on the plaster wall measures above 10:1, so no scrim is needed and the image stays clean.

Delivery

2752px master, then 2400w / 1600w / 1080w AVIF and JPG with art-directed srcset for each crop.

Product page

The configurator swaps to an image of the selected build.

Interactive · pick a size
Norra 3-seat sofa
Modular sofa · Bouclé

Norra 3-Seat

$2,340
Size
Fabric · Chalk bouclé
Add to cart
  • Free delivery in 2–4 weeks
  • 100-night home trial
  • Add or remove modules any time
07 · Quality gate

Checked against the product, not by eye.

Each output was scored against the seven fidelity attributes before it went into a layout. Two of eleven generations failed on composition and format. The product itself rendered correctly in both. The fix in each case was a more specific [SHOT] block. Regenerating with the same prompt and hoping wasn't the plan.

AssetF1 ArmF2 BackF3 SeatF4 LegsF5 FabricF6 ConfigF7 Prop.Layout fit
Homepage hero v2
Lifestyle · reading
Lifestyle · doorway
Single module
Material detail
Configuration · 2-seat
System drawing
Feed ad · terracotta
Story ad v2
Matches referenceNot visible at this angleNot applicable
Hero version 1, sofa cropped at the right edgev1 · Reject
Hero version 2, full sofa in framev2 · Approved

Hero: product cropped at the edge

The product was accurate, but the right arm fell off the frame. A homepage hero has to show the whole sofa, and the mobile crop had nothing left to recover it from.

FIX → [SHOT] gives positions as numbers: "sofa spans 40–92% of frame width, seat line at ~62% height, both arms and all legs visible."
Story version 1, letterboxed collage with flat panelsv1 · Reject
Story version 2, full-bleed photographv2 · Approved

Story: safe zone read as a border

"Keep the top and bottom 22% calm" came back as flat colour bands around a small photo. The product was right, but the frame was unusable as a story.

FIX → Describe what is in the quiet areas (wall above, rug below) instead of describing empty space. Add "one continuous full-bleed photograph, no panels". Move the camera closer.
08 · Team playbook

Rules any designer can run.

The aim is for the whole design team to get the same result, not only me. These rules turned this project into a repeatable workflow.

R1

Paste the product lock word for word

The product block is copied unchanged from the library. Editing it per shot is how drift starts.

R2

Match references to the camera

Pass only the views the shot needs. Extra angles give the model more geometry to blend, which leads to errors.

R3

Write the layout into the prompt

Give product position and copy zones as percentages of the frame. Reserve space at generation time instead of fixing it in a crop.

R4

Describe what fills empty space

"Empty" and "safe zone" get read as borders. Name the wall, floor or sky that should be there.

R5

Fix the block that failed

Find which block caused the reject, change only that block, and log the change. Two rejects led to two rule updates.

R6

Approve in the layout

An image is approved only after it's placed in its real template at every breakpoint and at thumbnail size.

11generations in total
9approved for production
0product-fidelity rejects
5aspect ratios from one system