1
First-Time Design — Primary Happy Path
New brand manager discovers Shelfy, configures a 4-shelf FSDU, uploads artwork, and downloads production files.
Scroll horizontally to see full flow
01 W1
Discovery
Goal Find a faster way to create retail displays
Clicks "Start designing — free"
Curious, skeptical
Key Features
Lifestyle render hero
"Minutes not weeks" promise
Template gallery teaser
Open W1 →
02 W2
Choose Preset
Empty state
Goal Start configuring my FSDU
Selects "Convenience" preset chip
Exploring, tentative
Key Features
Preset chips (Pharmacy, Convenience, Grocery)
Guided empty state
Instant 3D load on select
Open W2 →
03 W2
Configure Shelves
Goal Make sure my protein bars fit
Expands shelf cards, enters product W×D×H
Focused, engaged
⚠ Validation branch: amber shelf card → adjusts depth
Key Features
Product fit badges (green/amber/red)
Real-time 3D updates
Total unit count running total
Open W2 →
04 W2
Check Space
Unit fits space ✓
Goal Will this fit in my Woolworths gondola end?
Enters floor allocation dims, selects retailer
Anxious (this has gone wrong before)
Key Features
"Unit fits allocated space ✓" badge
Retailer presets (Woolworths, Coles, etc.)
W × D footprint visualised
Open W2 →
05 W3
Upload Artwork
Goal Apply my brand to the display
Switches to Artwork tab, uploads per zone
Creative, productive
⚠ Low DPI warning: exact pixel dims shown
Key Features
Zone-to-3D highlight on hover
DPI feedback badge (pass/warn/fail)
Download template for designer
Open W3 →
06 W4
Pre-flight Check
Goal Make sure everything is correct
Reviews validation summary, proceeds
Cautious, wants reassurance
🚫 Hard fail branch: blocked, guided to fix
Key Features
Green checks build confidence
Structural + DPI validation
Blocked CTA on hard fail
Open W4 →
07 W4 Gate
Auth Gate
Goal Save my work and get files
Signs in with Google or email
Mild friction, reassured
Key Features
"Design saved locally" reassurance
Google SSO one-click
No forced sign-up before value
Open W4 →
08 W4
Export Options
Goal Get my files + lifestyle render
Toggles lifestyle render ON, picks "Supermarket Aisle" scene
Excited about AI render
Key Features
Scene presets (4–5 retail environments)
Sample request checkbox
~$0.04 render cost, cached
Open W4 →
09 W4
Download
Goal Get production-ready files
Downloads ZIP bundle
Accomplished, satisfied
Key Features
Per-file progress (PDF, DXF, spec, renders)
Lifestyle render generation (FLUX)
Files immediately available — no review gate
Open W4 →
10 W5
Dashboard
Goal Track my design and await quote
Sees design card with "Exported" status
Satisfied, awaiting quote by email
Key Features
Status badges (Draft, Exported, Quoted, Accepted)
Design preview thumbnails
Quote notification arrives by email
Open W5 →
↓ quote arrives by email → brand manager returns
2
Quote & Acceptance — Commit to Production
Shelfy team (co-founder) coordinates with supplier offline, enters quote in system. Brand manager gets email, reviews quote on W7, and accepts to commence production.
Scroll horizontally
11 W5 + W7
Quote Ready
Goal Review pricing and decide
Gets email: "Quote ready" → W5 dashboard → W7 quote card
Evaluating, comparing to agency costs
Key Features
Unit price, MOQ, lead time visible
Quote valid-until date shown
Concierge coordinated offline — no in-app review
Open W7 →
12 W7
Accept Quote
Goal Commit to production
Clicks Accept → confirmation dialog → confirmed
Decisive, committed
Key Features
Confirmation dialog (irreversible action)
"Team follows up within 1 business day"
Status moves to "Accepted"
Open W7 →
Phase 2 — Deferred Flows
Structural Designer Journey (template authoring + in-app review) is deferred to Phase 2. At MLP, templates are authored as JSON committed to the repository and published via PR. The structural designer (co-founder) reviews designs during offline supplier coordination — no in-app approve/reject flow.

