Your first product prompt
Ask an agent to "make a chair" and it returns something chair-shaped, floating above the floor, three centimetres tall, with its origin marooned at the world centre — the failure isn't the geometry, it's every constraint a human designer holds without noticing.
Choose your track
Read this module through your lens
The hidden contract
When you ask another person to “make a chair,” you are not really giving them a free hand. You are invoking a contract you both signed years ago without reading it: a chair is about 45 cm to the seat, it stands on the floor, it does not float, it is roughly the size of a human body, and it has a sensible bottom you can place on a surface.
An agent never signed that contract. It has read millions of descriptions of chairs and will produce a chair — but every unstated term is a coin flip. Scale, ground contact, origin, and units are exactly the terms you never say out loud, which is exactly why they break first.
The skill this whole course teaches starts here: learning to hear your own silent assumptions so you can write them down for an agent that cannot guess them.
The case study: a three-legged stool
The task is deliberately small — a wooden stool, the kind of object you would never think twice about. That is exactly why it exposes the gap.
”Create a wooden stool in Blender.”
A cylinder seat with three legs appears. In the viewport thumbnail it looks like a stool — so a screenshot would have fooled you.
Reading object.dimensions tells the real story: the stool is
0.31 m tall. The legs intersect the seat. The origin sits at the world
centre, not on the stool. Nothing touches the ground — it floats at
z = 1.0 because the agent built the seat first and never reconciled the
legs to a floor.
None of that is a modelling mistake. It is a specification mistake — yours.
Closing the constraints, one prompt at a time
”Create a round wooden stool. Seat diameter 32 cm, seat height 45 cm. Set scene units to metric. Place the base flat on the ground plane (lowest leg point at z = 0). Set the object origin to the centre of the base. After building, list every operator you ran and report the final bounding-box dimensions.”
Now 45.0 cm tall, on the floor, origin at the base. The operations
report shows it set units, applied transforms, then ran origin_set — and
reveals it guessed a leg splay of 0 degrees, so the legs are vertical and the
stool would tip.
”Splay the legs outward 12 degrees from vertical so the foot radius exceeds the seat radius. Keep the lowest point at z = 0.”
The point is not that it took three prompts — it is which three. Each fix closed a constraint the word “stool” had silently assumed.
The habit: inspect, do not trust
The agent will tell you it succeeded. The thumbnail will agree. Both are lying by omission. Build one reflex now and keep it for the rest of the course: after every run, read three numbers before you believe anything.
Read object.dimensions to confirm real-world scale. Read the object origin
to confirm it sits somewhere meaningful. Read the lowest vertex to confirm the model
touches z = 0. If you also asked the agent to report the operators it ran,
diff that report against what you intended — the gap between “what it said it did” and
“what you asked for” is where the next failure is hiding.
A rendered image answers “does it look right?” Those numbers answer “is it right?” Only the second question matters in a pipeline.
Hands-on exercise
Pick a simple product you can describe from memory — a stool, a side table, a desk lamp.
Write a single first prompt with no constraints (“create a desk lamp”). Run it. Before
reading the geometry, predict which constraint will break first. Then read
object.dimensions and the origin, and record the gap between what you
imagined and what arrived.
Now write the constraint-complete version using the prompt skeleton in the cheatsheet, and run it. Capture the full journey — prompt, output, failure, fix — as screenshots or copied text. Do not clean up the failures; they are the evidence.
Second case · a wall clock
The same lesson, a different object
Create a wall clock.
The agent returns a clock 4 cm across, floating in space, face pointing straight up like a dinner plate. No wall context, no real diameter, origin at the world centre.
Create a wall clock, 30 cm diameter, 4 cm deep. Face on the +Y plane, back flush at y = 0 so it mounts to a wall. Origin at the back centre. Report the dimensions and the operators you ran.
Now wall-mountable at a real size, origin where a placement script would expect it. Same four constraints — scale, units, ground/wall contact, origin — exactly as with the stool.
Common failures · spot them fast
The failure gallery
Tiny or giant scale (default 2 m cube logic, no real-world units)
Model floats above or sinks below the ground plane
Origin left at the world centre, not on the object
Agent hallucinates a bpy operator that does not exist
Silent partial completion — reports success, built only part
Each of these is caught by a quality gate — keep the cheatsheet open while you work.
Worked example
See the journey
The pattern
Cheatsheet
Cheatsheet
Prompt skeleton
Create a [object] for [use/context].
Dimensions: [W x D x H in cm]. Scene units: metric.
Place the base flat on the ground (lowest point at z = 0).
Set the object origin to [base centre / centre of mass].
After building, list every operator you ran and the final bounding-box size.
Failure modes
- Tiny or giant scale (default 2 m cube logic, no real-world units)
- Model floats above or sinks below the ground plane
- Origin left at the world centre, not on the object
- Agent hallucinates a bpy operator that does not exist
- Silent partial completion — reports success, built only part
Key operations
- Set scene units to metric (scene.unit_settings)
- Apply transforms before measuring (object.transform_apply)
- Set origin (object.origin_set) to base or centre of mass
- Snap lowest vertex to z = 0
- Read object.dimensions to confirm real-world size
Quality gates
- Real-world scale correct (dimensions match the brief)?
- Lowest point sits at z = 0 (no floating / sinking)?
- Origin is on the object and meaningful?
- Mesh is manifold, no stray loose geometry?
- Agent reported the operators it ran?
Workflow steps
- Constrain (scale, units, origin, ground) in the prompt
- Run the agent
- Inspect dimensions + origin + ground contact
- Diff intent vs. output — name the gap
- Refine the prompt against that gap
- Log prompt -> output -> failure -> fix
Next module
- product_reference_and_proportion — feed the agent a reference image and lock proportions.
Reflection
Reflection card
Active retrieval — answer from memory before re-reading. Saved to this browser.
You've completed this module when…
- A documented case with the actual prompt, the actual output, the actual failure, the fix prompt, and the final result.
- At least two distinct failure modes named from the cheatsheet, with evidence (dimensions, origin, or screenshot).
- One generalizable pattern stated in the student's own words.
Next: product_reference_and_proportion — feed the agent a reference image and lock proportions.
Finish — back to Product Design →