skip to content
all work
activeJuly 2026 – present

measures a 3D model against its contract.

SPATIAL → CAD Designer

built with
  • Python
  • build123d
  • PowerShell
  • TypeScript
  • WebGPU
where it stands
the measurement gate runs and is green. no part has been through it end to end; that needs a printer and callipers.
not yet public

Sixteen kinds of measurement stand between a model that looks right and a claim that it is.

what it does

You describe a part. It asks questions until the answers are numbers: bore diameter, wall thickness, the clearance the mating part needs, the printer it comes off. Those become a contract. Then it builds the geometry as build123d source and measures the model against that contract.

16 kinds of measurement. A hole's distance from a datum, the thinnest wall on the thinnest body, whether two parts collide on assembly, whether the thing is watertight. If the contract asks for a measurement the checker does not know how to take, the run fails rather than passing over it in silence. That is what stops a contract from promising something nothing will ever check.

Every result lands in a run record, written read-only and hashed: the source, the contract, the STEP file, the meshes, the snapshots, the tools that made them.

what it refuses to tell you

That your part is fine.

Four exit codes, one of them a pass. 1 means something was measured and missed. 2 means the run could not happen. 3 is the one that matters: INCOMPLETE, meaning nothing failed and something could not be checked. A skipped stage lands there. So does a fit coupon, a small test print that proves a tolerance, when it told you to print one and you did not.

Honest runs sit at 3 for a while, because of the rule underneath all of it. Geometry decides whether the model is right. It decides nothing about fit, friction, retention, wear, heat or fatigue. Those need a printed part and somebody holding it.

The suite is green at 604 of 604, and no part has been through the full gate. A tool that reports a number it has not earned is worse than one that says so, and this one says so.

the version I tried first

SPATIAL was going to be the whole thing: describe an object, watch a millimetre-accurate model appear, then slice and explode it in a WebGPU viewport that does not fight the camera. I got to phase 2 of 6 and stopped.

Not because it broke. The viewport was the part I was best at and the least important part of the problem, with people years ahead of me on it. The half that made it worth using, the path from a sentence to a model, was still a design document.

Two codebases, different languages, nothing carried over but the part of the problem that mattered. I did not need to look at a part more comfortably. I needed to know it was right before spending a night of filament finding out. Cutting the half I was proud of to keep the half that was load-bearing is the trade I would make again.

why it is here

Same argument as the rest of this site, pointed at a printer. An agent that writes geometry is an agent acting on a real system: it produces a file that becomes an object that either fits or does not, and no amount of confidence in the model settles that.

I did not know parametric CAD when I started this. I am learning Fusion 360 now for the same reason I learned build123d: the goal needed it, so it went on the list. Picking up the tool the problem asks for is most of what this work is.

The interesting engineering was never the generation. It is the gate, and the gate is built.

contact

If the work overlaps with something you are building, message me.

opens in your email app

neil mahure

applied AI engineer · San Francisco Bay Area · neil@neilmahure.com

open to applied AI engineer and forward deployed engineer roles.