Deferred flows include: W8 template manager UI, the formal structural review queue (approve/request changes/reject), annotation blocks sent to brand manager, message thread, in-app notification bell, and the Changes Requested state.
Screen State Inventory
Every meaningful state each screen can be in. Used to ensure all edge cases are covered in implementation.
W2 Builder — Parameters
Empty No preset selected
Active Preset loaded, all shelves valid
Validation Warning One or more amber shelf cards
Validation Error Hard structural constraint violated
W3 Builder — Artwork
No Artwork All zones empty, dropzones shown
Partial Some zones filled, some empty
Complete All zones uploaded, DPI passes
DPI Warning File uploaded but <150 DPI at print size
W4 Export Flow
Pre-flight Pass All checks green, export enabled
Pre-flight Fail Hard fail blocks export, guided to fix
Auth Gate User not signed in, sign-up/in wall
Processing Export job running, per-file progress
Complete All files ready, download ZIP shown
Partial Failure Most files ready, lifestyle render failed
W5 Dashboard
Empty (New User) No designs yet, onboarding prompt
Active Design grid, 4-status badges (Draft / Exported / Quoted / Accepted), filter
W7 Design Detail (MLP — 4 states)
Exported Files ready, awaiting quote from Shelfy
Quoted Supplier quote ready, Accept/Decline
Accepted Production committed, team follows up
Changes Requested (Phase 2) Deferred — review happens offline at MLP
W6 / W8 Admin Dashboard & Template Manager — Phase 2 (deferred)
Not built at MLP Templates authored via JSON-in-repo. Admin review and approve/reject flows added in Phase 2 when order volume requires it.
Key Interaction Patterns
Specific feedback moments that make the product feel responsive and trustworthy. Each interaction reduces user uncertainty at a critical decision point.
Slider → 3D Update
W2 — Parameter Panel
Dragging any dimension slider instantly updates the R3F viewport geometry. No debounce lag — shelf recalculates synchronously from parametric kernel output.
Trigger: input[range] onChange event
Effect: Zustand store update → R3F BufferGeometry recompute → frame render
Latency target: <16ms (1 frame at 60fps)
Real-time
Shelf Card Expand / Collapse
W2 — Shelf List
Clicking a shelf card header expands it to show full W×D×H inputs and product fit badge. One card open at a time. Collapse on click-away or second click.
Trigger: Card header click
Effect: CSS max-height animation (150ms ease-out), body slides in
Side effect: 3D viewport highlights corresponding shelf level
Accordion
Preset Apply + Undo Toast
W2 — Preset Chips
Selecting a preset overwrites all shelf parameters. An undo toast appears for 5 seconds allowing the user to revert the entire change in one click.
Trigger: Preset chip click
Effect: Snapshot saved → params replaced → toast appears bottom-right
Undo: Restores snapshot, 3D reverts, toast dismisses
Undoable
Artwork Upload → 3D Wipe
W3 — Artwork Zones
After a successful upload to a zone, the corresponding 3D panel texture transitions from the placeholder grid to the uploaded artwork via a wipe reveal animation.
Trigger: Upload complete (file validated, texture uploaded)
Effect: R3F texture swap with clip-path wipe (left → right, 400ms)
Zone highlight: Panel glows coral on hover in both zone list and 3D
Visual delight
Product Fit Badge Transition
W2 — Shelf Cards
As the user types product dimensions, the fit badge animates through states: calculating → pass (green) / tight (amber) / fail (red). Each state transition includes a subtle pulse.
Trigger: Product dimension input change (debounced 200ms)
Effect: Badge background + icon cross-fades (100ms), pulse keyframe
Logic: units_per_row × depth_mm vs shelf_depth_mm ± 5mm tolerance
Functional feedback
Quote Accept Dialog
W7 — Quote State
Clicking "Accept Quote" shows a modal confirmation rather than acting immediately. The modal restates the commitment (units, price, lead time) before the user confirms.
Trigger: Accept Quote button click
Effect: Modal overlay (background blur), confirmation CTA in modal footer
Irreversibility: Clear "This action cannot be undone" copy, no undo toast
Destructive confirm